259 lines
5.4 KiB
TableGen
259 lines
5.4 KiB
TableGen
include "config/public_api.td"
|
|
|
|
include "spec/bsd_ext.td"
|
|
include "spec/gnu_ext.td"
|
|
include "spec/linux.td"
|
|
include "spec/llvm_libc_ext.td"
|
|
include "spec/posix.td"
|
|
include "spec/stdc.td"
|
|
|
|
def AssertMacro : MacroDef<"assert"> {
|
|
let Defn = [{
|
|
#undef assert
|
|
|
|
#ifdef NDEBUG
|
|
#define assert(e) (void)0
|
|
#else
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
#endif
|
|
_Noreturn void __assert_fail(const char *, const char *, unsigned, const char *) __NOEXCEPT;
|
|
|
|
#define assert(e) \
|
|
((e) ? (void)0 : __assert_fail(#e, __FILE__, __LINE__, __PRETTY_FUNCTION__))
|
|
|
|
#endif
|
|
}];
|
|
}
|
|
|
|
def StaticAssertMacro : MacroDef<"static_assert"> {
|
|
let Defn = [{
|
|
#ifndef __cplusplus
|
|
#undef static_assert
|
|
#define static_assert _Static_assert
|
|
#endif
|
|
}];
|
|
}
|
|
|
|
def AssertAPI : PublicAPI<"assert.h"> {
|
|
let Macros = [
|
|
AssertMacro,
|
|
StaticAssertMacro,
|
|
];
|
|
}
|
|
|
|
def CTypeAPI : PublicAPI<"ctype.h"> {
|
|
}
|
|
|
|
def FCntlAPI : PublicAPI<"fcntl.h"> {
|
|
let Types = ["mode_t"];
|
|
}
|
|
|
|
def IntTypesAPI : PublicAPI<"inttypes.h"> {
|
|
let Types = ["imaxdiv_t"];
|
|
}
|
|
|
|
def MathAPI : PublicAPI<"math.h"> {
|
|
let Types = ["double_t", "float_t"];
|
|
}
|
|
|
|
def FenvAPI: PublicAPI<"fenv.h"> {
|
|
let Types = ["fenv_t", "fexcept_t"];
|
|
}
|
|
|
|
def StringAPI : PublicAPI<"string.h"> {
|
|
let Types = ["size_t"];
|
|
}
|
|
|
|
def StdIOAPI : PublicAPI<"stdio.h"> {
|
|
let Macros = [
|
|
SimpleMacroDef<"stderr", "stderr">,
|
|
SimpleMacroDef<"stdin", "stdin">,
|
|
SimpleMacroDef<"stdout", "stdout">,
|
|
SimpleMacroDef<"_IOFBF", "0">,
|
|
SimpleMacroDef<"_IOLBF", "1">,
|
|
SimpleMacroDef<"_IONBF", "2">,
|
|
SimpleMacroDef<"EOF", "-1">,
|
|
];
|
|
let Types = ["size_t", "FILE", "cookie_io_functions_t"];
|
|
}
|
|
|
|
def StdlibAPI : PublicAPI<"stdlib.h"> {
|
|
let Types = [
|
|
"div_t",
|
|
"ldiv_t",
|
|
"lldiv_t",
|
|
"size_t",
|
|
"__bsearchcompare_t",
|
|
"__qsortcompare_t",
|
|
"__qsortrcompare_t",
|
|
"__atexithandler_t",
|
|
];
|
|
}
|
|
|
|
def TimeAPI : PublicAPI<"time.h"> {
|
|
let Types = [
|
|
"clock_t",
|
|
"time_t",
|
|
"struct tm",
|
|
"struct timespec",
|
|
"struct timeval",
|
|
"clockid_t",
|
|
];
|
|
}
|
|
|
|
def SchedAPI : PublicAPI<"sched.h"> {
|
|
let Types = [
|
|
"pid_t",
|
|
"size_t",
|
|
"cpu_set_t",
|
|
"struct sched_param",
|
|
// Needed according to posix standard
|
|
"time_t",
|
|
"struct timespec",
|
|
];
|
|
}
|
|
|
|
def SysMManAPI : PublicAPI<"sys/mman.h"> {
|
|
let Types = ["off_t", "size_t"];
|
|
}
|
|
|
|
def SignalAPI : PublicAPI<"signal.h"> {
|
|
let Types = [
|
|
"sig_atomic_t",
|
|
"sigset_t",
|
|
"struct sigaction",
|
|
"union sigval",
|
|
"siginfo_t",
|
|
"stack_t",
|
|
"pid_t",
|
|
];
|
|
}
|
|
|
|
def ThreadsAPI : PublicAPI<"threads.h"> {
|
|
let Macros = [
|
|
SimpleMacroDef<"ONCE_FLAG_INIT", "{0}">,
|
|
];
|
|
|
|
let Types = [
|
|
"__call_once_func_t",
|
|
"once_flag",
|
|
"cnd_t",
|
|
"mtx_t",
|
|
"thrd_t",
|
|
"thrd_start_t",
|
|
"tss_t",
|
|
"tss_dtor_t",
|
|
];
|
|
|
|
let Enumerations = [
|
|
"mtx_plain",
|
|
"mtx_recursive",
|
|
"mtx_timed",
|
|
"thrd_timedout",
|
|
"thrd_success",
|
|
"thrd_busy",
|
|
"thrd_error",
|
|
"thrd_nomem",
|
|
];
|
|
}
|
|
|
|
def PThreadAPI : PublicAPI<"pthread.h"> {
|
|
let Types = [
|
|
"__atfork_callback_t",
|
|
"__pthread_once_func_t",
|
|
"__pthread_start_t",
|
|
"__pthread_tss_dtor_t",
|
|
"pthread_attr_t",
|
|
"pthread_mutex_t",
|
|
"pthread_mutexattr_t",
|
|
"pthread_t",
|
|
"pthread_key_t",
|
|
"pthread_once_t",
|
|
];
|
|
}
|
|
|
|
def DirentAPI : PublicAPI<"dirent.h"> {
|
|
let Types = [
|
|
"ino_t",
|
|
"DIR",
|
|
"struct dirent",
|
|
];
|
|
}
|
|
|
|
def UniStdAPI : PublicAPI<"unistd.h"> {
|
|
let Types = ["__exec_argv_t", "__exec_envp_t", "off_t", "pid_t", "size_t",
|
|
"ssize_t", "uid_t", "__getoptargv_t"];
|
|
}
|
|
|
|
def WCharAPI : PublicAPI<"wchar.h"> {
|
|
let Types = [
|
|
"wchar_t",
|
|
"wint_t",
|
|
"size_t",
|
|
];
|
|
}
|
|
|
|
def SysRandomAPI : PublicAPI<"sys/random.h"> {
|
|
let Types = ["size_t", "ssize_t"];
|
|
}
|
|
|
|
def SysSelectAPI : PublicAPI<"sys/select.h"> {
|
|
let Types = ["fd_set", "sigset_t", "suseconds_t", "time_t", "struct timespec",
|
|
"struct timeval"];
|
|
}
|
|
|
|
def SysSocketAPI : PublicAPI<"sys/socket.h"> {
|
|
let Types = [
|
|
"sa_family_t",
|
|
"socklen_t",
|
|
"struct sockaddr",
|
|
"struct sockaddr_un",
|
|
];
|
|
}
|
|
|
|
def SysResourceAPI : PublicAPI<"sys/resource.h"> {
|
|
let Types = ["rlim_t", "struct rlimit"];
|
|
}
|
|
|
|
def SysStatAPI : PublicAPI<"sys/stat.h"> {
|
|
let Types = ["mode_t", "dev_t", "ino_t", "nlink_t", "uid_t", "gid_t", "off_t",
|
|
"struct timespec", "struct timeval", "blksize_t", "blkcnt_t",
|
|
"struct stat"];
|
|
}
|
|
|
|
def SysWaitAPI : PublicAPI<"sys/wait.h"> {
|
|
let Types = ["pid_t", "struct rusage", "siginfo_t"];
|
|
}
|
|
|
|
def SysSendfileAPI : PublicAPI<"sys/sendfile.h"> {
|
|
let Types = ["off_t", "size_t", "ssize_t"];
|
|
}
|
|
|
|
def SysTypesAPI : PublicAPI<"sys/types.h"> {
|
|
let Types = ["blkcnt_t", "blksize_t", "clockid_t", "dev_t", "gid_t", "ino_t",
|
|
"mode_t", "nlink_t", "off_t", "pid_t", "pthread_attr_t", "pthread_key_t",
|
|
"pthread_mutex_t", "pthread_mutexattr_t", "pthread_once_t", "pthread_t",
|
|
"size_t", "ssize_t", "suseconds_t", "time_t", "uid_t"];
|
|
}
|
|
|
|
def SysUtsNameAPI : PublicAPI<"sys/utsname.h"> {
|
|
let Types = ["struct utsname"];
|
|
}
|
|
|
|
def SpawnAPI : PublicAPI<"spawn.h"> {
|
|
let Types = ["mode_t", "pid_t", "posix_spawnattr_t", "posix_spawn_file_actions_t"];
|
|
}
|
|
|
|
def TermiosAPI : PublicAPI<"termios.h"> {
|
|
let Types = ["cc_t", "pid_t", "speed_t", "struct termios", "tcflag_t"];
|
|
}
|
|
|
|
def SetJmpAPI : PublicAPI<"setjmp.h"> {
|
|
let Types = ["jmp_buf"];
|
|
}
|
|
|
|
def SearchAPI : PublicAPI<"search.h"> {
|
|
let Types = ["ACTION", "ENTRY", "struct hsearch_data"];
|
|
}
|