summaryrefslogtreecommitdiff
path: root/libc/fuzzing/stdlib
AgeCommit message (Collapse)Author
2025-10-02[libc] Fix issue with fuzz input too short for atoi diff fuzz (#161705)Michael Jones
The string to integer differential fuzzer assumes at least one byte of meaningful input, but wasn't explicitly checking that. Now it does.
2025-01-05[libc] Improve qsort (with build fix) (#121482)Lukas Bergdoll
2024-08-01[libc] heap_sort_fuzz deleted unnecessary includes (#101535)RoseZhang03
Including src/__suppot/macros/config.h is unnecessary
2024-07-30[libc] fuzz test for heap_sort (#100826)RoseZhang03
Made a fuzz test for heap_sort based off of qsort_fuzz implementation
2024-07-28[libc] Fix the remaining isnan and isinf in tests. (#100969)lntue
Fixes https://github.com/llvm/llvm-project/issues/100964
2024-04-05[libc] Add proxy header math_macros.h. (#87598)lntue
Context: https://github.com/llvm/llvm-project/pull/87017 - Add proxy header `libc/hdr/math_macros.h` that will: - include `<math.h>` in overlay mode, - include `"include/llvm-libc-macros/math-macros.h"` in full build mode. - Its corresponding CMake target `libc.hdr.math_macros` will only depend on `libc.include.math` and `libc.include.llvm-libc-macros.math_macros` in full build mode. - Replace all `#include "include/llvm-libc-macros/math-macros.h"` with `#include "hdr/math_macros.h"`. - Add dependency to `libc.hdr.math_macros` CMake target when using `add_fp_unittest`. - Update the remaining dependency. - Update bazel overlay: add `libc:hdr_math_macros` target, and replacing all dependency on `libc:llvm_libc_macros_math_macros` with `libc:hdr_math_macros`.
2024-03-18[libc] Remove direct math.h includes (#85324)Michael Jones
Reland of #84991 A downstream overlay mode user ran into issues with the isnan macro not working in our sources with a specific libc configuration. This patch replaces the last direct includes of math.h with our internal math_macros.h, along with the necessary build system changes.
2024-01-23[reland][libc] Remove unnecessary `FPBits` functions and properties (#79128)Guillaume Chatelet
- reland #79113 - Fix aarch64 RISC-V build
2024-01-23Revert "[libc] Remove unnecessary `FPBits` functions and properties" (#79118)Guillaume Chatelet
Reverts llvm/llvm-project#79113 It broke aarch64 build bot machines.
2024-01-23[libc] Remove unnecessary `FPBits` functions and properties (#79113)Guillaume Chatelet
This patch reduces the surface of `FPBits`.
2024-01-03[libc][NFC] Remove `FloatProperties` (#76508)Guillaume Chatelet
Access is now done through `FPBits` exclusively. This patch also renames a few internal structs and uses `T` instead of `FP` as a template parameter.
2023-12-28[libc][NFC] Integrate `FloatProperties` into `FPBits` (#76506)Guillaume Chatelet
`FloatProperties` is always included when `FPBits` is. This will help further refactoring.
2023-12-15[libc][NFC] Rename `MANTISSA_WIDTH` in `FRACTION_LEN` (#75489)Guillaume Chatelet
This one might be a bit controversial since the terminology has been introduced from the start but I think `FRACTION_LEN` is a better name here. AFAICT it really is "the number of bits after the decimal dot when the number is in normal form." `MANTISSA_WIDTH` is less precise as it's unclear whether we take the leading bit into account. This patch also renames most of the properties to use the `_LEN` suffix and fixes useless casts or variables.
2023-09-26[libc] Mass replace enclosing namespace (#67032)Guillaume Chatelet
This is step 4 of https://discourse.llvm.org/t/rfc-customizable-namespace-to-allow-testing-the-libc-when-the-system-libc-is-also-llvms-libc/73079
2023-07-18[libc] Set min precision for strtofloat fuzzMichael Jones
MPFR has a minimum precision of 2, but the strtofloat fuzz sometimes would request a precision of 1 for the case of the minimum subnormal. This patch tells the fuzzer to ignore any case where the precision would go below 2. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D155130
2023-07-11[libc] adjust strtofloat precision for subnormalsMichael Jones
Subnormal floating point numbers have a lower effective precision than normal floating point numbers. This can cause issues for the fuzz test since the MPFR floats have a constant precision regardless of the exponent, and the precision must match exactly or else create rounding errors. To solve this problem, the precision of the MPFR floats is dynamically calculated. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D154909
2023-07-05[libc] fix MPFR rounding problems in fuzz testMichael Jones
The accuracy for the MPFR numbers in the strtofloat fuzz test was set too high, causing rounding issues when rounding to a smaller final result. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D154150
2023-05-22[libc] Use MPFR for strtofloat fuzzingMichael Jones
The previous string to float tests didn't check correctness, but due to the atof differential test proving unreliable the strtofloat fuzz test has been changed to use MPFR for correctness checking. Some minor bugs have been found and fixed as well. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D150905
2023-04-28[libc] add exception to atof differential fuzzMichael Jones
The differential fuzzer for atof found a bug in glibc's handling of hexadecimal rounding. Since we can't easily update glibc and we want to avoid false positives when running the fuzzer, I've added an exception to skip all hexadecimal subnormal cases. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D149359
2023-02-27[libc] use vars in string to num fuzz targetsMichael Jones
The string to integer and string to float standalone fuzz targets just ran the functions and didn't do anything with the output. This was intentional, since they are intended to be used with sanitizers to detect buffer overflow bugs. Not using the variables was causing compile warnings, so this patch adds trivial checks to use the variables. Reviewed By: sivachandra, lntue Differential Revision: https://reviews.llvm.org/D144208
2023-02-15[libc][NFC] Make tuning macros start with LIBC_COPT_Guillaume Chatelet
Rename preprocessor definitions that control tuning of llvm libc. Differential Revision: https://reviews.llvm.org/D143913
2023-02-10[libc] add standalone strtoint/float fuzzersMichael Jones
Fuzzing the string to integer and float functions without relying on the system libc allows for tests to be run in a wider variety of places. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D143616
2022-12-20[libc] add fuzz target for strtointeger functionsMichael Jones
The string to integer conversion functions are well suited to differential fuzzing, and this patch adds a target to enable just that. It also fixes a bug in the fuzzing comparison logic and changes atoi slightly to match the behavior described in the C standard. Reviewed By: sivachandra, lntue Differential Revision: https://reviews.llvm.org/D140178
2021-11-19[libc][Obvious][NFC] A bunch of cosmetic cleanup.Siva Chandra Reddy
* Added missing header guards. * Fixed license header format in a few files. * Renamed files to more suitable names.
2021-10-18[libc] add atof, strtof and strtodMichael Jones
Add the string to floating point conversion functions. Long doubles aren't supported yet, but floats and doubles are. The primary algorithm used is the Eisel-Lemire ParseNumberF64 algorithm, with the Simple Decimal Conversion algorithm as backup. Links for more information on the algorithms: Number Parsing at a Gigabyte per Second, Software: Practice and Experience 51 (8), 2021 (https://arxiv.org/abs/2101.11408) https://nigeltao.github.io/blog/2020/eisel-lemire.html https://nigeltao.github.io/blog/2020/parse-number-f64-simple.html Differential Revision: https://reviews.llvm.org/D109261
2021-09-24[libc] Add an implementation of qsort.Siva Chandra Reddy
A fuzzer for qsort has also been added. Reviewed By: michaelrj Differential Revision: https://reviews.llvm.org/D110382