aboutsummaryrefslogtreecommitdiff
path: root/libc
AgeCommit message (Collapse)AuthorFilesLines
2024-01-23[libc] remove redundant call_once (#79226)Nick Desaulniers2-78/+0
Missed cleanup from https://reviews.llvm.org/D134716. Fixes: #79220
2024-01-23[libc] Fix implicit conversion in FEnvImpl for arm32 targets. (#79210)lntue1-2/+2
2024-01-23[libc] Fix aliasing function name got accidentally deleted in #79128. (#79203)lntue1-0/+1
2024-01-23Revert "[libc] Fix forward arm32 buildbot" (#79201)Roland McGrath1-2/+2
Reverts llvm/llvm-project#79151, necessary to revert #79128, which broke all production builds and landed without review.
2024-01-23[libc] fix sysconf (#79159)Schrodinger ZHU Yifan2-5/+7
Apply previously discussed fix for `sysconf`
2024-01-23[libc][Docs] Update the GPU RPC documentation (#79069)Joseph Huber3-7/+296
Summary: This adds some more concrete information on the RPC interface. Hopefully this is intelligable and provides some useful examples.
2024-01-23[libc][NFC] Remove `FPBits` cast operator (#79142)Guillaume Chatelet102-369/+366
The semantics for casting can range from "bitcast" (same representation) to "different representation", to "type promotion". Here we remove the cast operator and force usage of `get_val` as the only function to get the floating point value, making the intent clearer and more consistent.
2024-01-23[libc][NFC] use builder pattern for ErrnoSetterMatcher (#79153)Schrodinger ZHU Yifan1-3/+15
ErrnoSetterMatcher::returns can be misleading as it does not initialize the errno. This is made worse as later on there is a switch statement on the errno comparator using __builtin_unreachable(). This patch make ErrnoSetterMatcher::returns give back a builder that is nomially different from ErrnoSetterMatcher.
2024-01-23[libc] Remove specific nan payload in math functions (#79133)Guillaume Chatelet24-35/+31
2024-01-23[libc] Fix forward arm32 buildbot (#79151)Guillaume Chatelet1-2/+2
Fix forward #79128
2024-01-23[reland][libc] Remove unnecessary `FPBits` functions and properties (#79128)Guillaume Chatelet69-423/+428
- reland #79113 - Fix aarch64 RISC-V build
2024-01-23Revert "[libc] Remove unnecessary `FPBits` functions and properties" (#79118)Guillaume Chatelet68-426/+421
Reverts llvm/llvm-project#79113 It broke aarch64 build bot machines.
2024-01-23[libc] Remove unnecessary `FPBits` functions and properties (#79113)Guillaume Chatelet68-421/+426
This patch reduces the surface of `FPBits`.
2024-01-23[libc] add missing header deps to getauxval (#79091)Schrodinger ZHU Yifan1-0/+1
`getauxval` depends on `libc.include.sys_auxv`
2024-01-23[libc] remove getauxval from arm32 entrypoint list (#79093)Schrodinger ZHU Yifan1-3/+0
`getauxval` depends on `open/read/close` which are not built on arm32. Remove `getauxval` for now.
2024-01-22[libc] implement sys/getauxval (#78493)Schrodinger ZHU Yifan14-1/+325
This PR implements `sys/getauxval` that can be used in both overlay builds and full builds.
2024-01-22[libc] Include missing RISC-V stdlib.h and math.h entrypoints (#79034)Petr Hosek2-118/+228
This matches the entrypoints for baremetal ARM.
2024-01-22[libc] Replace -nostdlib++ flag when building with gcc and add placement new ↵lntue3-2/+26
operator to HermeticTestUtils.cpp. (#78906) `-nostdlib++` is a clang-only flag. Replacing it with `-nostdlib` when building with gcc.
2024-01-22[libc] default enable -ftrivial-auto-var-init=pattern (#78776)Nick Desaulniers2-0/+8
Usage of uninitialized memory is a top memory safety issue in C++ codebases. Help mitigate this somewhat by default initialize stack allocations to a pattern (0xAA repeating). Clang has received optimizations to sink these into control flow paths that access such values to minimize the overhead of these added initializations. If there's a measurable slowdown, we can add -ftrivial-auto-var-init-max-size=<N> for some value N bytes if we have any large stack allocations, or add attribute uninitialized to any variable declarations. Unsupported until GCC 12.1 / Clang 8. Increases file size of libc.a from a full build by +8.79Ki (+0.2%).
2024-01-22[libc][riscv] Check if we have F or D extension before using them (#79036)Petr Hosek2-0/+8
We shouldn't be using instructions that require F or D extensions unconditionally before checking if those instructions are available.
2024-01-22[libc] Use QUEUE_TYPEOF in STAILQ_LAST (#79011)Petr Hosek1-1/+3
This is to ensure this macro is compatible with both C and C++.
2024-01-22[libc] support PIE relocations (#78993)Schrodinger ZHU Yifan1-8/+21
For some reasons, we are using `-fpie` (libc/cmake/modules/LLVMLibCObjectRules.cmake:31) without supporting it. According to @lntue, some of the hermetic tests are broken without proper PIE support. This patch implements basic relocations support for PIE.
2024-01-22[reland][libc] `FPRep` builders return `FPRep` instead of raw `StorageType` ↵Guillaume Chatelet2-366/+400
(#78978) Reland #78588
2024-01-22Revert "[libc] `FPRep` builders return `FPRep` instead of raw `StorageType`" ↵Guillaume Chatelet2-399/+365
(#78974) Reverts llvm/llvm-project#78588
2024-01-22[libc] `FPRep` builders return `FPRep` instead of raw `StorageType` (#78588)Guillaume Chatelet2-365/+399
2024-01-22[libc] Fix issue introduces by #76449Petr Hosek1-2/+2
Use correct CMake variable.
2024-01-21[libc] fix unit tests in fullbuild (#78864)Schrodinger ZHU Yifan2-5/+9
fixes https://github.com/llvm/llvm-project/issues/78743 - For normal objects, the patch removes `RTTI` and exceptions in `fullbuild` - For FP tests, the patch adds links to `stdc++` and `gcc_s` if `MPFR` is used.
2024-01-21[libc] add missing header dependencies for sched objects (#78741)Schrodinger ZHU Yifan2-0/+9
This patch fixes full build problems in https://github.com/llvm/llvm-project/issues/78721 (the header problem). The `libc.a` target can be built now. As a separate issue, `check-libc` is failing because undefined symbols from `libunwind`, which I do not actually know the reason yet. I will be looking into it.
2024-01-20[libc] Add missing header ioctl.h on aarch64. (#78865)lntue2-0/+3
2024-01-20[libc] Fix size_t used without including stddef.h in CPP/limit.h. (#78861)lntue1-1/+1
2024-01-20[libc] Fix float.h header to include the system float.h first and add more ↵lntue1-3/+142
definitions. (#78857)
2024-01-19[libc] Redo the install targets (#78795)Petr Hosek4-35/+41
Prior to this change, we wouldn't build headers that aren't referenced by other parts of the libc which would result in a build error during installation. To address this, we make the header target a dependency of the libc archive. Additionally, we also redo the install targets, moving the install targets closer to build targets and simplifying the hierarchy and generally matching what we do for other runtimes.
2024-01-19[libc] remove extra -Werror (#78761)Nick Desaulniers1-1/+0
-Werror is now a global default as of commit c52b467875e2 ("Reapply "[libc] build with -Werror (#73966)" (#74506)")
2024-01-19[libc] Add float.h header. (#78737)lntue14-0/+68
2024-01-19[libc] Fix test failing on GPU using deprecated 'add_unittest'Joseph Huber1-1/+1
Summary: We use `add_libc_test' now because it works for both hermetic and unit tests. If the test needs to be unit test only you use `UNIT_TEST_ONLY` as an argument.
2024-01-19[libc][NFC] Use Sign in NormalFloat (#78579)Guillaume Chatelet4-33/+35
2024-01-19[libc] Fix is_subnormal for Intel Extended Precision (#78592)Guillaume Chatelet7-34/+19
Also turn a set of `get_biased_exponent() == 0` into `is_subnormal()` which is clearer.
2024-01-19[libc][NFC] Simplify FPBits expressions (#78590)Guillaume Chatelet3-6/+6
2024-01-19[libc][NFC] Fix "type qualifiers ignored on cast result type" GCC warning ↵Guillaume Chatelet2-22/+15
(#78509) GCC complains about "type qualifiers ignored on cast result type". Upon investigation the correct fix was to remove all `volatile` and use the `-frounding-math` option.
2024-01-18[libc] Provide sys/queue.h (#78081)Petr Hosek13-1/+533
This header first appeared in 4.4BSD and is provided by a number of C libraries including Newlib. Several of our embedded projects use this header and so to make LLVM libc a drop-in replacement, we need to provide it as well. For the initial commit, we only implement singly linked variants (SLIST and STAILQ). The doubly linked variants (LIST, TAILQ and CIRCLEQ) can be implemented in the future as needed.
2024-01-18[libc] Use clang's scoped atomics if available from the compiler (#74769)Joseph Huber2-24/+75
Summary: A recent patch in https://github.com/llvm/llvm-project/pull/72280 provided `clang` the ability to easily use scoped atomics. These are a special modifier on atomics that some backends support. They are intended for providing more fine-grained control over the affected memory of an atomic action. The default is a "system" scope, e.g. coherence with the GPU and CPU memory on a heterogeneous system. If we use "device" scope, that implies that the memory is only ordered with respect to the current GPU. These builtins are direct replacements for the GCC atomic builitins in cases where the backend doesn't do anything with the information, so these should be a drop-in. This introduces some noise, but hopefully it isn't too contentious.
2024-01-18[libc][arm] add more math.h entrypoints (#77839)Nick Desaulniers3-106/+318
In particular, we have internal customers that would like to use nanf and scalbnf. The differences between various entrypoint files can be checked via: $ comm -3 <(grep libc\.src path/to/entrypoints.txt | sort) \ <(grep libc\.src path/to/other/entrypoints.txt | sort)
2024-01-18[libc] reverts for 32b arm (#78307)Nick Desaulniers2-7/+0
These were fixed properly by f1f1875c18b8. - Revert "[libc] temporarily set -Wno-shorten-64-to-32 (#77396)" - Revert "[libc] make off_t 32b for 32b arm (#77350)"
2024-01-18[libc][NFC] Use the Sign type for DyadicFloat (#78577)Guillaume Chatelet12-2368/+2387
2024-01-18[libc][NFC] Introduce a Sign type for FPBits (#78500)Guillaume Chatelet67-372/+427
Another patch is needed to cover `DyadicFloat` and `NormalFloat` constructors.
2024-01-18[libc][NFC] Selectively disable GCC warnings (#78462)Guillaume Chatelet2-1/+13
2024-01-17[libc][obvious] disable fabsf128 on aarch64 (#78511)michaelrj-google1-1/+2
It's not working on the buildbot, so I've disabled it until we fix it.
2024-01-17[reland][libc][NFC] Refactor FPBits and remove LongDoubleBits specialization ↵Guillaume Chatelet7-286/+617
(#78465) - [reland] #78192 - [reland] #78447 - Turn `as` static function into a `to_storage_type` member function.
2024-01-17Revert "[reland][libc][NFC] Refactor FPBits and remove LongDoubleBits ↵Guillaume Chatelet7-617/+286
specialization" (#78457) Reverts llvm/llvm-project#78447 This broke the gcc buildbot.
2024-01-17[reland][libc][NFC] Refactor FPBits and remove LongDoubleBits specialization ↵Guillaume Chatelet7-286/+617
(#78447) - [reland] #78192 - Make the implementation work when `__uint128_t` is not available on the plaftorm.