xref: /llvm-project-15.0.7/libc/spec/gnu_ext.td (revision 9db0037b)
1def GnuExtensions : StandardSpec<"GNUExtensions"> {
2  NamedType CookieIOFunctionsT = NamedType<"cookie_io_functions_t">;
3  HeaderSpec CType = HeaderSpec<
4    "ctype.h",
5    [], // Macros
6    [], // Types
7    [], // Enumerations
8    [
9        FunctionSpec<
10            "toascii",
11            RetValSpec<IntType>,
12            [ArgSpec<IntType>]
13        >,
14    ]
15  >;
16
17  HeaderSpec Math = HeaderSpec<
18      "math.h",
19      [], // Macros
20      [], // Types
21      [], // Enumerations
22      [
23        FunctionSpec<
24            "sincosf",
25            RetValSpec<VoidType>,
26            [ArgSpec<FloatType>, ArgSpec<FloatPtr>, ArgSpec<FloatPtr>]
27        >,
28      ]
29  >;
30
31  HeaderSpec String = HeaderSpec<
32      "string.h",
33      [], // Macros
34      [], // Types
35      [], // Enumerations
36      [
37        FunctionSpec<
38            "memrchr",
39            RetValSpec<VoidPtr>,
40            [ArgSpec<VoidPtr>, ArgSpec<IntType>, ArgSpec<SizeTType>]
41        >,
42      ]
43  >;
44
45  HeaderSpec FEnv = HeaderSpec<
46      "fenv.h",
47      [], // Macros
48      [], // Types
49      [], // Enumerations
50      [
51        FunctionSpec<
52            "fedisableexcept",
53            RetValSpec<IntType>,
54            [ArgSpec<IntType>]
55        >,
56        FunctionSpec<
57            "feenableexcept",
58            RetValSpec<IntType>,
59            [ArgSpec<IntType>]
60        >,
61        FunctionSpec<
62            "fegetexcept",
63            RetValSpec<IntType>,
64            []
65        >
66      ]
67  >;
68
69  HeaderSpec StdIO = HeaderSpec<
70      "stdio.h",
71      [], // Macros
72      [CookieIOFunctionsT], // Types
73      [], // Enumerations
74      [
75          FunctionSpec<
76              "clearerr_unlocked",
77              RetValSpec<VoidType>,
78              [ArgSpec<FILEPtr>]
79          >,
80          FunctionSpec<
81              "feof_unlocked",
82              RetValSpec<IntType>,
83              [ArgSpec<FILEPtr>]
84          >,
85          FunctionSpec<
86              "ferror_unlocked",
87              RetValSpec<IntType>,
88              [ArgSpec<FILEPtr>]
89          >,
90          FunctionSpec<
91              "fopencookie",
92              RetValSpec<FILEPtr>,
93              [ArgSpec<VoidPtr>, ArgSpec<ConstCharPtr>, ArgSpec<CookieIOFunctionsT>]
94          >,
95          FunctionSpec<
96              "fread_unlocked",
97              RetValSpec<SizeTType>,
98              [ArgSpec<VoidRestrictedPtr>,
99               ArgSpec<SizeTType>,
100               ArgSpec<SizeTType>,
101               ArgSpec<FILERestrictedPtr>]
102          >,
103          FunctionSpec<
104              "fwrite_unlocked",
105              RetValSpec<SizeTType>,
106              [ArgSpec<ConstVoidRestrictedPtr>,
107               ArgSpec<SizeTType>,
108               ArgSpec<SizeTType>,
109               ArgSpec<FILERestrictedPtr>]
110          >,
111      ]
112  >;
113
114  let Headers = [
115    CType,
116    FEnv,
117    Math,
118    StdIO,
119    String,
120  ];
121}
122