[libc-commits] [libc] [libc] Fill out generated malloc.h and related stdlib.h extensions (PR #127293)
Roland McGrath via libc-commits
libc-commits at lists.llvm.org
Fri Feb 14 17:27:17 PST 2025
https://github.com/frobtech created https://github.com/llvm/llvm-project/pull/127293
This updates the generated stdlib.h and malloc.h headers to
include the subsets of extenion functions declared by glibc that
are also supported by Scudo and that use only simple types.
Scudo's extensions not declared by glibc are omitted. glibc's
extensions not implemented by Scudo are omitted. The mallinfo
and mallinfo2 functions are omitted (at least for now) since they
need struct definitions for their return types.
>From a78cbe2551b551de64ab1a1d37b9595869d6dc8e Mon Sep 17 00:00:00 2001
From: Roland McGrath <mcgrathr at google.com>
Date: Fri, 14 Feb 2025 00:49:59 -0800
Subject: [PATCH] [libc] Fill out generated malloc.h and related stdlib.h
extensions
This updates the generated stdlib.h and malloc.h headers to
include the subsets of extenion functions declared by glibc that
are also supported by Scudo and that use only simple types.
Scudo's extensions not declared by glibc are omitted. glibc's
extensions not implemented by Scudo are omitted. The mallinfo
and mallinfo2 functions are omitted (at least for now) since they
need struct definitions for their return types.
---
libc/include/malloc.yaml | 13 +++++++++++++
libc/include/stdlib-malloc.yaml | 28 ++++++++++++++++++++--------
libc/include/stdlib.yaml | 8 ++++++++
3 files changed, 41 insertions(+), 8 deletions(-)
diff --git a/libc/include/malloc.yaml b/libc/include/malloc.yaml
index bf7678797c023..cd84723557bcb 100644
--- a/libc/include/malloc.yaml
+++ b/libc/include/malloc.yaml
@@ -9,6 +9,12 @@ macros:
- macro_name: M_PURGE_ALL
macro_header: malloc-macros.h
functions:
+ - name: malloc_usable_size
+ standards:
+ - gnu
+ return_type: size_t
+ arguments:
+ - type: void *
- name: mallopt
standards:
- gnu
@@ -16,3 +22,10 @@ functions:
arguments:
- type: int
- type: int
+ - name: pvalloc
+ standards:
+ - bsd
+ - gnu
+ return_type: void *
+ arguments:
+ - type: size_t
diff --git a/libc/include/stdlib-malloc.yaml b/libc/include/stdlib-malloc.yaml
index 648a6e58a90a0..51c11f5602e2c 100644
--- a/libc/include/stdlib-malloc.yaml
+++ b/libc/include/stdlib-malloc.yaml
@@ -1,4 +1,10 @@
# This file has declarations that appear both in <stdlib.h> and in <malloc.h>.
+# These include the subset of GNU extensions that Scudo supports.
+#
+# Note: glibc's <stdlib.h> and <malloc.h> both also have `reallocarray`,
+# which Scudo does not support and is omitted here. (Each of those glibc
+# headers also has related functions the other lacks, but those should be
+# covered separately in stdlib.yaml and malloc.yaml instead.)
functions:
- name: aligned_alloc
@@ -27,6 +33,13 @@ functions:
return_type: void *
arguments:
- type: size_t
+ - name: memalign
+ standards:
+ - gnu
+ return_type: void *
+ arguments:
+ - type: size_t
+ - type: size_t
- name: realloc
standards:
- stdc
@@ -34,11 +47,10 @@ functions:
arguments:
- type: void *
- type: size_t
-
-# Note: glibc's <stdlib.h> and <malloc.h> both have these, which are
-# currently missing here:
-# - name: reallocarray
-# - name: memalign
-# - name: valloc
-# Each of those glibc headers also has related functions the other lacks.
-# Only the common subset is mentioned here for future consideration.
+ - name: valloc
+ standards:
+ - bsd
+ - gnu
+ return_type: void *
+ arguments:
+ - type: size_t
diff --git a/libc/include/stdlib.yaml b/libc/include/stdlib.yaml
index 6ada26f020179..8d2b3f357e1a9 100644
--- a/libc/include/stdlib.yaml
+++ b/libc/include/stdlib.yaml
@@ -127,6 +127,14 @@ functions:
arguments:
- type: long long
- type: long long
+ - name: posix_memalign
+ standards:
+ - posix
+ return_type: int
+ arguments:
+ - type: void **
+ - type: size_t
+ - type: size_t
- name: qsort
standards:
- stdc
More information about the libc-commits
mailing list