Commit Graph

4258 Commits

Author SHA1 Message Date
Michael Jones
70f44ec6fe [libc][NFC] Accept doc fix (#143996)
Docgen updates the docs when the config options are changed. This update
has been waiting since https://github.com/llvm/llvm-project/pull/143187.
2025-06-12 16:49:25 -07:00
Michael Jones
28c14d475f [libc] Independent strcat/strncat/stpcpy (#142643)
The previous implementations called other entrypoints. This patch fixes
strcat, strncat, and stpcpy to be properly independent.
2025-06-12 15:57:58 -07:00
Uzair Nawaz
2ee8fdbfdd [libc] Prevent building wchar on MacOS (#143978)
Prevent building wchar on macos as it depends on uchar.h which isn't
available
2025-06-12 22:14:28 +00:00
sribee8
f94950db89 [libc] Changed mbstate struct (#143942)
Changed the mbstate variable from bits processed to bytes processed and
implemented isComplete().

Co-authored-by: Sriya Pratipati <sriyap@google.com>
2025-06-12 18:04:26 +00:00
Michael Jones
5a6a4b6ba6 [libc] Implement perror (#143624)
The perror function writes an error message directly to stderr. This
patch adds an implementation, tests, and header generation details.
2025-06-12 10:45:47 -07:00
Uzair Nawaz
6311f039b2 [libc] Build fixes for widechar characterconverter (#143805)
Build fixes for wchar CharacterConverter class
2025-06-12 17:34:45 +00:00
lntue
d1ca8d891f [libc][math] Refactor expf implementation to header-only in src/__support/math folder. (#143790)
This is a step in preparation for:
https://discourse.llvm.org/t/rfc-make-clang-builtin-math-functions-constexpr-with-llvm-libc-to-support-c-23-constexpr-math-functions/86450
2025-06-12 13:18:30 -04:00
lntue
82f19674bf [libc] Update size_t and ssize_t definitions to use __SIZE_TYPE__ and __PTRDIFF_TYPE__ respectively. (#143921)
The current definition of `ssize_t` does not have the same bit width as
`size_t` on 32-bit platforms.
2025-06-12 13:11:42 -04:00
Michael Jones
ae7ea6e3a2 [libc] Fix ioctl errno inclusion (#143928)
Since errno was moved in
https://github.com/llvm/llvm-project/pull/143187 the code including it
in https://github.com/llvm/llvm-project/pull/141393 was rendered
incorrect. This patch fixes the include and the cmake depends.
2025-06-12 09:38:43 -07:00
W. Turner Abney
4039fdb7ba [libc] add ioctl (#141393)
Closes #85275
Closes #90317
Updates #97191

---------

Co-authored-by: Joseph Huber <huberjn@outlook.com>
Co-authored-by: Michael Jones <michaelrj@google.com>
2025-06-12 09:20:32 -07:00
Alexey Samsonov
a93e55e57e Revert "[libc] Migrate stdio tests to ErrnoCheckingTest." (#143829)
Reverts llvm/llvm-project#143802. Follow-up fix
3c7af175e5 wasn't robust enough and itself
got reverted.
2025-06-11 21:33:46 -07:00
Kewen12
a71210e5ab Revert "[libc] Fix stdio tests after #143802" (#143824)
Reverts llvm/llvm-project#143810 

This PR breaks our buildbot:
https://lab.llvm.org/buildbot/#/builders/10/builds/7159 revert to
unblock downstream merge.
2025-06-11 23:24:56 -04:00
Michael Jones
3c7af175e5 [libc] Fix stdio tests after #143802 (#143810)
In #143802 the stdio test cleanup missed a few places where errno was
being set to a failing value, and one where the framework needed to
included.
2025-06-11 16:52:21 -07:00
Alexey Samsonov
1ecd108cb7 [libc] Migrate stdio tests to ErrnoCheckingTest. (#143802)
Reduce the direct use of libc_errno in stdio unit tests by adopting
ErrnoCheckingTest where appropriate.

Also removes the libc_errno.h inclusions from stdlib.h tests that were
accidentally added in d87eea35fa
2025-06-11 16:22:17 -07:00
Joseph Huber
dc4335a2bf [libc] Perform bitfield zero initialization wave-parallel (#143607)
Summary:
We need to set the bitfield memory to zero because the system does not
guarantee zeroed out memory. Even if fresh pages are zero, the system
allows re-use so we would need a `kfd` level API to skip this step.

Because we can't this patch updates the logic to perform the zero
initialization wave-parallel. This reduces the amount of time it takes
to allocate a fresh by up to a tenth.

This has the unfortunate side effect that the control flow is more
convoluted and we waste some extra registers, but it's worth it to
reduce the slab allocation latency.
2025-06-11 18:22:05 -05:00
sribee8
79108da325 [libc][obvious] Changed incorrect type (#143780)
After changing mbstate_t to mbstate we forgot to change the
character_converter files to reflect it.

Co-authored-by: Sriya Pratipati <sriyap@google.com>
2025-06-11 13:28:55 -07:00
lntue
d87eea35fa [libc] Move libc_errno.h to libc/src/__support and make LIBC_ERRNO_MODE_SYSTEM to be header-only. (#143187)
This is the first step in preparation for:
https://discourse.llvm.org/t/rfc-make-clang-builtin-math-functions-constexpr-with-llvm-libc-to-support-c-23-constexpr-math-functions/86450
2025-06-11 16:25:27 -04:00
Uzair Nawaz
e389a0e7bb [libc] Switched calls to inline_memcpy to __builtin_memcpy for wide char utilities (#143011)
Switched calls to inline_memcpy to __builtin_memcpy for wide char
utilities
Removed unnecessary wctype_utils dependencies from the cmake file
2025-06-11 13:17:35 -07:00
Uzair Nawaz
52583b3ed7 [libc] Character converter skeleton class (#143619)
Made CharacterConverter class skeleton
2025-06-11 13:11:31 -07:00
Alexey Samsonov
5dafe9dca8 [libc] Reduce direct use of errno in src/stdlib and src/__support tests. (#143767)
* Get rid of libc_errno assignments in str_to_* __support tests, since
those API have been migrated to return error in a struct instead.
* Migrate tests for atof and to strto* functions from <stdlib.h> and for
strdup from <string.h> to use ErrnoCheckingTest harness.
2025-06-11 12:23:17 -07:00
William
117e78fe50 [libc] Add NULL macro definitions to header files (#142764)
By the C standard, <locale.h>, <stddef.h> <stdio.h>, <stdlib.h>,
<string.h>, <time.h>, and <wchar.h> require NULL to be defined.
2025-06-11 09:51:34 -07:00
Joseph Huber
f1575de4c5 [libc][NFC] Remove template from GPU allocator reference counter
Summary:
We don't need this to be generic, precommit for
https://github.com/llvm/llvm-project/pull/143607
2025-06-11 11:37:51 -05:00
Amy Huang
1bf4702d2b Disable prctl test when building for arm or riscv. (#143627)
I'm setting up a buildbot for arm32 using qemu and qemu doesn't support
PR_GET_THP_DISABLE.
Disable the test for now while we figure out what to do about that.

Also disable for riscv because we may do the same for riscv buildbots.
2025-06-10 16:18:53 -07:00
Michael Jones
06f6a771da [libc] Simplify wcscmp (#143457)
The implementation of wcscmp mimicked strcmp, but was more complicated
than necessary. This patch makes it simpler.
2025-06-10 11:24:18 -07:00
Joseph Huber
0e2103ac5c [libc][NFC] Remove unused CMake for gpu math 2025-06-07 09:25:27 -05:00
Michael Jones
3695d6cdf9 [libc][GPU] clean up includes (#143203)
The GPU stdio functions were depending on indirect inclusion for some of
their dependencies. This patch should fix all of that.
2025-06-06 14:12:07 -07:00
Joseph Huber
356dc628cb [libc] Missing include in RPC test 2025-06-06 15:45:22 -05:00
William
a75fc765d3 [libc] Add definitions to embedded AArch32/AArch64 (#142597)
Add `CLOCKS_PER_SEC` and the older `CLK_TCK`. Allows the user to define
a `__CLK_TCK` to override if necessary.

Also add an extra column for embedded AArch64 in `time.rst`
2025-06-06 16:05:14 -04:00
Joseph Huber
5823e92749 [libc] Fix missing includes after transitive dependency changed 2025-06-06 14:34:27 -05:00
Michael Jones
59f88a8e92 [libc] clean up string_utils memory functions (#143031)
The string_utils.h file previously included both memcpy and bzero. There
were no uses of bzero, and only one use of memcpy which was replaced
with __builtin_memcpy.

Also fix strsep which was broken by this change, fix a useless assert of
"sizeof(char) == sizeof(cpp::byte)", and update the bazel.
2025-06-06 11:16:54 -07:00
Michael Jones
d8bfb4719d [libc] clean up unused exp_utils (#143181)
This file's just left over from old code, but it doesn't compile
anymore. It's never used so this patch just removes it.
2025-06-06 11:02:55 -07:00
Joseph Huber
525726a520 [libc] Cleanup unimplemented math functions (#143173)
Summary:
This patch cleans up the leftoever files that were either implemented or
are still unimplemented stubs.
2025-06-06 12:27:13 -05:00
lntue
891a0abfc2 [libc] Correct x86_64 architecture for string(s) tests. (#143150) 2025-06-06 11:18:55 -04:00
Joseph Huber
59725c7486 [libc] Coalesce bitfield access in GPU malloc (#142692)
Summary:
This improves performance by reducing the amount of RMW operations we
need to do to a single slot. This improves repeated allocations without
much contention about ten percent.
2025-06-04 20:32:07 -05:00
Aly ElAshram
ff844df719 [libc] Expand usage of libc null checks. (#116262)
Fixes #111546

---------

Co-authored-by: alyyelashram <150528548+alyyelashram@users.noreply.github.com>
2025-06-04 13:08:27 -04:00
sribee8
22dd9a2483 [libc] wmemchr implementation (#142640)
Implemented wmemchr and tests.
Fixes: #121183

---------

Co-authored-by: Sriya Pratipati <sriyap@google.com>
2025-06-03 17:05:14 -07:00
sribee8
2ff2a076cc [libc] wcsncpy implementation (#142237)
Implemented wcsncpy and tests for the function.

---------

Co-authored-by: Sriya Pratipati <sriyap@google.com>
2025-06-03 16:37:14 -07:00
lntue
b994299e59 [libc] Also remove _FORTIFY_SOURCE before including <stdlib.h> in overlay mode. (#142647) 2025-06-03 14:25:46 -04:00
sribee8
3887c23059 [libc] wcscat implementation (#142243)
Implemented wcscat and tests.

---------

Co-authored-by: Sriya Pratipati <sriyap@google.com>
2025-06-03 09:58:08 -07:00
Michael Jones
cc68367bb9 [libc][obvious] fix wchar yaml formatting (#142506)
The yaml ended up with a typo, possibly due to merge issues. This patch
fixes it.
2025-06-02 17:00:23 -07:00
Uzair Nawaz
c8741851d1 [libc] Implemented wcsncmp (#142429)
Implemented wcsncmp and added tests
2025-06-02 16:05:47 -07:00
sribee8
e3d1a33b7e [libc] wcsstr implementation (#142440)
Implemented wcsstr and tests.
fixes #124348

---------

Co-authored-by: Sriya Pratipati <sriyap@google.com>
2025-06-02 16:05:12 -07:00
Uzair Nawaz
45c297428a [libc] added nullptr checks for wcspbrk (#142216)
Added CRASH_ON_NULLPTR macro to wcspbrk function and related test
2025-06-02 15:20:53 -07:00
sribee8
9422abf9eb [libc] wcsncat implementation (#142431)
Implemented wcsncat and tests.

---------

Co-authored-by: Sriya Pratipati <sriyap@google.com>
2025-06-02 15:20:10 -07:00
Uzair Nawaz
dabe983e7e [libc] Implemented wcsrchr (#142436)
fixes #124347 
Implemented wcsrchr and added tests
2025-06-02 15:18:44 -07:00
Uzair Nawaz
62af2a5ae2 [libc] Implemented wcscmp (#142423)
Implemented wcscmp and added tests
2025-06-02 15:16:14 -07:00
Uzair Nawaz
c80c452525 [libc] Implemented wmempcpy (#142067)
Implemented wmempcpy and added tests
2025-06-02 15:00:46 -07:00
sribee8
e38375310e [libc] wcscpy implementation (#142228)
Implemented wcscpy as well as tests for the function.

---------

Co-authored-by: Sriya Pratipati <sriyap@google.com>
2025-06-02 11:20:25 -07:00
wldfngrs
573545c712 [libc][math][c23] Add atanf16() function (#141612)
- Implementation of atan (tan inverse) function for 16-bit inputs.
- Exhaustive tests across the 16-bit input range
2025-06-01 13:36:16 +02:00
sribee8
339851e140 [libc][obvious] Fixed wchar.yaml (#142238)
Changed __restricted to __restrict for wmemcpy.

Co-authored-by: Sriya Pratipati <sriyap@google.com>
2025-05-30 16:41:11 -07:00