[libc-commits] [libc] e17b17d - [libc] added yaml_combined files, frontend for new headergen (#96833)

via libc-commits libc-commits at lists.llvm.org
Fri Jun 28 08:59:12 PDT 2024


Author: aaryanshukla
Date: 2024-06-28T08:59:08-07:00
New Revision: e17b17d86e6a9d2c77b7a63822c26bda2fa05067

URL: https://github.com/llvm/llvm-project/commit/e17b17d86e6a9d2c77b7a63822c26bda2fa05067
DIFF: https://github.com/llvm/llvm-project/commit/e17b17d86e6a9d2c77b7a63822c26bda2fa05067.diff

LOG: [libc] added yaml_combined files, frontend for new headergen (#96833)

These are the yaml files that have combined functions from different
libraries
Rose will be adding the rest of the yaml in the next pr
Missing assert.yaml -- work in progress

Added: 
    libc/newhdrgen/yaml_combined/ctype.yaml
    libc/newhdrgen/yaml_combined/fenv.yaml
    libc/newhdrgen/yaml_combined/math.yaml
    libc/newhdrgen/yaml_combined/pthread.yaml
    libc/newhdrgen/yaml_combined/sched.yaml
    libc/newhdrgen/yaml_combined/signal.yaml
    libc/newhdrgen/yaml_combined/stdfix.yaml
    libc/newhdrgen/yaml_combined/stdio.yaml
    libc/newhdrgen/yaml_combined/stdlib.yaml
    libc/newhdrgen/yaml_combined/string.yaml
    libc/newhdrgen/yaml_combined/strings.yaml
    libc/newhdrgen/yaml_combined/sys_mman.yaml
    libc/newhdrgen/yaml_combined/sys_wait.yaml
    libc/newhdrgen/yaml_combined/time.yaml

Modified: 
    libc/newhdrgen/class_implementation/classes/function.py
    libc/newhdrgen/yaml_to_classes.py

Removed: 
    


################################################################################
diff  --git a/libc/newhdrgen/class_implementation/classes/function.py b/libc/newhdrgen/class_implementation/classes/function.py
index dc73e0e1ea5a9..3c464e48b6e3b 100644
--- a/libc/newhdrgen/class_implementation/classes/function.py
+++ b/libc/newhdrgen/class_implementation/classes/function.py
@@ -16,14 +16,16 @@ def __init__(
         self.standards = standards
         self.return_type = return_type
         self.name = name
-        self.arguments = [arg["type"] for arg in arguments]
+        self.arguments = [
+            arg if isinstance(arg, str) else arg["type"] for arg in arguments
+        ]
         self.guard = guard
-        self.attributes = attributes
+        self.attributes = attributes or []
 
     def __str__(self):
-        args_str = ", ".join(self.arguments)
         attributes_str = " ".join(self.attributes)
-        result = f"{self.return_type} {self.name}({args_str}){attributes_str};"
+        arguments_str = ", ".join(self.arguments)
+        result = f"{self.return_type} {self.name}({arguments_str}){attributes_str};"
         if self.guard:
             result = f"#ifdef {self.guard}\n{result}\n#endif // {self.guard}"
         return result

diff  --git a/libc/newhdrgen/yaml_combined/ctype.yaml b/libc/newhdrgen/yaml_combined/ctype.yaml
new file mode 100644
index 0000000000000..a4a3048ede872
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/ctype.yaml
@@ -0,0 +1,103 @@
+header: ctype.h
+macros: []
+types: []
+enums: []
+objects: []
+functions:
+  - name: isalnum
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: isalpha
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: isblank
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: iscntrl
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: isdigit
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: isgraph
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: islower
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: isprint
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: ispunct
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: isspace
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: isupper
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: isxdigit
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: tolower
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: toupper
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+    functions:
+  - name: isascii
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: int
+  - name: toascii
+    standards: 
+      - GNUExtensions
+    return_type: int
+    arguments:
+      - type: int

diff  --git a/libc/newhdrgen/yaml_combined/fenv.yaml b/libc/newhdrgen/yaml_combined/fenv.yaml
new file mode 100644
index 0000000000000..e7ff8cdf4e3b0
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/fenv.yaml
@@ -0,0 +1,107 @@
+header: fenv.h
+macros: []
+types:
+  - type_name: fenv_t
+  - type_name: fexcept_t
+enums: []
+objects: []
+functions:
+  - name: feclearexcept
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: fetestexcept
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: fetestexceptflag
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const fexcept_t *
+      - type: int
+  - name: feraiseexcept
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: fesetround
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: fegetround
+    standards: 
+      - stdc
+    return_type: int
+    arguments: []
+  - name: fegetenv
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: fenv_t *
+  - name: fesetenv
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const fenv_t *
+  - name: fegetexceptflag
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: fexcept_t *
+      - type: int
+  - name: fesetexcept
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: fesetexceptflag
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const fexcept_t *
+      - type: int
+  - name: feholdexcept
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: fenv_t *
+  - name: feupdateenv
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const fenv_t *
+  - name: fedisableexcept
+    standards: 
+      - GNUExtensions
+    return_type: int 
+    arguments: 
+      - type: int 
+    guard: null
+  - name: feenableexcept
+    standards: 
+      - GNUExtensions
+    return_type: int 
+    arguments:
+      - type: int
+    attributes: []
+  - name: fegetexcept
+    standards: 
+      - GNUExtensions
+    return_type: int
+    arguments: []

diff  --git a/libc/newhdrgen/yaml_combined/math.yaml b/libc/newhdrgen/yaml_combined/math.yaml
new file mode 100644
index 0000000000000..dbb1e6ec63030
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/math.yaml
@@ -0,0 +1,1884 @@
+header: math.h
+macros: []
+types:
+  - type_name: float_t
+  - type_name: double_t
+  - type_name: float128
+enums: []
+objects: []
+functions:
+  - name: copysign
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: copysignf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: copysignl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: copysignf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: copysignf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: ceil
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: ceilf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: ceill
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: ceilf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: ceilf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fabs
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+    attributes:
+      - __LIBC_CONST_ATTR
+  - name: fabsf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: fabsl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: fabsf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fabsf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fdim
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fdimf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fdiml
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fdimf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fdimf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: floor
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: floorf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: floorl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: floorf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: floorf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmin
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fminf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fminl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fminf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+  - name: fmax
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fmaxf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fmaxl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fmaxf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaxf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+  - name: fmaximum
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fmaximumf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fmaximuml
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fmaximumf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaximumf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmaximum_num
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fmaximum_numf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fmaximum_numl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fmaximum_numf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaximum_numf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmaximum_mag
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fmaximum_magf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fmaximum_magl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fmaximum_magf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaximum_magf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmaximum_mag_num
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fmaximum_mag_numf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fmaximum_mag_numl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fmaximum_mag_numf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaximum_mag_numf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fminimum
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fminimumf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fminimuml
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fminimumf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminimumf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fminimum_num
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fminimum_numf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fminimum_numl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fminimum_numf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminimum_numf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fminimum_mag
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fminimum_magf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fminimum_magl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fminimum_magf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminimum_magf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fminimum_mag_num
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fminimum_mag_numf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fminimum_mag_numl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fminimum_mag_numf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminimum_mag_numf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fma
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+      - type: double
+  - name: fmaf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+      - type: float
+  - name: f16fmaf
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: float
+      - type: float
+      - type: float
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmod
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: fmodf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: fmodl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: fmodf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmodf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: frexp
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: int *
+  - name: frexpf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: int *
+  - name: frexpl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: int *
+  - name: frexpf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: frexpf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int *
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fromfp
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: int
+      - type: unsigned int
+  - name: fromfpf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: int
+      - type: unsigned int
+  - name: fromfpl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: int
+      - type: unsigned int
+  - name: fromfpf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fromfpf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fromfpx
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: int
+      - type: unsigned int
+  - name: fromfpxf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: int
+      - type: unsigned int
+  - name: fromfpxl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: int
+      - type: unsigned int
+  - name: fromfpxf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fromfpxf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: ufromfp
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: int
+      - type: unsigned int
+  - name: ufromfpf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: int
+      - type: unsigned int
+  - name: ufromfpl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: int
+      - type: unsigned int
+  - name: ufromfpf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: ufromfpf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: ufromfpx
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: int
+      - type: unsigned int
+  - name: ufromfpxf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: int
+      - type: unsigned int
+  - name: ufromfpxl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: int
+      - type: unsigned int
+  - name: ufromfpxf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: ufromfpxf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: hypot
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: hypotf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: ilogb
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: double
+  - name: ilogbf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: float
+  - name: ilogbl
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: long double
+  - name: ilogbf16
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: ilogbf128
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: llogb
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: double
+  - name: llogbf
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: float
+  - name: llogbl
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: long double
+  - name: llogbf16
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: llogbf128
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: ldexp
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: int
+  - name: ldexpf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: int
+  - name: ldexpl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: int
+  - name: ldexpf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: log10
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: log10f
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: log1p
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: log1pf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: log2
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: log2f
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: log
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: logf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: log1p
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: log1pf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: log2
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: log2f
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: logb
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: logbf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: logbl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: logbf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: logbf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: modf
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double *
+  - name: modff
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float *
+  - name: modfl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double *
+  - name: modff16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16 *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: modff128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128 *
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: cos
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: cosf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: sin
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: sincosf
+    standards: 
+      - gnu
+    return_type: void
+    arguments:
+      - type: float
+      - type: float *
+      - type: float *
+  - name: sinf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: tan
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: tanf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: erff
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: exp
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: expf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: exp2
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: exp2f
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: exp2m1f
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: expm1
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: expm1f
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: exp10
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: exp10f
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: remainder
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: remainderf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: remainderl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: remainderf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: remquo
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+      - type: int *
+  - name: remquof
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+      - type: int *
+  - name: remquol
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+      - type: int *
+  - name: remquof16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+      - type: int *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: remquof128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+      - type: int *
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: round
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: roundf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: roundl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: roundf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: roundf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: roundeven
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: roundevenf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: roundevenl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: roundevenf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: roundevenf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: lround
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: double
+  - name: lroundf
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: float
+  - name: lroundl
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: long double
+  - name: lroundf16
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: lroundf128
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: llround
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: double
+  - name: llroundf
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: float
+  - name: llroundl
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: long double
+  - name: llroundf16
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: llroundf128
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: rint
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: rintf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: rintl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: rintf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: rintf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: lrint
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: double
+  - name: lrintf
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: float
+  - name: lrintl
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: long double
+  - name: lrintf16
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: lrintf128
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: llrint
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: double
+  - name: llrintf
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: float
+  - name: llrintl
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: long double
+  - name: llrintf16
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: llrintf128
+    standards: 
+      - stdc
+    return_type: Longlong
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: sqrt
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: sqrtf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: sqrtl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: sqrtf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: trunc
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: truncf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: truncl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: truncf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: truncf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nearbyint
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: nearbyintf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: nearbyintl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: nearbyintf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nearbyintf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nextafterf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: nextafter
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: nextafterl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: nextafterf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nextafterf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nexttowardf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: long double
+  - name: nexttoward
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: long double
+  - name: nexttowardl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: long double
+  - name: nexttowardf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nextdown
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: nextdownf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: nextdownl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: nextdownf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nextdownf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nextup
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: nextupf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: nextupl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+  - name: nextupf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nextupf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: powf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: pow
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: double
+  - name: coshf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: sinhf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: tanhf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: acosf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: asinf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: asin
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+  - name: atanf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: atan2f
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: float
+  - name: acoshf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: asinhf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: atanhf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+  - name: scalbn
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: double
+      - type: int
+  - name: scalbnf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
+      - type: int
+  - name: scalbnl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: long double
+      - type: int
+  - name: scalbnf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nanf
+    standards: 
+      - stdc
+    return_type: float
+    arguments:
+      - type: const char *
+  - name: nan
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: const char *
+  - name: nanl
+    standards: 
+      - stdc
+    return_type: long double
+    arguments:
+      - type: const char *
+  - name: nanf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: const char *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nanf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: const char *
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: canonicalize
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: double
+      - type: double
+  - name: canonicalizef
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: float
+      - type: float
+  - name: canonicalizel
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: long double
+      - type: long double
+  - name: canonicalizef16
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: canonicalizef128
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: totalorderf16
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: _Float16 *
+      - type: _Float16 *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: totalordermagf16
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: _Float16 *
+      - type: _Float16 *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: f16sqrtf
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: float
+    guard: LIBC_TYPES_HAS_FLOAT16

diff  --git a/libc/newhdrgen/yaml_combined/pthread.yaml b/libc/newhdrgen/yaml_combined/pthread.yaml
new file mode 100644
index 0000000000000..5a1ede32e53e3
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/pthread.yaml
@@ -0,0 +1,368 @@
+header: pthread.h
+macros: []
+types:
+  - type_name: pthread_t
+  - type_name: pthread_once_t
+  - type_name: pthread_mutex_t
+  - type_name: pthread_mutexattr_t
+  - type_name: pthread_key_t
+  - type_name: pthread_condattr_t
+  - type_name: __pthread_tss_dtor_t
+  - type_name: pthread_rwlockattr_t
+  - type_name: pthread_attr_t
+  - type_name: __pthread_start_t
+  - type_name: __pthread_once_func_t
+  - type_name: __atfork_callback_t
+enums:
+  - name: PTHREAD_CREATE_JOINABLE
+    value: 0x0
+  - name: PTHREAD_CREATE_DETACHED
+    value: 0x1
+  - name: PTHREAD_MUTEX_NORMAL
+    value: 0x0
+  - name: PTHREAD_MUTEX_ERRORCHECK
+    value: 0x1
+  - name: PTHREAD_MUTEX_RECURSIVE
+    value: 0x2
+  - name: PTHREAD_MUTEX_DEFAULT
+    value: 0x0
+  - name: PTHREAD_PROCESS_PRIVATE
+    value: 0x0
+  - name: PTHREAD_PROCESS_SHARED
+    value: 0x1
+  - name: PTHREAD_MUTEX_STALLED
+    value: 0x0
+  - name: PTHREAD_MUTEX_ROBUST
+    value: 0x1
+  - name: PTHREAD_RWLOCK_PREFER_READER_NP
+    value: 0
+  - name: PTHREAD_RWLOCK_PREFER_WRITER_NP
+    value: 1
+  - name: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
+    value: 2
+functions:
+  - name: pthread_atfork
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: __atfork_callback_t
+      - type: __atfork_callback_t
+      - type: __atfork_callback_t
+  - name: pthread_attr_destroy
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_attr_t *
+  - name: pthread_attr_init
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_attr_t *
+  - name: pthread_attr_getdetachstate
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_attr_t *
+      - type: int *
+  - name: pthread_attr_getguardsize
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_attr_t * __restrict
+      - type: size_t * __restrict
+  - name: pthread_attr_getstack
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_attr_t * __restrict
+      - type: void * * __restrict
+      - type: size_t * __restrict
+  - name: pthread_attr_getstacksize
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_attr_t * __restrict
+      - type: size_t * __restrict
+  - name: pthread_attr_setdetachstate
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_attr_t *
+      - type: int
+  - name: pthread_attr_setguardsize
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_attr_t *
+      - type: size_t
+  - name: pthread_attr_setstack
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_attr_t *
+      - type: void *
+      - type: size_t
+  - name: pthread_attr_setstacksize
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_attr_t *
+      - type: size_t
+  - name: pthread_condattr_destroy
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_condattr_t *
+  - name: pthread_condattr_getclock
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_condattr_t * __restrict
+      - type: clockid_t * __restrict
+  - name: pthread_condattr_getpshared
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_condattr_t * __restrict
+      - type: int * __restrict
+  - name: pthread_condattr_init
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_condattr_t *
+  - name: pthread_condattr_setclock
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_condattr_t *
+      - type: clockid_t
+  - name: pthread_condattr_setpshared
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_condattr_t *
+      - type: int
+  - name: pthread_create
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_t * __restrict
+      - type: const pthread_attr_t * __restrict
+      - type: __pthread_start_t
+      - type: void *
+  - name: pthread_detach
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_t
+  - name: pthread_equal
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_t
+      - type: pthread_t
+  - name: pthread_exit
+    standards: 
+      - POSIX
+    return_type: __Noreturn void
+    arguments:
+      - type: void *
+  - name: pthread_getname_np
+    standards:
+      - GNUExtensions
+    return_type: int
+    arguments:
+      - type: pthread_t
+      - type: char *
+      - type: size_t
+  - name: pthread_getspecific
+    standards: 
+      - POSIX
+    return_type: void *
+    arguments:
+      - type: pthread_key_t
+  - name: pthread_join
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_t
+      - type: void * *
+  - name: pthread_key_create
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_key_t *
+      - type: __pthread_tss_dtor_t
+  - name: pthread_key_delete
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_key_t
+  - name: pthread_self
+    standards: 
+      - POSIX
+    return_type: pthread_t
+    arguments: []
+  - name: pthread_setname_np
+    standards:
+      - GNUExtensions
+    return_type: int
+    arguments:
+      - type: pthread_t
+      - type: const char *
+  - name: pthread_mutex_destroy
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_mutex_t *
+  - name: pthread_mutex_init
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_mutex_t * __restrict
+      - type: const pthread_mutexattr_t * __restrict
+  - name: pthread_mutex_lock
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_mutex_t *
+  - name: pthread_mutex_unlock
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_mutex_t *
+  - name: pthread_mutexattr_destroy
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_mutexattr_t *
+  - name: pthread_mutexattr_init
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_mutexattr_t *
+  - name: pthread_mutexattr_getpshared
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_mutexattr_t * __restrict
+      - type: int * __restrict
+  - name: pthread_mutexattr_getrobust
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_mutexattr_t * __restrict
+      - type: int * __restrict
+  - name: pthread_mutexattr_gettype
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_mutexattr_t * __restrict
+      - type: int * __restrict
+  - name: pthread_mutexattr_setpshared
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_mutexattr_t * __restrict
+      - type: int
+  - name: pthread_mutexattr_setrobust
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_mutexattr_t * __restrict
+      - type: int
+  - name: pthread_mutexattr_settype
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_mutexattr_t * __restrict
+      - type: int
+  - name: pthread_once
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_once_t *
+      - type: __pthread_once_func_t
+  - name: pthread_rwlockattr_destroy
+    standards: 
+      - POSIX 
+    return_type: int
+    arguments:
+      - type: pthread_rwlockattr_t *
+  - name: pthread_rwlockattr_getkind_np
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_rwlockattr_t *
+      - type: int *
+  - name: pthread_rwlockattr_getpshared
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const pthread_rwlockattr_t *
+      - type: int *
+  - name: pthread_rwlockattr_init
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_rwlockattr_t *
+  - name: pthread_rwlockattr_setkind_np
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_rwlockattr_t *
+      - type: int
+  - name: pthread_rwlockattr_setpshared
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pthread_rwlockattr_t *
+      - type: int
+  - name: pthread_setspecific
+    standards: 
+      - POSIX
+    return_type: void *
+    arguments:
+      - type: pthread_key_t
+      - type: const void *

diff  --git a/libc/newhdrgen/yaml_combined/sched.yaml b/libc/newhdrgen/yaml_combined/sched.yaml
new file mode 100644
index 0000000000000..11a55b7d993b9
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/sched.yaml
@@ -0,0 +1,87 @@
+header: sched.h
+macros: []
+types:
+  - type_name: struct_timespec
+  - type_name: time_t
+  - type_name: struct_sched_param
+  - type_name: size_t
+  - type_name: cpu_set_t
+  - type_name: pid_t
+enums: []
+objects: []
+functions:
+  - name: sched_get_priority_max
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: int
+  - name: sched_get_priority_min
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: int
+  - name: sched_getaffinity
+    standards: 
+      - GNUExtensions
+    return_type: int
+    arguments:
+      - type: pid_t
+      - type: size_t
+      - type: cpu_set_t *
+  - name: sched_getparam
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pid_t
+      - type: struct sched_param *
+  - name: sched_getscheduler
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pid_t
+      - type: int
+      - type: const struct sched_param *
+  - name: sched_rr_get_interval
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pid_t
+      - type: struct timespec *
+  - name: sched_setaffinity
+    standards: 
+      - GNUExtensions
+    return_type: int
+    arguments:
+      - type: pid_t
+      - type: size_t
+      - type: const cpu_set_t *
+  - name: sched_setparam
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pid_t
+      - type: const struct sched_param *
+  - name: sched_setscheduler
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: pid_t
+  - name: sched_yield
+    standards: 
+      - POSIX 
+    return_type: int
+    arguments: []
+  - name: __sched_getcpucount
+    standards: 
+      - llvm_libc_ext
+    return_type: int
+    arguments:
+      - type: size_t
+      - type: const cpu_set_t *

diff  --git a/libc/newhdrgen/yaml_combined/signal.yaml b/libc/newhdrgen/yaml_combined/signal.yaml
new file mode 100644
index 0000000000000..a95273419dbde
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/signal.yaml
@@ -0,0 +1,84 @@
+header: signal.h
+macros:
+  - macro_name: __need_size_t
+    macro_value: null
+types:
+  - type_name: pid_t
+  - type_name: stack_t
+  - type_name: siginfo_t
+  - type_name: struct_sigaction
+  - type_name: sigset_t
+  - type_name: union_sigval
+  - type_name: sig_atomic_t
+enums: []
+objects: []
+functions:
+  - name: raise
+    standards: 
+      - stdc 
+    return_type: int
+    arguments:
+      - type: int
+  - name: kill
+    standards: 
+      - POSIX 
+    return_type: int
+    arguments:
+      - type: pid_t
+      - type: int
+  - name: sigaction
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: int
+      - type: const struct sigaction * __restrict
+      - type: struct sigaction * __restrict
+  - name: sigaltstack
+    standards: 
+      - POSIX 
+    return_type: int
+    arguments:
+      - type: const stack_t * __restrict
+      - type: stack_t * __restrict
+  - name: sigdelset
+    standards: 
+      - POSIX 
+    return_type: int
+    arguments:
+      - type: sigset_t *
+      - type: int
+  - name: sigaddset
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: sigset_t *
+      - type: int
+  - name: sigemptyset
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: sigset_t *
+  - name: sigprocmask
+    standards: 
+      - POSIX 
+    return_type: int
+    arguments:
+      - type: int
+      - type: const sigset_t * __restrict
+      - type: sigset_t * __restrict
+  - name: sigfillset
+    standards: 
+      - POSIX 
+    return_type: int
+    arguments:
+      - type: sigset_t *
+  - name: signal
+    standards: 
+      - stdc
+    return_type: __sighandler_t
+    arguments:
+      - type: int
+      - type: __sighandler_t

diff  --git a/libc/newhdrgen/yaml_combined/stdfix.yaml b/libc/newhdrgen/yaml_combined/stdfix.yaml
new file mode 100644
index 0000000000000..564826a333580
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/stdfix.yaml
@@ -0,0 +1,222 @@
+header: stdfix.h
+macros: []
+types: []
+enums: []
+objects: []
+functions:
+  - name: abshk
+    standards: 
+      - stdc_ext
+    return_type: short accum
+    arguments:
+      - type: short accum
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: abshr
+    standards: 
+      - stdc_ext
+    return_type: short fract
+    arguments:
+      - type: short fract
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: absk
+    standards: 
+      - stdc_ext
+    return_type: accum
+    arguments:
+      - type: accum
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: absr
+    standards: 
+      - stdc_ext
+    return_type: fract
+    arguments:
+      - type: fract
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: abslk
+    standards: 
+      - stdc_ext
+    return_type: long accum
+    arguments:
+      - type: long accum
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: abslr
+    standards: 
+      - stdc_ext
+    return_type: long fract
+    arguments:
+      - type: long fract
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: exphk
+    standards: 
+      - stdc_ext
+      - llvm_libc_stdfix_ext
+    return_type: short accum
+    arguments:
+      - type: short accum
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: expk
+    standards: 
+      - stdc_ext
+      - llvm_libc_stdfix_ext
+    return_type: accum
+    arguments:
+      - type: accum
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: roundhk
+    standards: 
+      - stdc_ext
+    return_type: short accum
+    arguments:
+      - type: short accum
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: roundhr
+    standards: 
+      - stdc_ext
+    return_type: short fract
+    arguments:
+      - type: short fract
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: roundk
+    standards: 
+      - stdc_ext
+    return_type: accum
+    arguments:
+      - type: accum
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: roundr
+    standards: 
+      - stdc_ext
+    return_type: fract
+    arguments:
+      - type: fract
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: roundlk
+    standards: 
+      - stdc_ext
+    return_type: long accum
+    arguments:
+      - type: long accum
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: roundlr
+    standards: 
+      - stdc_ext
+    return_type: long fract
+    arguments:
+      - type: long fract
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: rounduhk
+    standards: 
+      - stdc_ext
+    return_type: unsigned short accum
+    arguments:
+      - type: unsigned short accum
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: rounduhr
+    standards: 
+      - stdc_ext
+    return_type: unsigned short fract
+    arguments:
+      - type: unsigned short fract
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: rounduk
+    standards: 
+      - stdc_ext
+    return_type: unsigned accum
+    arguments:
+      - type: unsigned accum
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: roundur
+    standards: 
+      - stdc_ext
+    return_type: unsigned fract
+    arguments:
+      - type: unsigned fract
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: roundulk
+    standards: 
+      - stdc_ext
+    return_type: unsigned long accum
+    arguments:
+      - type: unsigned long accum
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: roundulr
+    standards: 
+      - stdc_ext
+    return_type: unsigned long fract
+    arguments:
+      - type: unsigned long fract
+      - type: int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: sqrtuhk
+    standards: 
+      - stdc_ext
+      - llvm_libc_stdfix_ext
+    return_type: unsigned short accum
+    arguments:
+      - type: unsigned short accum
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: sqrtuhr
+    standards: 
+      - stdc_ext
+      - llvm_libc_stdfix_ext
+    return_type: unsigned short fract
+    arguments:
+      - type: unsigned short fract
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: sqrtuk
+    standards: 
+      - stdc_ext 
+      - llvm_libc_stdfix_ext
+    return_type: unsigned accum
+    arguments:
+      - type: unsigned accum
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: sqrtur
+    standards: 
+      - stdc_ext
+      - llvm_libc_stdfix_ext
+    return_type: unsigned fract
+    arguments:
+      - type: unsigned fract
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: sqrtulr
+    standards: 
+      - stdc_ext  
+      - llvm_libc_stdfix_ext
+    return_type: unsigned long fract
+    arguments:
+      - type: unsigned long fract
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: sqrtulk
+    standards: llvm_libc_stdfix_ext
+    return_type: unsigned long accum
+    arguments:
+      - type: unsigned long accum
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: uhksqrtus 
+    standards: 
+      - stdc_ext
+      - llvm_libc_stdfix_ext
+    return_type: unsigned short accum
+    arguments:
+      - type: unsigned short
+    guard: LIBC_COMPILER_HAS_FIXED_POINT
+  - name: uksqrtui
+    standards: 
+      - stdc_ext 
+      - llvm_libc_stdfix_ext
+    return_type: unsigned accum
+    arguments:
+      - type: unsigned int
+    guard: LIBC_COMPILER_HAS_FIXED_POINT

diff  --git a/libc/newhdrgen/yaml_combined/stdio.yaml b/libc/newhdrgen/yaml_combined/stdio.yaml
new file mode 100644
index 0000000000000..928a8d5228c21
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/stdio.yaml
@@ -0,0 +1,370 @@
+header: stdio.h
+macros:
+  - macro_name: _IONBF
+    macro_value: 2
+  - macro_name: _IOLBF
+    macro_value: 1
+  - macro_name: _IOFBF
+    macro_value: 0
+  - macro_name: stdout
+    macro_value: stdout
+  - macro_name: stdin
+    macro_value: stdin
+types:
+  - type_name: size_t
+  - type_name: off_t
+  - type_name: cookie_io_functions_t
+  - type_name: FILE
+enums: []
+objects:
+  - object_name: stdin
+    object_type: FILE *
+  - object_name: stdout
+    object_type: FILE *
+  - object_name: stderr
+    object_type: FILE *
+functions:
+  - name: remove
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char *
+  - name: rename
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: sprintf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: char * __restrict
+      - type: const char * __restrict
+      - type: ...
+  - name: snprintf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: char * __restrict
+      - type: size_t
+      - type: const char * __restrict
+      - type: ...
+  - name: fprintf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE * __restrict
+      - type: const char * __restrict
+      - type: ...
+  - name: printf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char * __restrict
+      - type: ...
+  - name: vsprintf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: char * __restrict
+      - type: const char * __restrict
+      - type: va_list
+  - name: vsnprintf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: char * __restrict
+      - type: size_t
+      - type: const char * __restrict
+      - type: va_list
+  - name: vfprintf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE * __restrict
+      - type: const char * __restrict
+      - type: va_list
+  - name: vprintf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char * __restrict
+      - type: va_list
+  - name: sscanf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char * __restrict
+      - type: const char * __restrict
+      - type: ...
+  - name: scanf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char * __restrict
+      - type: ...
+  - name: fscanf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE * __restrict
+      - type: const char * __restrict
+      - type: ... 
+  - name: fileno
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: clearerr
+    standards: 
+      - stdc
+    return_type: void
+    arguments:
+      - type: FILE *
+  - name: clearerr_unlocked
+    standards: 
+      - GNUExtensions
+    return_type: void
+    arguments:
+      - type: FILE *
+  - name: fclose
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: flockfile
+    standards: 
+      - POSIX 
+    return_type: void
+    arguments:
+      - type: FILE *
+  - name: feof
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: feof_unlocked
+    standards: 
+      - GNUExtensions
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: ferror
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: ferror_unlocked
+    standards: 
+      - GNUExtensions
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: fgetc
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: fgetc_unlocked
+    standards: 
+      - GNUExtensions
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: fgets
+    standards: 
+      - stdc 
+    return_type: char *
+    arguments:
+      - type: char * __restrict
+      - type: int
+      - type: FILE * __restrict
+  - name: fflush
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: fopen
+    standards: 
+      - stdc 
+    return_type: FILE *
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: fputc
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+      - type: FILE *
+  - name: fputs
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char * __restrict
+      - type: FILE * __restrict
+  - name: fopencookie
+    standards: 
+      - GNUExtensions
+    return_type: FILE *
+    arguments:
+      - type: void *
+      - type: const char *
+      - type: cookie_io_functions_t
+  - name: fread
+    standards: 
+      - stdc
+    return_type: size_t
+    arguments:
+      - type: void * __restrict
+      - type: size_t
+      - type: size_t
+      - type: FILE * __restrict
+  - name: fread_unlocked
+    standards: 
+      - GNUExtensions
+    return_type: size_t
+    arguments:
+      - type: void * __restrict
+      - type: size_t
+      - type: size_t
+      - type: FILE * __restrict
+  - name: fseek
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE *
+      - type: long
+      - type: int
+  - name: ftell 
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: FILE *
+  - name: funlockfile
+    standards: 
+      - POSIX
+    return_type: void
+    arguments:
+      - type: FILE *
+  - name: fwrite
+    standards: 
+      - stdc
+    return_type: size_t
+    arguments:
+      - type: const void * __restrict
+      - type: size_t
+      - type: size_t
+      - type: FILE * __restrict
+  - name: fwrite_unlocked
+    standards: 
+      - GNUExtensions
+    return_type: size_t
+    arguments:
+      - type: const void * __restrict
+      - type: size_t
+      - type: size_t
+      - type: FILE * __restrict
+  - name: getc
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: getc_unlocked
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: FILE *
+  - name: getchar
+    standards: 
+      - stdc
+    return_type: int
+    arguments: []
+  - name: getchar_unlocked
+    standards: 
+      - POSIX
+    return_type: int
+    arguments: []
+  - name: putc
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+      - type: FILE *
+  - name: putchar
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: puts
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char *
+  - name: setbuf
+    standards: 
+      - stdc
+    return_type: void
+    arguments:
+      - type: FILE * __restrict
+      - type: char * __restrict
+  - name: setvbuf
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: FILE * __restrict
+      - type: char * __restrict
+      - type: int
+      - type: size_t
+  - name: ungetc
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+      - type: FILE *
+  - name: stderr
+    standards: 
+      - stdc
+    return_type: extern FILE *
+    arguments: []
+  - name: stdin
+    standards: 
+      - stdc
+    return_type: extern FILE *
+    arguments: []
+  - name: stdout
+    standards: 
+      - stdc 
+    return_type: extern FILE *
+    arguments: []

diff  --git a/libc/newhdrgen/yaml_combined/stdlib.yaml b/libc/newhdrgen/yaml_combined/stdlib.yaml
new file mode 100644
index 0000000000000..032b47f8291e6
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/stdlib.yaml
@@ -0,0 +1,273 @@
+header: stdlib.h
+standards: 
+      - stdc
+macros: []
+types:
+  - type_name: __atexithandler_t
+  - type_name: __qsortrcompare_t
+  - type_name: __qsortcompare_t
+  - type_name: __bsearchcompare_t
+  - type_name: size_t
+  - type_name: lldiv_t
+  - type_name: ldiv_t
+  - type_name: div_t
+enums: []
+objects: []
+functions:
+  - name: abs
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: int
+  - name: atoi
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char *
+  - name: atof
+    standards: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: const char * __restrict
+  - 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: 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: 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: rand
+    standards: 
+      - stdc
+    return_type: int
+    arguments: []
+  - 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: malloc
+    standards: 
+      - stdc
+    return_type: void *
+    arguments:
+      - type: size_t
+  - name: calloc
+    standards: 
+      - stdc
+    return_type: void *
+    arguments:
+      - type: size_t
+      - type: size_t
+  - name: realloc
+    standards: 
+      - stdc
+    return_type: void *
+    arguments:
+      - type: void *
+      - type: size_t
+  - name: aligned_alloc
+    standards: 
+      - stdc
+    return_type: void *
+    arguments:
+      - type: size_t
+      - type: size_t
+  - name: free
+    standards: 
+      - stdc
+    return_type: void
+    arguments:
+      - type: void *
+  - name: _Exit
+    standards: 
+      - stdc
+    return_type: _Noreturn void
+    arguments:
+      - type: int
+  - name: abort
+    standards: 
+      - stdc
+    return_type: _Noreturn void
+    arguments: []
+  - 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: exit
+    standards: 
+      - stdc
+    return_type: _Noreturn void
+    arguments:
+      - type: int
+  - name: getenv
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: const char *
+  - name: quick_exit
+    standards: 
+      - stdc
+    return_type: _Noreturn void
+    arguments:
+      - type: int

diff  --git a/libc/newhdrgen/yaml_combined/string.yaml b/libc/newhdrgen/yaml_combined/string.yaml
new file mode 100644
index 0000000000000..7080a9b7cb3a7
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/string.yaml
@@ -0,0 +1,302 @@
+header: string.h
+macros: []
+types:
+  - type_name: size_t
+enums: []
+objects: []
+functions:
+  - name: memcpy
+    standards: 
+      - stdc
+    return_type: void *
+    arguments:
+      - type: void *__restrict
+      - type: const void *__restrict
+      - type: size_t
+  - name: memmove
+    standards: 
+      - stdc
+    return_type: void *
+    arguments:
+      - type: void *
+      - type: const void *
+      - type: size_t
+  - name: memcmp
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const void *
+      - type: const void *
+      - type: size_t
+  - name: memchr
+    standards: 
+      - stdc
+    return_type: void *
+    arguments:
+      - type: const void *
+      - type: int
+      - type: size_t
+  - name: memset
+    standards: 
+      - stdc
+    return_type: void *
+    arguments:
+      - type: void *
+      - type: int
+      - type: size_t
+  - name: memset_explicit
+    standards: 
+      - stdc
+    return_type: void *
+    arguments:
+      - type: void *
+      - type: int
+      - type: size_t
+  - name: strcpy
+    standards: 
+      - stdc
+    return_type: char
+    arguments:
+      - type: char *__restrict
+      - type: const char *__restrict
+  - name: strncpy
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: char *__restrict
+      - type: const char *__restrict
+      - type: size_t
+  - name: strcat
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: char *__restrict
+      - type: const char *__restrict
+  - name: strncat
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: char *
+      - type: const char *
+      - type: size_t
+  - name: strcmp
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: strcoll
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: strncmp
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: const char *
+      - type: const char *
+      - type: size_t
+  - name: strxfrm
+    standards: 
+      - stdc
+    return_type: size_t
+    arguments:
+      - type: char *__restrict
+      - type: const char *__restrict
+      - type: size_t
+  - name: strchr
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: const char *
+      - type: int
+  - name: strcspn
+    standards: 
+      - stdc
+    return_type: size_t
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: strdup
+    return_type: char *
+    arguments:
+      - type: const char *
+  - name: strndup
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: const char *
+      - type: size_t
+  - name: strpbrk
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: strrchr
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: const char *
+      - type: int
+  - name: strspn
+    standards: 
+      - stdc
+    return_type: size_t
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: strstr
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: strtok
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: char *__restrict
+      - type: const char *__restrict
+  - name: strerror
+    standards: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: int
+  - name: strlen
+    standards: 
+      - stdc
+    return_type: size_t
+    arguments:
+      - type: const char *
+  - name: memccpy
+    standards: 
+      - POSIX
+    return_type: void *
+    arguments:
+      - type: void *__restrict
+      - type: const void *__restrict
+      - type: int
+      - type: size_t
+  - name: mempcpy
+    standards: 
+      - POSIX
+    return_type: void *
+    arguments:
+      - type: void *__restrict
+      - type: const void *__restrict
+      - type: size_t
+  - name: stpcpy
+    standards: 
+      - POSIX
+    return_type: char *
+    arguments:
+      - type: char *__restrict
+      - type: const char *__restrict
+  - name: stpncpy
+    standards: 
+      - POSIX
+    return_type: char *
+    arguments:
+      - type: char *__restrict
+      - type: const char *__restrict
+      - type: size_t
+  - name: strnlen
+    standards: 
+      - POSIX
+    return_type: size_t
+    arguments:
+      - type: const char *
+      - type: size_t
+  - name: strtok_r
+    standards: 
+      - POSIX
+    return_type: char *
+    arguments:
+      - type: char *__restrict
+      - type: const char *__restrict
+      - type: char ** __restrict
+  - name: strsignal
+    standards: 
+      - POSIX
+    return_type: char *
+    arguments:
+      - type: int
+  - name: memmem
+    standards: 
+      - GNUExtensions
+    return_type: void *
+    arguments:
+      - type: const void *
+      - type: size_t
+      - type: const void *
+      - type: size_t
+  - name: memrchr
+    standards: 
+      - GNUExtensions
+    return_type: void *
+    arguments:
+      - type: const void *
+      - type: int
+      - type: size_t
+  - name: strerror_r
+    standards: 
+      - GNUExtensions
+    return_type: char *
+    arguments:
+      - type: int
+      - type: char *
+      - type: size_t
+  - name: strcasestr
+    standards: 
+      - GNUExtensions
+    return_type: char *
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: strchrnul
+    standards: 
+      - GNUExtensions
+    return_type: char *
+    arguments:
+      - type: const char *
+      - type: int
+  - name: strlcat
+    standards: 
+      - BSDExtensions
+    return_type: size_t
+    arguments:
+      - type: char *__restrict
+      - type: char *__restrict
+      - type: size_t
+  - name: strlcpy
+    standards: 
+      - BSDExtensions
+    return_type: size_t
+    arguments:
+      - type: char *__restrict
+      - type: char *__restrict
+      - type: size_t
+  - name: strsep
+    standards: 
+      - BSDExtensions
+    return_type: char *
+    arguments:
+      - type: char **__restrict
+      - type: char *__restrict

diff  --git a/libc/newhdrgen/yaml_combined/strings.yaml b/libc/newhdrgen/yaml_combined/strings.yaml
new file mode 100644
index 0000000000000..3bc0c4a76dd1b
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/strings.yaml
@@ -0,0 +1,58 @@
+header: strings.h
+macros: []
+types: []
+enums: []
+objects: []
+functions:
+  - name: bcopy
+    standards: 
+      - llvm_libc_ext
+    return_type: void
+    arguments:
+      - type: const void *
+      - type: void *
+      - type: size_t
+  - name: bzero
+    standards: 
+      - llvm_libc_ext
+    return_type: void
+    arguments:
+      - type: void *
+      - type: size_t
+  - name: bcmp
+    standards: 
+      - llvm_libc_ext
+    return_type: int
+    arguments:
+      - type: const void *
+      - type: const void *
+      - type: size_t
+  - name: strcasecmp
+    standards: 
+      - BSDExtensions
+    return_type: int
+    arguments:
+      - type: const char *
+      - type: const char *
+  - name: strncasecmp
+    standards: 
+      - BSDExtensions
+    return_type: int
+    arguments:
+      - type: const char *
+      - type: const char *
+      - type: size_t
+  - name: index
+    standards: 
+      - BSDExtensions
+    return_type: char *
+    arguments:
+      - type: const char *
+      - type: int
+  - name: rindex
+    standards: 
+      - BSDExtensions
+    return_type: char *
+    arguments:
+      - type: const char *
+      - type: int

diff  --git a/libc/newhdrgen/yaml_combined/sys_mman.yaml b/libc/newhdrgen/yaml_combined/sys_mman.yaml
new file mode 100644
index 0000000000000..7b858db2de11a
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/sys_mman.yaml
@@ -0,0 +1,118 @@
+#known as sys/mman in POSIX 
+header: sys-mman.h
+standards: POSIX
+macros: []
+macros: []
+types:
+  - type_name: mode_t
+  - type_name: size_t
+  - type_name: off_t
+enums: []
+objects: []
+functions:
+  - name: madvise
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: void *
+      - type: size_t
+      - type: int
+  - name: mmap
+    standards: 
+      - POSIX
+    return_type: void *
+    arguments:
+      - type: void *
+      - type: size_t
+      - type: int
+      - type: int
+      - type: int
+      - type: off_t
+  - name: mprotect
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: void *
+      - type: size_t
+      - type: int
+  - name: munmap
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: void *
+      - type: size_t
+  - name: POSIX_madvise
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: void *
+      - type: size_t
+      - type: int
+  # this is a linux function
+  - name: mincore
+    standards: 
+      - Linux
+    return_type: int
+    arguments:
+      - type: void *
+      - type: size_t
+      - type: unsigned char *
+  - name: mlock
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: void *
+      - type: size_t
+  - name: mlock2
+    standards: 
+      - Linux
+    return_type: int
+    arguments:
+      - type: void *
+      - type: size_t
+      - type: unsigned int
+  - name: munlock
+    standards: POSIX
+    return_type: int
+    arguments:
+      - type: void *
+      - type: size_t
+  - name: mlockall
+    standards: 
+      -POSIX
+    return_type: int
+    arguments:
+      - type: int
+  - name: munlockall
+    standards: 
+      - POSIX
+    return_type: int
+    arguments: []
+  - name: msync
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: void *
+      - type: size_t
+      - type: int
+  - name: shm_open
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const char *
+      - type: int
+      - type: mode_t
+  - name: shm_unlink
+    standards: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const char *
+      
\ No newline at end of file

diff  --git a/libc/newhdrgen/yaml_combined/sys_wait.yaml b/libc/newhdrgen/yaml_combined/sys_wait.yaml
new file mode 100644
index 0000000000000..56a6066e925d6
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/sys_wait.yaml
@@ -0,0 +1,33 @@
+header: sys-wait.h #sys/wait.h
+macros: []
+types:
+  - type_name: siginfo_t
+  - type_name: struct_rusage
+  - type_name: pid_t
+enums: []
+objects: []
+functions:
+  - name: wait
+    standards: 
+      - POSIX
+    return_type: pid_t
+    arguments:
+      - type: int *
+  - name: wait4
+    standards: 
+      - BSDExtensions
+      - POSIX 
+    return_type: pid_t
+    arguments:
+      - type: pid_t
+      - type: int *
+      - type: int
+      - type: struct rusage *
+  - name: waitpid
+    standards: 
+      - POSIX
+    return_type: pid_t
+    arguments:
+      - type: pid_t
+      - type: int *
+      - type: int

diff  --git a/libc/newhdrgen/yaml_combined/time.yaml b/libc/newhdrgen/yaml_combined/time.yaml
new file mode 100644
index 0000000000000..fbdf187792484
--- /dev/null
+++ b/libc/newhdrgen/yaml_combined/time.yaml
@@ -0,0 +1,83 @@
+header: time.h
+macros: []
+types:
+  - type_name: struct_timeval
+  - type_name: clockid_t
+  - type_name: struct_timespec
+  - type_name: struct_tm
+  - type_name: time_t
+  - type_name: clock_t
+enums: []
+objects: []
+functions:
+  - name: asctime
+    standard:
+      - stdc
+    return_type: char *
+    arguments:
+      - type: struct tm *
+  - name: asctime_r
+    standard: 
+      - stdc
+    return_type: char *
+    arguments:
+      - type: struct tm *
+      - type: char *
+  - name: clock_gettime
+    standard: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: clockid_t
+      - type: struct timespec *
+  - name: clock
+    standard: 
+      - stdc
+    return_type: clock_t
+    arguments: []
+  - name: 
diff time
+    standard: 
+      - stdc
+    return_type: double
+    arguments:
+      - type: time_t
+      - type: time_t
+  - name: gettimeofday
+    standard: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: struct timeval *
+      - type: void *
+  - name: gmtime
+    standard: 
+      - stdc
+    return_type: struct tm *
+    arguments:
+      - type: time_t *
+  - name: gmtime_r
+    standard: 
+      - stdc
+    return_type: struct tm *
+    arguments:
+      - type: time_t *
+      - type: struct tm *
+  - name: mktime
+    standard: 
+      - stdc
+    return_type: time_t
+    arguments:
+      - type: struct tm *
+  - name: nanosleep
+    standard: 
+      - POSIX
+    return_type: int
+    arguments:
+      - type: const struct timespec *
+      - type: struct timespec *
+  - name: time
+    standard: 
+      - stdc
+    return_type: time_t
+    arguments:
+      - type: time_t *

diff  --git a/libc/newhdrgen/yaml_to_classes.py b/libc/newhdrgen/yaml_to_classes.py
index 1ac448485294a..7159dd9cc8881 100644
--- a/libc/newhdrgen/yaml_to_classes.py
+++ b/libc/newhdrgen/yaml_to_classes.py
@@ -47,23 +47,27 @@ def yaml_to_classes(yaml_data):
             Enumeration(enum_data["name"], enum_data.get("value", None))
         )
 
-    for object_data in yaml_data.get("objects", []):
-        header.add_object(
-            Object(object_data["object_name"], object_data["object_type"])
-        )
-
     for function_data in yaml_data.get("functions", []):
         arguments = [arg["type"] for arg in function_data["arguments"]]
+        guard = function_data.get("guard", None)
+        attributes = function_data.get("attributes", None)
+        standards = (function_data.get("standards", None),)
         header.add_function(
             Function(
+                standards,
                 function_data["return_type"],
                 function_data["name"],
                 arguments,
-                function_data.get("guard"),
-                function_data.get("attributes", []),
+                guard,
+                attributes,
             )
         )
 
+    for object_data in yaml_data.get("objects", []):
+        header.add_object(
+            Object(object_data["object_name"], object_data["object_type"])
+        )
+
     for include_data in yaml_data.get("includes", []):
         header.add_include(Include(include_data))
 


        


More information about the libc-commits mailing list