This patch adds the `memalignment` function to LLVM-libc, following its description in [WG14 N3220, §7.24.2.1](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf#page=387). - [x] Add the implementation of `memalignment` in [`/src/stdlib`](https://github.com/llvm/llvm-project/tree/main/libc/src/stdlib) - [x] Add tests for `memalignment` in [`/test/src/stdlib`](https://github.com/llvm/llvm-project/tree/main/libc/test/src/stdlib) - [x] Add `memalignment` to [`entrypoints.txt`](https://github.com/llvm/llvm-project/blob/main/libc/config/linux/x86_64/entrypoints.txt) for at least x86_64 and whatever you're building on - [x] Add `memalignment` to [`include/stdlib.yaml`](https://github.com/llvm/llvm-project/blob/main/libc/include/stdlib.yaml) Closes #132300 --------- Co-authored-by: Joseph Huber <huberjn@outlook.com>
333 lines
6.5 KiB
YAML
333 lines
6.5 KiB
YAML
header: stdlib.h
|
|
header_template: stdlib.h.def
|
|
standards:
|
|
- stdc
|
|
merge_yaml_files:
|
|
- stdlib-malloc.yaml
|
|
macros: []
|
|
types:
|
|
- type_name: __atexithandler_t
|
|
- type_name: __qsortrcompare_t
|
|
- type_name: __qsortcompare_t
|
|
- type_name: __bsearchcompare_t
|
|
- type_name: div_t
|
|
- type_name: ldiv_t
|
|
- type_name: lldiv_t
|
|
- type_name: locale_t
|
|
- type_name: size_t
|
|
enums: []
|
|
objects: []
|
|
functions:
|
|
- name: _Exit
|
|
standards:
|
|
- stdc
|
|
return_type: _Noreturn void
|
|
arguments:
|
|
- type: int
|
|
- name: a64l
|
|
standards:
|
|
- posix
|
|
return_type: long
|
|
arguments:
|
|
- type: const char *
|
|
- name: abort
|
|
standards:
|
|
- stdc
|
|
return_type: _Noreturn void
|
|
arguments:
|
|
- type: void
|
|
- name: abs
|
|
standards:
|
|
- stdc
|
|
return_type: int
|
|
arguments:
|
|
- type: int
|
|
- name: at_quick_exit
|
|
standards:
|
|
- stdc
|
|
return_type: int
|
|
arguments:
|
|
- type: __atexithandler_t
|
|
- name: atexit
|
|
standards:
|
|
- stdc
|
|
return_type: int
|
|
arguments:
|
|
- type: __atexithandler_t
|
|
- name: atof
|
|
standards:
|
|
- stdc
|
|
return_type: double
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- name: atoi
|
|
standards:
|
|
- stdc
|
|
return_type: int
|
|
arguments:
|
|
- type: const char *
|
|
- name: atol
|
|
standards:
|
|
- stdc
|
|
return_type: long
|
|
arguments:
|
|
- type: const char *
|
|
- name: atoll
|
|
standards:
|
|
- stdc
|
|
return_type: long long
|
|
arguments:
|
|
- type: const char *
|
|
- name: bsearch
|
|
standards:
|
|
- stdc
|
|
return_type: void *
|
|
arguments:
|
|
- type: const void *
|
|
- type: const void *
|
|
- type: size_t
|
|
- type: size_t
|
|
- type: __bsearchcompare_t
|
|
- name: div
|
|
standards:
|
|
- stdc
|
|
return_type: div_t
|
|
arguments:
|
|
- type: int
|
|
- type: int
|
|
- name: exit
|
|
standards:
|
|
- stdc
|
|
return_type: _Noreturn void
|
|
arguments:
|
|
- type: int
|
|
- name: getenv
|
|
standards:
|
|
- stdc
|
|
return_type: char *
|
|
arguments:
|
|
- type: const char *
|
|
- name: labs
|
|
standards:
|
|
- stdc
|
|
return_type: long
|
|
arguments:
|
|
- type: long
|
|
- name: ldiv
|
|
standards:
|
|
- stdc
|
|
return_type: ldiv_t
|
|
arguments:
|
|
- type: long
|
|
- type: long
|
|
- name: llabs
|
|
standards:
|
|
- stdc
|
|
return_type: long long
|
|
arguments:
|
|
- type: long long
|
|
- name: lldiv
|
|
standards:
|
|
- stdc
|
|
return_type: lldiv_t
|
|
arguments:
|
|
- type: long long
|
|
- type: long long
|
|
- name: memalignment
|
|
standards:
|
|
- stdc
|
|
return_type: size_t
|
|
arguments:
|
|
- type: const void *
|
|
- name: posix_memalign
|
|
standards:
|
|
- posix
|
|
return_type: int
|
|
arguments:
|
|
- type: void **
|
|
- type: size_t
|
|
- type: size_t
|
|
- name: qsort
|
|
standards:
|
|
- stdc
|
|
return_type: void
|
|
arguments:
|
|
- type: void *
|
|
- type: size_t
|
|
- type: size_t
|
|
- type: __qsortcompare_t
|
|
- name: qsort_r
|
|
standards:
|
|
- GNUExtensions
|
|
return_type: void
|
|
arguments:
|
|
- type: void *
|
|
- type: size_t
|
|
- type: size_t
|
|
- type: __qsortrcompare_t
|
|
- type: void *
|
|
- name: quick_exit
|
|
standards:
|
|
- stdc
|
|
return_type: _Noreturn void
|
|
arguments:
|
|
- type: int
|
|
- name: rand
|
|
standards:
|
|
- stdc
|
|
return_type: int
|
|
arguments:
|
|
- type: void
|
|
- name: srand
|
|
standards:
|
|
- stdc
|
|
return_type: void
|
|
arguments:
|
|
- type: unsigned int
|
|
- name: strfromd
|
|
standards:
|
|
- stdc
|
|
return_type: int
|
|
arguments:
|
|
- type: char *__restrict
|
|
- type: size_t
|
|
- type: const char *__restrict
|
|
- type: double
|
|
- name: strfromf
|
|
standards:
|
|
- stdc
|
|
return_type: int
|
|
arguments:
|
|
- type: char *__restrict
|
|
- type: size_t
|
|
- type: const char *__restrict
|
|
- type: float
|
|
- name: strfroml
|
|
standards:
|
|
- stdc
|
|
return_type: int
|
|
arguments:
|
|
- type: char *__restrict
|
|
- type: size_t
|
|
- type: const char *__restrict
|
|
- type: long double
|
|
- name: strtod
|
|
standards:
|
|
- stdc
|
|
return_type: double
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- name: strtof
|
|
standards:
|
|
- stdc
|
|
return_type: float
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- name: strtol
|
|
standards:
|
|
- stdc
|
|
return_type: long
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: int
|
|
- name: strtold
|
|
standards:
|
|
- stdc
|
|
return_type: long double
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- name: strtoll
|
|
standards:
|
|
- stdc
|
|
return_type: long long
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: int
|
|
- name: strtoul
|
|
standards:
|
|
- stdc
|
|
return_type: unsigned long
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: int
|
|
- name: strtoull
|
|
standards:
|
|
- stdc
|
|
return_type: unsigned long long
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: int
|
|
- name: strtod_l
|
|
standards:
|
|
- stdc
|
|
return_type: double
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: locale_t
|
|
- name: strtof_l
|
|
standards:
|
|
- stdc
|
|
return_type: float
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: locale_t
|
|
- name: strtol_l
|
|
standards:
|
|
- stdc
|
|
return_type: long
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: int
|
|
- type: locale_t
|
|
- name: strtold_l
|
|
standards:
|
|
- stdc
|
|
return_type: long double
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: locale_t
|
|
- name: strtoll_l
|
|
standards:
|
|
- stdc
|
|
return_type: long long
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: int
|
|
- type: locale_t
|
|
- name: strtoul_l
|
|
standards:
|
|
- stdc
|
|
return_type: unsigned long
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: int
|
|
- type: locale_t
|
|
- name: strtoull_l
|
|
standards:
|
|
- stdc
|
|
return_type: unsigned long long
|
|
arguments:
|
|
- type: const char *__restrict
|
|
- type: char **__restrict
|
|
- type: int
|
|
- type: locale_t
|
|
- name: system
|
|
standards:
|
|
- stdc
|
|
return_type: int
|
|
arguments:
|
|
- type: const char *
|