Merge remote-tracking branch 'origin/master' into llvm8
commit
3cdd2c0bdd
1806
CMakeLists.txt
1806
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
|
@ -54,6 +54,8 @@ clarity.
|
|||
branch, and updates ziglang.org/download with links to pre-built binaries.
|
||||
* These targets have debug info capabilities and therefore produce stack
|
||||
traces on failed assertions.
|
||||
* ([coming soon](https://github.com/ziglang/zig/issues/514)) libc is available
|
||||
for this target even when cross compiling.
|
||||
|
||||
#### Tier 2 Support
|
||||
|
||||
|
|
|
@ -20,8 +20,8 @@ pub fn build(b: *Builder) !void {
|
|||
b.allocator,
|
||||
[][]const u8{ b.cache_root, "langref.html" },
|
||||
) catch unreachable;
|
||||
var docgen_cmd = b.addCommand(null, b.env_map, [][]const u8{
|
||||
docgen_exe.getOutputPath(),
|
||||
var docgen_cmd = docgen_exe.run();
|
||||
docgen_cmd.addArgs([][]const u8{
|
||||
rel_zig_exe,
|
||||
"doc" ++ os.path.sep_str ++ "langref.html.in",
|
||||
langref_out_path,
|
||||
|
|
|
@ -1011,8 +1011,10 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
|
|||
zig_exe,
|
||||
"build-exe",
|
||||
tmp_source_file_name,
|
||||
"--output",
|
||||
tmp_bin_file_name,
|
||||
"--output-dir",
|
||||
tmp_dir_name,
|
||||
"--name",
|
||||
code.name,
|
||||
});
|
||||
try out.print("<pre><code class=\"shell\">$ zig build-exe {}.zig", code.name);
|
||||
switch (code.mode) {
|
||||
|
@ -1085,8 +1087,10 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
|
|||
zig_exe,
|
||||
"test",
|
||||
tmp_source_file_name,
|
||||
"--output",
|
||||
test_out_path,
|
||||
"--output-dir",
|
||||
tmp_dir_name,
|
||||
"--cache",
|
||||
"off",
|
||||
});
|
||||
try out.print("<pre><code class=\"shell\">$ zig test {}.zig", code.name);
|
||||
switch (code.mode) {
|
||||
|
@ -1122,8 +1126,10 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
|
|||
"--color",
|
||||
"on",
|
||||
tmp_source_file_name,
|
||||
"--output",
|
||||
test_out_path,
|
||||
"--output-dir",
|
||||
tmp_dir_name,
|
||||
"--cache",
|
||||
"off",
|
||||
});
|
||||
try out.print("<pre><code class=\"shell\">$ zig test {}.zig", code.name);
|
||||
switch (code.mode) {
|
||||
|
@ -1179,8 +1185,10 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
|
|||
zig_exe,
|
||||
"test",
|
||||
tmp_source_file_name,
|
||||
"--output",
|
||||
test_out_path,
|
||||
"--output-dir",
|
||||
tmp_dir_name,
|
||||
"--cache",
|
||||
"off",
|
||||
});
|
||||
switch (code.mode) {
|
||||
builtin.Mode.Debug => {},
|
||||
|
@ -1239,10 +1247,10 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
|
|||
tmp_source_file_name,
|
||||
"--color",
|
||||
"on",
|
||||
"--output",
|
||||
tmp_obj_file_name,
|
||||
"--output-h",
|
||||
output_h_file_name,
|
||||
"--name",
|
||||
code.name,
|
||||
"--output-dir",
|
||||
tmp_dir_name,
|
||||
});
|
||||
|
||||
if (!code.is_inline) {
|
||||
|
|
|
@ -7914,8 +7914,7 @@ pub fn build(b: *Builder) void {
|
|||
|
||||
b.default_step.dependOn(&exe.step);
|
||||
|
||||
const run_cmd = b.addCommand(".", b.env_map, [][]const u8{exe.getOutputPath()});
|
||||
run_cmd.step.dependOn(&exe.step);
|
||||
const run_cmd = exe.run();
|
||||
|
||||
const test_step = b.step("test", "Test the program");
|
||||
test_step.dependOn(&run_cmd.step);
|
||||
|
|
|
@ -4,14 +4,13 @@ pub fn build(b: *Builder) void {
|
|||
const obj = b.addObject("base64", "base64.zig");
|
||||
|
||||
const exe = b.addExecutable("test", null);
|
||||
exe.addCSourceFile("test.c",[][]const u8{"-std=c99"});
|
||||
exe.addCSourceFile("test.c", [][]const u8{"-std=c99"});
|
||||
exe.addObject(obj);
|
||||
exe.linkSystemLibrary("c");
|
||||
|
||||
b.default_step.dependOn(&exe.step);
|
||||
|
||||
const run_cmd = b.addCommand(".", b.env_map, [][]const u8{exe.getOutputPath()});
|
||||
run_cmd.step.dependOn(&exe.step);
|
||||
const run_cmd = exe.run();
|
||||
|
||||
const test_step = b.step("test", "Test the program");
|
||||
test_step.dependOn(&run_cmd.step);
|
||||
|
|
|
@ -10,8 +10,7 @@ pub fn build(b: *Builder) void {
|
|||
|
||||
b.default_step.dependOn(&exe.step);
|
||||
|
||||
const run_cmd = b.addCommand(".", b.env_map, [][]const u8{exe.getOutputPath()});
|
||||
run_cmd.step.dependOn(&exe.step);
|
||||
const run_cmd = exe.run();
|
||||
|
||||
const test_step = b.step("test", "Test the program");
|
||||
test_step.dependOn(&run_cmd.step);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,71 @@
|
|||
export fn @"__x86.get_pc_thunk.bx"() void {}
|
||||
export fn _IO_stderr_() void {}
|
||||
export fn _IO_stdin_() void {}
|
||||
export fn _IO_stdout_() void {}
|
||||
export fn _Unwind_Find_FDE() void {}
|
||||
export fn ___brk_addr() void {}
|
||||
export fn __deregister_frame() void {}
|
||||
export fn __deregister_frame_info() void {}
|
||||
export fn __deregister_frame_info_bases() void {}
|
||||
export fn __divdi3() void {}
|
||||
export fn __frame_state_for() void {}
|
||||
export fn __memcpy_by2() void {}
|
||||
export fn __memcpy_by4() void {}
|
||||
export fn __memcpy_c() void {}
|
||||
export fn __memcpy_g() void {}
|
||||
export fn __mempcpy_by2() void {}
|
||||
export fn __mempcpy_by4() void {}
|
||||
export fn __mempcpy_byn() void {}
|
||||
export fn __memset_cc() void {}
|
||||
export fn __memset_ccn_by2() void {}
|
||||
export fn __memset_ccn_by4() void {}
|
||||
export fn __memset_cg() void {}
|
||||
export fn __memset_gcn_by2() void {}
|
||||
export fn __memset_gcn_by4() void {}
|
||||
export fn __memset_gg() void {}
|
||||
export fn __moddi3() void {}
|
||||
export fn __modify_ldt() void {}
|
||||
export fn __register_frame() void {}
|
||||
export fn __register_frame_info() void {}
|
||||
export fn __register_frame_info_bases() void {}
|
||||
export fn __register_frame_info_table() void {}
|
||||
export fn __register_frame_info_table_bases() void {}
|
||||
export fn __register_frame_table() void {}
|
||||
export fn __stpcpy_g() void {}
|
||||
export fn __strcat_c() void {}
|
||||
export fn __strcat_g() void {}
|
||||
export fn __strchr_c() void {}
|
||||
export fn __strchr_g() void {}
|
||||
export fn __strchrnul_c() void {}
|
||||
export fn __strchrnul_g() void {}
|
||||
export fn __strcmp_gg() void {}
|
||||
export fn __strcpy_g() void {}
|
||||
export fn __strcspn_cg() void {}
|
||||
export fn __strcspn_g() void {}
|
||||
export fn __strlen_g() void {}
|
||||
export fn __strncat_g() void {}
|
||||
export fn __strncmp_g() void {}
|
||||
export fn __strncpy_by2() void {}
|
||||
export fn __strncpy_by4() void {}
|
||||
export fn __strncpy_byn() void {}
|
||||
export fn __strncpy_gg() void {}
|
||||
export fn __strpbrk_cg() void {}
|
||||
export fn __strpbrk_g() void {}
|
||||
export fn __strrchr_c() void {}
|
||||
export fn __strrchr_g() void {}
|
||||
export fn __strspn_cg() void {}
|
||||
export fn __strspn_g() void {}
|
||||
export fn __strstr_cg() void {}
|
||||
export fn __strstr_g() void {}
|
||||
export fn __strtoq_internal() void {}
|
||||
export fn __strtouq_internal() void {}
|
||||
export fn __udivdi3() void {}
|
||||
export fn __umoddi3() void {}
|
||||
export fn __uname() void {}
|
||||
export fn atexit() void {}
|
||||
export fn gettid() void {}
|
||||
export fn res_init() void {}
|
||||
export fn scalbln() void {}
|
||||
export fn scalblnf() void {}
|
||||
export fn scalblnl() void {}
|
||||
export fn vm86() void {}
|
|
@ -0,0 +1,2 @@
|
|||
export fn arch_prctl() void {}
|
||||
export fn __arch_prctl() void {}
|
|
@ -0,0 +1,14 @@
|
|||
// This file exists to create a libdl.so file so that LLD has something to look at
|
||||
// and emit linker errors if an attempt to link against a non-existent C symbol happens.
|
||||
|
||||
export fn __libdl_freeres() void {}
|
||||
export fn _dlfcn_hook() void {}
|
||||
export fn dladdr() void {}
|
||||
export fn dladdr1() void {}
|
||||
export fn dlclose() void {}
|
||||
export fn dlerror() void {}
|
||||
export fn dlinfo() void {}
|
||||
export fn dlmopen() void {}
|
||||
export fn dlopen() void {}
|
||||
export fn dlsym() void {}
|
||||
export fn dlvsym() void {}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,258 @@
|
|||
// This file exists to create a libpthread.so file so that LLD has something to look at
|
||||
// and emit linker errors if an attempt to link against a non-existent C symbol happens.
|
||||
|
||||
export fn _IO_flockfile() void {}
|
||||
export fn _IO_ftrylockfile() void {}
|
||||
export fn _IO_funlockfile() void {}
|
||||
export fn __close() void {}
|
||||
export fn __connect() void {}
|
||||
export fn __errno_location() void {}
|
||||
export fn __fcntl() void {}
|
||||
export fn __fork() void {}
|
||||
export fn __h_errno_location() void {}
|
||||
export fn __libc_allocate_rtsig() void {}
|
||||
export fn __libc_current_sigrtmax() void {}
|
||||
export fn __libc_current_sigrtmin() void {}
|
||||
export fn __libpthread_freeres() void {}
|
||||
export fn __lseek() void {}
|
||||
export fn __nanosleep() void {}
|
||||
export fn __open() void {}
|
||||
export fn __open64() void {}
|
||||
export fn __pread64() void {}
|
||||
export fn __pthread_barrier_init() void {}
|
||||
export fn __pthread_barrier_wait() void {}
|
||||
export fn __pthread_cleanup_routine() void {}
|
||||
export fn __pthread_clock_gettime() void {}
|
||||
export fn __pthread_clock_settime() void {}
|
||||
export fn __pthread_get_minstack() void {}
|
||||
export fn __pthread_getspecific() void {}
|
||||
export fn __pthread_initialize_minimal() void {}
|
||||
export fn __pthread_key_create() void {}
|
||||
export fn __pthread_mutex_destroy() void {}
|
||||
export fn __pthread_mutex_init() void {}
|
||||
export fn __pthread_mutex_lock() void {}
|
||||
export fn __pthread_mutex_trylock() void {}
|
||||
export fn __pthread_mutex_unlock() void {}
|
||||
export fn __pthread_mutexattr_destroy() void {}
|
||||
export fn __pthread_mutexattr_init() void {}
|
||||
export fn __pthread_mutexattr_settype() void {}
|
||||
export fn __pthread_once() void {}
|
||||
export fn __pthread_register_cancel() void {}
|
||||
export fn __pthread_register_cancel_defer() void {}
|
||||
export fn __pthread_rwlock_destroy() void {}
|
||||
export fn __pthread_rwlock_init() void {}
|
||||
export fn __pthread_rwlock_rdlock() void {}
|
||||
export fn __pthread_rwlock_tryrdlock() void {}
|
||||
export fn __pthread_rwlock_trywrlock() void {}
|
||||
export fn __pthread_rwlock_unlock() void {}
|
||||
export fn __pthread_rwlock_wrlock() void {}
|
||||
export fn __pthread_setspecific() void {}
|
||||
export fn __pthread_unregister_cancel() void {}
|
||||
export fn __pthread_unregister_cancel_restore() void {}
|
||||
export fn __pthread_unwind() void {}
|
||||
export fn __pthread_unwind_next() void {}
|
||||
export fn __pwrite64() void {}
|
||||
export fn __read() void {}
|
||||
export fn __res_state() void {}
|
||||
export fn __send() void {}
|
||||
export fn __shm_directory() void {}
|
||||
export fn __sigaction() void {}
|
||||
export fn __vfork() void {}
|
||||
export fn __wait() void {}
|
||||
export fn __write() void {}
|
||||
export fn _pthread_cleanup_pop() void {}
|
||||
export fn _pthread_cleanup_pop_restore() void {}
|
||||
export fn _pthread_cleanup_push() void {}
|
||||
export fn _pthread_cleanup_push_defer() void {}
|
||||
export fn accept() void {}
|
||||
export fn call_once() void {}
|
||||
export fn close() void {}
|
||||
export fn cnd_broadcast() void {}
|
||||
export fn cnd_destroy() void {}
|
||||
export fn cnd_init() void {}
|
||||
export fn cnd_signal() void {}
|
||||
export fn cnd_timedwait() void {}
|
||||
export fn cnd_wait() void {}
|
||||
export fn connect() void {}
|
||||
export fn fcntl() void {}
|
||||
export fn flockfile() void {}
|
||||
export fn fork() void {}
|
||||
export fn fsync() void {}
|
||||
export fn ftrylockfile() void {}
|
||||
export fn funlockfile() void {}
|
||||
export fn longjmp() void {}
|
||||
export fn lseek() void {}
|
||||
export fn lseek64() void {}
|
||||
export fn msync() void {}
|
||||
export fn mtx_destroy() void {}
|
||||
export fn mtx_init() void {}
|
||||
export fn mtx_lock() void {}
|
||||
export fn mtx_timedlock() void {}
|
||||
export fn mtx_trylock() void {}
|
||||
export fn mtx_unlock() void {}
|
||||
export fn nanosleep() void {}
|
||||
export fn open() void {}
|
||||
export fn open64() void {}
|
||||
export fn pause() void {}
|
||||
export fn pread() void {}
|
||||
export fn pread64() void {}
|
||||
export fn pthread_atfork() void {}
|
||||
export fn pthread_attr_destroy() void {}
|
||||
export fn pthread_attr_getaffinity_np() void {}
|
||||
export fn pthread_attr_getdetachstate() void {}
|
||||
export fn pthread_attr_getguardsize() void {}
|
||||
export fn pthread_attr_getinheritsched() void {}
|
||||
export fn pthread_attr_getschedparam() void {}
|
||||
export fn pthread_attr_getschedpolicy() void {}
|
||||
export fn pthread_attr_getscope() void {}
|
||||
export fn pthread_attr_getstack() void {}
|
||||
export fn pthread_attr_getstackaddr() void {}
|
||||
export fn pthread_attr_getstacksize() void {}
|
||||
export fn pthread_attr_init() void {}
|
||||
export fn pthread_attr_setaffinity_np() void {}
|
||||
export fn pthread_attr_setdetachstate() void {}
|
||||
export fn pthread_attr_setguardsize() void {}
|
||||
export fn pthread_attr_setinheritsched() void {}
|
||||
export fn pthread_attr_setschedparam() void {}
|
||||
export fn pthread_attr_setschedpolicy() void {}
|
||||
export fn pthread_attr_setscope() void {}
|
||||
export fn pthread_attr_setstack() void {}
|
||||
export fn pthread_attr_setstackaddr() void {}
|
||||
export fn pthread_attr_setstacksize() void {}
|
||||
export fn pthread_barrier_destroy() void {}
|
||||
export fn pthread_barrier_init() void {}
|
||||
export fn pthread_barrier_wait() void {}
|
||||
export fn pthread_barrierattr_destroy() void {}
|
||||
export fn pthread_barrierattr_getpshared() void {}
|
||||
export fn pthread_barrierattr_init() void {}
|
||||
export fn pthread_barrierattr_setpshared() void {}
|
||||
export fn pthread_cancel() void {}
|
||||
export fn pthread_cond_broadcast() void {}
|
||||
export fn pthread_cond_destroy() void {}
|
||||
export fn pthread_cond_init() void {}
|
||||
export fn pthread_cond_signal() void {}
|
||||
export fn pthread_cond_timedwait() void {}
|
||||
export fn pthread_cond_wait() void {}
|
||||
export fn pthread_condattr_destroy() void {}
|
||||
export fn pthread_condattr_getclock() void {}
|
||||
export fn pthread_condattr_getpshared() void {}
|
||||
export fn pthread_condattr_init() void {}
|
||||
export fn pthread_condattr_setclock() void {}
|
||||
export fn pthread_condattr_setpshared() void {}
|
||||
export fn pthread_create() void {}
|
||||
export fn pthread_detach() void {}
|
||||
export fn pthread_equal() void {}
|
||||
export fn pthread_exit() void {}
|
||||
export fn pthread_getaffinity_np() void {}
|
||||
export fn pthread_getattr_default_np() void {}
|
||||
export fn pthread_getattr_np() void {}
|
||||
export fn pthread_getconcurrency() void {}
|
||||
export fn pthread_getcpuclockid() void {}
|
||||
export fn pthread_getname_np() void {}
|
||||
export fn pthread_getschedparam() void {}
|
||||
export fn pthread_getspecific() void {}
|
||||
export fn pthread_join() void {}
|
||||
export fn pthread_key_create() void {}
|
||||
export fn pthread_key_delete() void {}
|
||||
export fn pthread_kill() void {}
|
||||
export fn pthread_kill_other_threads_np() void {}
|
||||
export fn pthread_mutex_consistent() void {}
|
||||
export fn pthread_mutex_consistent_np() void {}
|
||||
export fn pthread_mutex_destroy() void {}
|
||||
export fn pthread_mutex_getprioceiling() void {}
|
||||
export fn pthread_mutex_init() void {}
|
||||
export fn pthread_mutex_lock() void {}
|
||||
export fn pthread_mutex_setprioceiling() void {}
|
||||
export fn pthread_mutex_timedlock() void {}
|
||||
export fn pthread_mutex_trylock() void {}
|
||||
export fn pthread_mutex_unlock() void {}
|
||||
export fn pthread_mutexattr_destroy() void {}
|
||||
export fn pthread_mutexattr_getkind_np() void {}
|
||||
export fn pthread_mutexattr_getprioceiling() void {}
|
||||
export fn pthread_mutexattr_getprotocol() void {}
|
||||
export fn pthread_mutexattr_getpshared() void {}
|
||||
export fn pthread_mutexattr_getrobust() void {}
|
||||
export fn pthread_mutexattr_getrobust_np() void {}
|
||||
export fn pthread_mutexattr_gettype() void {}
|
||||
export fn pthread_mutexattr_init() void {}
|
||||
export fn pthread_mutexattr_setkind_np() void {}
|
||||
export fn pthread_mutexattr_setprioceiling() void {}
|
||||
export fn pthread_mutexattr_setprotocol() void {}
|
||||
export fn pthread_mutexattr_setpshared() void {}
|
||||
export fn pthread_mutexattr_setrobust() void {}
|
||||
export fn pthread_mutexattr_setrobust_np() void {}
|
||||
export fn pthread_mutexattr_settype() void {}
|
||||
export fn pthread_once() void {}
|
||||
export fn pthread_rwlock_destroy() void {}
|
||||
export fn pthread_rwlock_init() void {}
|
||||
export fn pthread_rwlock_rdlock() void {}
|
||||
export fn pthread_rwlock_timedrdlock() void {}
|
||||
export fn pthread_rwlock_timedwrlock() void {}
|
||||
export fn pthread_rwlock_tryrdlock() void {}
|
||||
export fn pthread_rwlock_trywrlock() void {}
|
||||
export fn pthread_rwlock_unlock() void {}
|
||||
export fn pthread_rwlock_wrlock() void {}
|
||||
export fn pthread_rwlockattr_destroy() void {}
|
||||
export fn pthread_rwlockattr_getkind_np() void {}
|
||||
export fn pthread_rwlockattr_getpshared() void {}
|
||||
export fn pthread_rwlockattr_init() void {}
|
||||
export fn pthread_rwlockattr_setkind_np() void {}
|
||||
export fn pthread_rwlockattr_setpshared() void {}
|
||||
export fn pthread_self() void {}
|
||||
export fn pthread_setaffinity_np() void {}
|
||||
export fn pthread_setattr_default_np() void {}
|
||||
export fn pthread_setcancelstate() void {}
|
||||
export fn pthread_setcanceltype() void {}
|
||||
export fn pthread_setconcurrency() void {}
|
||||
export fn pthread_setname_np() void {}
|
||||
export fn pthread_setschedparam() void {}
|
||||
export fn pthread_setschedprio() void {}
|
||||
export fn pthread_setspecific() void {}
|
||||
export fn pthread_sigmask() void {}
|
||||
export fn pthread_sigqueue() void {}
|
||||
export fn pthread_spin_destroy() void {}
|
||||
export fn pthread_spin_init() void {}
|
||||
export fn pthread_spin_lock() void {}
|
||||
export fn pthread_spin_trylock() void {}
|
||||
export fn pthread_spin_unlock() void {}
|
||||
export fn pthread_testcancel() void {}
|
||||
export fn pthread_timedjoin_np() void {}
|
||||
export fn pthread_tryjoin_np() void {}
|
||||
export fn pthread_yield() void {}
|
||||
export fn pwrite() void {}
|
||||
export fn pwrite64() void {}
|
||||
export fn raise() void {}
|
||||
export fn read() void {}
|
||||
export fn recv() void {}
|
||||
export fn recvfrom() void {}
|
||||
export fn recvmsg() void {}
|
||||
export fn sem_close() void {}
|
||||
export fn sem_destroy() void {}
|
||||
export fn sem_getvalue() void {}
|
||||
export fn sem_init() void {}
|
||||
export fn sem_open() void {}
|
||||
export fn sem_post() void {}
|
||||
export fn sem_timedwait() void {}
|
||||
export fn sem_trywait() void {}
|
||||
export fn sem_unlink() void {}
|
||||
export fn sem_wait() void {}
|
||||
export fn send() void {}
|
||||
export fn sendmsg() void {}
|
||||
export fn sendto() void {}
|
||||
export fn sigaction() void {}
|
||||
export fn siglongjmp() void {}
|
||||
export fn sigwait() void {}
|
||||
export fn system() void {}
|
||||
export fn tcdrain() void {}
|
||||
export fn thrd_create() void {}
|
||||
export fn thrd_detach() void {}
|
||||
export fn thrd_exit() void {}
|
||||
export fn thrd_join() void {}
|
||||
export fn tss_create() void {}
|
||||
export fn tss_delete() void {}
|
||||
export fn tss_get() void {}
|
||||
export fn tss_set() void {}
|
||||
export fn vfork() void {}
|
||||
export fn wait() void {}
|
||||
export fn waitpid() void {}
|
||||
export fn write() void {}
|
|
@ -0,0 +1,43 @@
|
|||
// This file exists to create a librt.so file so that LLD has something to look at
|
||||
// and emit linker errors if an attempt to link against a non-existent C symbol happens.
|
||||
|
||||
export fn __mq_open_2() void {}
|
||||
export fn aio_cancel() void {}
|
||||
export fn aio_cancel64() void {}
|
||||
export fn aio_error() void {}
|
||||
export fn aio_error64() void {}
|
||||
export fn aio_fsync() void {}
|
||||
export fn aio_fsync64() void {}
|
||||
export fn aio_init() void {}
|
||||
export fn aio_read() void {}
|
||||
export fn aio_read64() void {}
|
||||
export fn aio_return() void {}
|
||||
export fn aio_return64() void {}
|
||||
export fn aio_suspend() void {}
|
||||
export fn aio_suspend64() void {}
|
||||
export fn aio_write() void {}
|
||||
export fn aio_write64() void {}
|
||||
export fn clock_getcpuclockid() void {}
|
||||
export fn clock_getres() void {}
|
||||
export fn clock_gettime() void {}
|
||||
export fn clock_nanosleep() void {}
|
||||
export fn clock_settime() void {}
|
||||
export fn lio_listio() void {}
|
||||
export fn lio_listio64() void {}
|
||||
export fn mq_close() void {}
|
||||
export fn mq_getattr() void {}
|
||||
export fn mq_notify() void {}
|
||||
export fn mq_open() void {}
|
||||
export fn mq_receive() void {}
|
||||
export fn mq_send() void {}
|
||||
export fn mq_setattr() void {}
|
||||
export fn mq_timedreceive() void {}
|
||||
export fn mq_timedsend() void {}
|
||||
export fn mq_unlink() void {}
|
||||
export fn shm_open() void {}
|
||||
export fn shm_unlink() void {}
|
||||
export fn timer_create() void {}
|
||||
export fn timer_delete() void {}
|
||||
export fn timer_getoverrun() void {}
|
||||
export fn timer_gettime() void {}
|
||||
export fn timer_settime() void {}
|
|
@ -0,0 +1,79 @@
|
|||
/* Macros and inline functions to swap the order of bytes in integer values.
|
||||
Copyright (C) 1997-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
|
||||
# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef _BITS_BYTESWAP_H
|
||||
#define _BITS_BYTESWAP_H 1
|
||||
|
||||
#include <features.h>
|
||||
#include <bits/types.h>
|
||||
|
||||
/* Swap bytes in 16-bit value. */
|
||||
#define __bswap_constant_16(x) \
|
||||
((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
|
||||
|
||||
static __inline __uint16_t
|
||||
__bswap_16 (__uint16_t __bsx)
|
||||
{
|
||||
#if __GNUC_PREREQ (4, 8)
|
||||
return __builtin_bswap16 (__bsx);
|
||||
#else
|
||||
return __bswap_constant_16 (__bsx);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Swap bytes in 32-bit value. */
|
||||
#define __bswap_constant_32(x) \
|
||||
((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) \
|
||||
| (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
|
||||
|
||||
static __inline __uint32_t
|
||||
__bswap_32 (__uint32_t __bsx)
|
||||
{
|
||||
#if __GNUC_PREREQ (4, 3)
|
||||
return __builtin_bswap32 (__bsx);
|
||||
#else
|
||||
return __bswap_constant_32 (__bsx);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Swap bytes in 64-bit value. */
|
||||
#define __bswap_constant_64(x) \
|
||||
((((x) & 0xff00000000000000ull) >> 56) \
|
||||
| (((x) & 0x00ff000000000000ull) >> 40) \
|
||||
| (((x) & 0x0000ff0000000000ull) >> 24) \
|
||||
| (((x) & 0x000000ff00000000ull) >> 8) \
|
||||
| (((x) & 0x00000000ff000000ull) << 8) \
|
||||
| (((x) & 0x0000000000ff0000ull) << 24) \
|
||||
| (((x) & 0x000000000000ff00ull) << 40) \
|
||||
| (((x) & 0x00000000000000ffull) << 56))
|
||||
|
||||
__extension__ static __inline __uint64_t
|
||||
__bswap_64 (__uint64_t __bsx)
|
||||
{
|
||||
#if __GNUC_PREREQ (4, 3)
|
||||
return __builtin_bswap64 (__bsx);
|
||||
#else
|
||||
return __bswap_constant_64 (__bsx);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* _BITS_BYTESWAP_H */
|
|
@ -0,0 +1,13 @@
|
|||
/* This file should define __BYTE_ORDER as appropriate for the machine
|
||||
in question. See string/endian.h for how to define it.
|
||||
|
||||
If only the stub bits/endian.h applies to a particular configuration,
|
||||
bytesex.h is generated by running a program on the host machine.
|
||||
So if cross-compiling to a machine with a different byte order,
|
||||
the bits/endian.h file for that machine must exist. */
|
||||
|
||||
#ifndef _ENDIAN_H
|
||||
# error "Never use <bits/endian.h> directly; include <endian.h> instead."
|
||||
#endif
|
||||
|
||||
#error Machine byte order unknown.
|
|
@ -0,0 +1,329 @@
|
|||
/* Macros to control TS 18661-3 glibc features where the same
|
||||
definitions are appropriate for all platforms.
|
||||
Copyright (C) 2017-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_FLOATN_COMMON_H
|
||||
#define _BITS_FLOATN_COMMON_H
|
||||
|
||||
#include <features.h>
|
||||
#include <bits/long-double.h>
|
||||
|
||||
/* This header should be included at the bottom of each bits/floatn.h.
|
||||
It defines the following macros for each _FloatN and _FloatNx type,
|
||||
where the same definitions, or definitions based only on the macros
|
||||
in bits/floatn.h, are appropriate for all glibc configurations. */
|
||||
|
||||
/* Defined to 1 if the current compiler invocation provides a
|
||||
floating-point type with the right format for this type, and this
|
||||
glibc includes corresponding *fN or *fNx interfaces for it. */
|
||||
#define __HAVE_FLOAT16 0
|
||||
#define __HAVE_FLOAT32 1
|
||||
#define __HAVE_FLOAT64 1
|
||||
#define __HAVE_FLOAT32X 1
|
||||
#define __HAVE_FLOAT128X 0
|
||||
|
||||
/* Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the
|
||||
type is the first with its format in the sequence of (the default
|
||||
choices for) float, double, long double, _Float16, _Float32,
|
||||
_Float64, _Float128, _Float32x, _Float64x, _Float128x for this
|
||||
glibc; that is, if functions present once per floating-point format
|
||||
rather than once per type are present for this type.
|
||||
|
||||
All configurations supported by glibc have _Float32 the same format
|
||||
as float, _Float64 and _Float32x the same format as double, the
|
||||
_Float64x the same format as either long double or _Float128. No
|
||||
configurations support _Float128x or, as of GCC 7, have compiler
|
||||
support for a type meeting the requirements for _Float128x. */
|
||||
#define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16
|
||||
#define __HAVE_DISTINCT_FLOAT32 0
|
||||
#define __HAVE_DISTINCT_FLOAT64 0
|
||||
#define __HAVE_DISTINCT_FLOAT32X 0
|
||||
#define __HAVE_DISTINCT_FLOAT64X 0
|
||||
#define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X
|
||||
|
||||
/* Defined to 1 if the corresponding _FloatN type is not binary compatible
|
||||
with the corresponding ISO C type in the current compilation unit as
|
||||
opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built
|
||||
in glibc. */
|
||||
#define __HAVE_FLOAT128_UNLIKE_LDBL (__HAVE_DISTINCT_FLOAT128 \
|
||||
&& __LDBL_MANT_DIG__ != 113)
|
||||
|
||||
/* Defined to 1 if any _FloatN or _FloatNx types that are not
|
||||
ABI-distinct are however distinct types at the C language level (so
|
||||
for the purposes of __builtin_types_compatible_p and _Generic). */
|
||||
#if __GNUC_PREREQ (7, 0) && !defined __cplusplus
|
||||
# define __HAVE_FLOATN_NOT_TYPEDEF 1
|
||||
#else
|
||||
# define __HAVE_FLOATN_NOT_TYPEDEF 0
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
/* Defined to concatenate the literal suffix to be used with _FloatN
|
||||
or _FloatNx types, if __HAVE_<type> is 1. The corresponding
|
||||
literal suffixes exist since GCC 7, for C only. */
|
||||
# if __HAVE_FLOAT16
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
/* No corresponding suffix available for this type. */
|
||||
# define __f16(x) ((_Float16) x##f)
|
||||
# else
|
||||
# define __f16(x) x##f16
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT32
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# define __f32(x) x##f
|
||||
# else
|
||||
# define __f32(x) x##f32
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT64
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# ifdef __NO_LONG_DOUBLE_MATH
|
||||
# define __f64(x) x##l
|
||||
# else
|
||||
# define __f64(x) x
|
||||
# endif
|
||||
# else
|
||||
# define __f64(x) x##f64
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT32X
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# define __f32x(x) x
|
||||
# else
|
||||
# define __f32x(x) x##f32x
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT64X
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# if __HAVE_FLOAT64X_LONG_DOUBLE
|
||||
# define __f64x(x) x##l
|
||||
# else
|
||||
# define __f64x(x) __f128 (x)
|
||||
# endif
|
||||
# else
|
||||
# define __f64x(x) x##f64x
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT128X
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# error "_Float128X supported but no constant suffix"
|
||||
# else
|
||||
# define __f128x(x) x##f128x
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* Defined to a complex type if __HAVE_<type> is 1. */
|
||||
# if __HAVE_FLOAT16
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
typedef _Complex float __cfloat16 __attribute__ ((__mode__ (__HC__)));
|
||||
# define __CFLOAT16 __cfloat16
|
||||
# else
|
||||
# define __CFLOAT16 _Complex _Float16
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT32
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# define __CFLOAT32 _Complex float
|
||||
# else
|
||||
# define __CFLOAT32 _Complex _Float32
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT64
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# ifdef __NO_LONG_DOUBLE_MATH
|
||||
# define __CFLOAT64 _Complex long double
|
||||
# else
|
||||
# define __CFLOAT64 _Complex double
|
||||
# endif
|
||||
# else
|
||||
# define __CFLOAT64 _Complex _Float64
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT32X
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# define __CFLOAT32X _Complex double
|
||||
# else
|
||||
# define __CFLOAT32X _Complex _Float32x
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT64X
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# if __HAVE_FLOAT64X_LONG_DOUBLE
|
||||
# define __CFLOAT64X _Complex long double
|
||||
# else
|
||||
# define __CFLOAT64X __CFLOAT128
|
||||
# endif
|
||||
# else
|
||||
# define __CFLOAT64X _Complex _Float64x
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT128X
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# error "_Float128X supported but no complex type"
|
||||
# else
|
||||
# define __CFLOAT128X _Complex _Float128x
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* The remaining of this file provides support for older compilers. */
|
||||
# if __HAVE_FLOAT16
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
typedef float _Float16 __attribute__ ((__mode__ (__HF__)));
|
||||
# endif
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0)
|
||||
# define __builtin_huge_valf16() ((_Float16) __builtin_huge_val ())
|
||||
# define __builtin_inff16() ((_Float16) __builtin_inf ())
|
||||
# define __builtin_nanf16(x) ((_Float16) __builtin_nan (x))
|
||||
# define __builtin_nansf16(x) ((_Float16) __builtin_nans (x))
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT32
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
typedef float _Float32;
|
||||
# endif
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0)
|
||||
# define __builtin_huge_valf32() (__builtin_huge_valf ())
|
||||
# define __builtin_inff32() (__builtin_inff ())
|
||||
# define __builtin_nanf32(x) (__builtin_nanf (x))
|
||||
# define __builtin_nansf32(x) (__builtin_nansf (x))
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT64
|
||||
|
||||
/* If double, long double and _Float64 all have the same set of
|
||||
values, TS 18661-3 requires the usual arithmetic conversions on
|
||||
long double and _Float64 to produce _Float64. For this to be the
|
||||
case when building with a compiler without a distinct _Float64
|
||||
type, _Float64 must be a typedef for long double, not for
|
||||
double. */
|
||||
|
||||
# ifdef __NO_LONG_DOUBLE_MATH
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
typedef long double _Float64;
|
||||
# endif
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0)
|
||||
# define __builtin_huge_valf64() (__builtin_huge_vall ())
|
||||
# define __builtin_inff64() (__builtin_infl ())
|
||||
# define __builtin_nanf64(x) (__builtin_nanl (x))
|
||||
# define __builtin_nansf64(x) (__builtin_nansl (x))
|
||||
# endif
|
||||
|
||||
# else
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
typedef double _Float64;
|
||||
# endif
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0)
|
||||
# define __builtin_huge_valf64() (__builtin_huge_val ())
|
||||
# define __builtin_inff64() (__builtin_inf ())
|
||||
# define __builtin_nanf64(x) (__builtin_nan (x))
|
||||
# define __builtin_nansf64(x) (__builtin_nans (x))
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT32X
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
typedef double _Float32x;
|
||||
# endif
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0)
|
||||
# define __builtin_huge_valf32x() (__builtin_huge_val ())
|
||||
# define __builtin_inff32x() (__builtin_inf ())
|
||||
# define __builtin_nanf32x(x) (__builtin_nan (x))
|
||||
# define __builtin_nansf32x(x) (__builtin_nans (x))
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT64X
|
||||
|
||||
# if __HAVE_FLOAT64X_LONG_DOUBLE
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
typedef long double _Float64x;
|
||||
# endif
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0)
|
||||
# define __builtin_huge_valf64x() (__builtin_huge_vall ())
|
||||
# define __builtin_inff64x() (__builtin_infl ())
|
||||
# define __builtin_nanf64x(x) (__builtin_nanl (x))
|
||||
# define __builtin_nansf64x(x) (__builtin_nansl (x))
|
||||
# endif
|
||||
|
||||
# else
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
typedef _Float128 _Float64x;
|
||||
# endif
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0)
|
||||
# define __builtin_huge_valf64x() (__builtin_huge_valf128 ())
|
||||
# define __builtin_inff64x() (__builtin_inff128 ())
|
||||
# define __builtin_nanf64x(x) (__builtin_nanf128 (x))
|
||||
# define __builtin_nansf64x(x) (__builtin_nansf128 (x))
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
# if __HAVE_FLOAT128X
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
|
||||
# error "_Float128x supported but no type"
|
||||
# endif
|
||||
|
||||
# if !__GNUC_PREREQ (7, 0)
|
||||
# define __builtin_huge_valf128x() ((_Float128x) __builtin_huge_val ())
|
||||
# define __builtin_inff128x() ((_Float128x) __builtin_inf ())
|
||||
# define __builtin_nanf128x(x) ((_Float128x) __builtin_nan (x))
|
||||
# define __builtin_nansf128x(x) ((_Float128x) __builtin_nans (x))
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
#endif /* !__ASSEMBLER__. */
|
||||
|
||||
#endif /* _BITS_FLOATN_COMMON_H */
|
|
@ -0,0 +1,70 @@
|
|||
/* Handle feature test macros at the start of a header.
|
||||
Copyright (C) 2016-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This header is internal to glibc and should not be included outside
|
||||
of glibc headers. Headers including it must define
|
||||
__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
|
||||
cannot have multiple include guards because ISO C feature test
|
||||
macros depend on the definition of the macro when an affected
|
||||
header is included, not when the first system header is
|
||||
included. */
|
||||
|
||||
#ifndef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
||||
# error "Never include <bits/libc-header-start.h> directly."
|
||||
#endif
|
||||
|
||||
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
|
||||
macro. */
|
||||
#undef __GLIBC_USE_LIB_EXT2
|
||||
#if (defined __USE_GNU \
|
||||
|| (defined __STDC_WANT_LIB_EXT2__ && __STDC_WANT_LIB_EXT2__ > 0))
|
||||
# define __GLIBC_USE_LIB_EXT2 1
|
||||
#else
|
||||
# define __GLIBC_USE_LIB_EXT2 0
|
||||
#endif
|
||||
|
||||
/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
|
||||
macro. */
|
||||
#undef __GLIBC_USE_IEC_60559_BFP_EXT
|
||||
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__
|
||||
# define __GLIBC_USE_IEC_60559_BFP_EXT 1
|
||||
#else
|
||||
# define __GLIBC_USE_IEC_60559_BFP_EXT 0
|
||||
#endif
|
||||
|
||||
/* ISO/IEC TS 18661-4:2015 defines the
|
||||
__STDC_WANT_IEC_60559_FUNCS_EXT__ macro. */
|
||||
#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
|
||||
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_FUNCS_EXT__
|
||||
# define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
|
||||
#else
|
||||
# define __GLIBC_USE_IEC_60559_FUNCS_EXT 0
|
||||
#endif
|
||||
|
||||
/* ISO/IEC TS 18661-3:2015 defines the
|
||||
__STDC_WANT_IEC_60559_TYPES_EXT__ macro. */
|
||||
#undef __GLIBC_USE_IEC_60559_TYPES_EXT
|
||||
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_TYPES_EXT__
|
||||
# define __GLIBC_USE_IEC_60559_TYPES_EXT 1
|
||||
#else
|
||||
# define __GLIBC_USE_IEC_60559_TYPES_EXT 0
|
||||
#endif
|
|
@ -0,0 +1,39 @@
|
|||
/* Properties of long double type.
|
||||
Copyright (C) 2016-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This header is included by <sys/cdefs.h>.
|
||||
|
||||
If long double is ABI-compatible with double, it should define
|
||||
__NO_LONG_DOUBLE_MATH to 1; otherwise, it should leave
|
||||
__NO_LONG_DOUBLE_MATH undefined.
|
||||
|
||||
If this build of the GNU C Library supports both long double
|
||||
ABI-compatible with double and some other long double format not
|
||||
ABI-compatible with double, it should define
|
||||
__LONG_DOUBLE_MATH_OPTIONAL to 1; otherwise, it should leave
|
||||
__LONG_DOUBLE_MATH_OPTIONAL undefined.
|
||||
|
||||
If __NO_LONG_DOUBLE_MATH is already defined, this header must not
|
||||
define anything; this is needed to work with the definition of
|
||||
__NO_LONG_DOUBLE_MATH in nldbl-compat.h. */
|
||||
|
||||
/* In the default version of this header, long double is
|
||||
ABI-compatible with double. */
|
||||
#ifndef __NO_LONG_DOUBLE_MATH
|
||||
# define __NO_LONG_DOUBLE_MATH 1
|
||||
#endif
|
|
@ -0,0 +1 @@
|
|||
/* No thread support. */
|
|
@ -0,0 +1,37 @@
|
|||
/* Copyright (C) 1997-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_SELECT_H
|
||||
# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
/* We don't use `memset' because this would require a prototype and
|
||||
the array isn't too big. */
|
||||
#define __FD_ZERO(s) \
|
||||
do { \
|
||||
unsigned int __i; \
|
||||
fd_set *__arr = (s); \
|
||||
for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
|
||||
__FDS_BITS (__arr)[__i] = 0; \
|
||||
} while (0)
|
||||
#define __FD_SET(d, s) \
|
||||
((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d)))
|
||||
#define __FD_CLR(d, s) \
|
||||
((void) (__FDS_BITS (s)[__FD_ELT(d)] &= ~__FD_MASK(d)))
|
||||
#define __FD_ISSET(d, s) \
|
||||
((__FDS_BITS (s)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
|
|
@ -0,0 +1,102 @@
|
|||
/* Signal number constants. Generic template.
|
||||
Copyright (C) 1991-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_SIGNUM_GENERIC_H
|
||||
#define _BITS_SIGNUM_GENERIC_H 1
|
||||
|
||||
#ifndef _SIGNAL_H
|
||||
#error "Never include <bits/signum-generic.h> directly; use <signal.h> instead."
|
||||
#endif
|
||||
|
||||
/* Fake signal functions. */
|
||||
|
||||
#define SIG_ERR ((__sighandler_t) -1) /* Error return. */
|
||||
#define SIG_DFL ((__sighandler_t) 0) /* Default action. */
|
||||
#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */
|
||||
|
||||
#ifdef __USE_XOPEN
|
||||
# define SIG_HOLD ((__sighandler_t) 2) /* Add signal to hold mask. */
|
||||
#endif
|
||||
|
||||
/* We define here all the signal names listed in POSIX (1003.1-2008);
|
||||
as of 1003.1-2013, no additional signals have been added by POSIX.
|
||||
We also define here signal names that historically exist in every
|
||||
real-world POSIX variant (e.g. SIGWINCH).
|
||||
|
||||
Signals in the 1-15 range are defined with their historical numbers.
|
||||
For other signals, we use the BSD numbers.
|
||||
There are two unallocated signal numbers in the 1-31 range: 7 and 29.
|
||||
Signal number 0 is reserved for use as kill(pid, 0), to test whether
|
||||
a process exists without sending it a signal. */
|
||||
|
||||
/* ISO C99 signals. */
|
||||
#define SIGINT 2 /* Interactive attention signal. */
|
||||
#define SIGILL 4 /* Illegal instruction. */
|
||||
#define SIGABRT 6 /* Abnormal termination. */
|
||||
#define SIGFPE 8 /* Erroneous arithmetic operation. */
|
||||
#define SIGSEGV 11 /* Invalid access to storage. */
|
||||
#define SIGTERM 15 /* Termination request. */
|
||||
|
||||
/* Historical signals specified by POSIX. */
|
||||
#define SIGHUP 1 /* Hangup. */
|
||||
#define SIGQUIT 3 /* Quit. */
|
||||
#define SIGTRAP 5 /* Trace/breakpoint trap. */
|
||||
#define SIGKILL 9 /* Killed. */
|
||||
#define SIGBUS 10 /* Bus error. */
|
||||
#define SIGSYS 12 /* Bad system call. */
|
||||
#define SIGPIPE 13 /* Broken pipe. */
|
||||
#define SIGALRM 14 /* Alarm clock. */
|
||||
|
||||
/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
|
||||
#define SIGURG 16 /* Urgent data is available at a socket. */
|
||||
#define SIGSTOP 17 /* Stop, unblockable. */
|
||||
#define SIGTSTP 18 /* Keyboard stop. */
|
||||
#define SIGCONT 19 /* Continue. */
|
||||
#define SIGCHLD 20 /* Child terminated or stopped. */
|
||||
#define SIGTTIN 21 /* Background read from control terminal. */
|
||||
#define SIGTTOU 22 /* Background write to control terminal. */
|
||||
#define SIGPOLL 23 /* Pollable event occurred (System V). */
|
||||
#define SIGXCPU 24 /* CPU time limit exceeded. */
|
||||
#define SIGXFSZ 25 /* File size limit exceeded. */
|
||||
#define SIGVTALRM 26 /* Virtual timer expired. */
|
||||
#define SIGPROF 27 /* Profiling timer expired. */
|
||||
#define SIGUSR1 30 /* User-defined signal 1. */
|
||||
#define SIGUSR2 31 /* User-defined signal 2. */
|
||||
|
||||
/* Nonstandard signals found in all modern POSIX systems
|
||||
(including both BSD and Linux). */
|
||||
#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
|
||||
|
||||
/* Archaic names for compatibility. */
|
||||
#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
|
||||
#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
|
||||
#define SIGCLD SIGCHLD /* Old System V name */
|
||||
|
||||
/* Not all systems support real-time signals. bits/signum.h indicates
|
||||
that they are supported by overriding __SIGRTMAX to a value greater
|
||||
than __SIGRTMIN. These constants give the kernel-level hard limits,
|
||||
but some real-time signals may be used internally by glibc. Do not
|
||||
use these constants in application code; use SIGRTMIN and SIGRTMAX
|
||||
(defined in signal.h) instead. */
|
||||
#define __SIGRTMIN 32
|
||||
#define __SIGRTMAX __SIGRTMIN
|
||||
|
||||
/* Biggest signal number + 1 (including real-time signals). */
|
||||
#define _NSIG (__SIGRTMAX + 1)
|
||||
|
||||
#endif /* bits/signum-generic.h. */
|
|
@ -0,0 +1,103 @@
|
|||
/* Copyright (C) 1992-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SYS_STAT_H && !defined _FCNTL_H
|
||||
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef _BITS_STAT_H
|
||||
#define _BITS_STAT_H 1
|
||||
|
||||
/* This structure needs to be defined in accordance with the
|
||||
implementation of __stat, __fstat, and __lstat. */
|
||||
|
||||
#include <bits/types.h>
|
||||
|
||||
/* Structure describing file characteristics. */
|
||||
struct stat
|
||||
{
|
||||
/* These are the members that POSIX.1 requires. */
|
||||
|
||||
__mode_t st_mode; /* File mode. */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
__ino_t st_ino; /* File serial number. */
|
||||
#else
|
||||
__ino64_t st_ino; /* File serial number. */
|
||||
#endif
|
||||
__dev_t st_dev; /* Device containing the file. */
|
||||
__nlink_t st_nlink; /* Link count. */
|
||||
|
||||
__uid_t st_uid; /* User ID of the file's owner. */
|
||||
__gid_t st_gid; /* Group ID of the file's group. */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
__off_t st_size; /* Size of file, in bytes. */
|
||||
#else
|
||||
__off64_t st_size; /* Size of file, in bytes. */
|
||||
#endif
|
||||
|
||||
__time_t st_atime; /* Time of last access. */
|
||||
__time_t st_mtime; /* Time of last modification. */
|
||||
__time_t st_ctime; /* Time of last status change. */
|
||||
|
||||
/* This should be defined if there is a `st_blksize' member. */
|
||||
#undef _STATBUF_ST_BLKSIZE
|
||||
};
|
||||
|
||||
/* Encoding of the file mode. These are the standard Unix values,
|
||||
but POSIX.1 does not specify what values should be used. */
|
||||
|
||||
#define __S_IFMT 0170000 /* These bits determine file type. */
|
||||
|
||||
/* File types. */
|
||||
#define __S_IFDIR 0040000 /* Directory. */
|
||||
#define __S_IFCHR 0020000 /* Character device. */
|
||||
#define __S_IFBLK 0060000 /* Block device. */
|
||||
#define __S_IFREG 0100000 /* Regular file. */
|
||||
#define __S_IFIFO 0010000 /* FIFO. */
|
||||
|
||||
/* POSIX.1b objects. */
|
||||
#define __S_TYPEISMQ(buf) 0
|
||||
#define __S_TYPEISSEM(buf) 0
|
||||
#define __S_TYPEISSHM(buf) 0
|
||||
|
||||
/* Protection bits. */
|
||||
|
||||
#define __S_ISUID 04000 /* Set user ID on execution. */
|
||||
#define __S_ISGID 02000 /* Set group ID on execution. */
|
||||
#define __S_IREAD 0400 /* Read by owner. */
|
||||
#define __S_IWRITE 0200 /* Write by owner. */
|
||||
#define __S_IEXEC 0100 /* Execute by owner. */
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
struct stat64
|
||||
{
|
||||
__mode_t st_mode; /* File mode. */
|
||||
__ino64_t st_ino; /* File serial number. */
|
||||
__dev_t st_dev; /* Device. */
|
||||
__nlink_t st_nlink; /* Link count. */
|
||||
|
||||
__uid_t st_uid; /* User ID of the file's owner. */
|
||||
__gid_t st_gid; /* Group ID of the file's group.*/
|
||||
__off64_t st_size; /* Size of file, in bytes. */
|
||||
|
||||
__time_t st_atime; /* Time of last access. */
|
||||
__time_t st_mtime; /* Time of last modification. */
|
||||
__time_t st_ctime; /* Time of last status change. */
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* bits/stat.h */
|
|
@ -0,0 +1,29 @@
|
|||
/* Define intN_t types.
|
||||
Copyright (C) 2017-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_STDINT_INTN_H
|
||||
#define _BITS_STDINT_INTN_H 1
|
||||
|
||||
#include <bits/types.h>
|
||||
|
||||
typedef __int8_t int8_t;
|
||||
typedef __int16_t int16_t;
|
||||
typedef __int32_t int32_t;
|
||||
typedef __int64_t int64_t;
|
||||
|
||||
#endif /* bits/stdint-intn.h */
|
|
@ -0,0 +1,43 @@
|
|||
/* Perform binary search - inline version.
|
||||
Copyright (C) 1991-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
__extern_inline void *
|
||||
bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size,
|
||||
__compar_fn_t __compar)
|
||||
{
|
||||
size_t __l, __u, __idx;
|
||||
const void *__p;
|
||||
int __comparison;
|
||||
|
||||
__l = 0;
|
||||
__u = __nmemb;
|
||||
while (__l < __u)
|
||||
{
|
||||
__idx = (__l + __u) / 2;
|
||||
__p = (void *) (((const char *) __base) + (__idx * __size));
|
||||
__comparison = (*__compar) (__key, __p);
|
||||
if (__comparison < 0)
|
||||
__u = __idx;
|
||||
else if (__comparison > 0)
|
||||
__l = __idx + 1;
|
||||
else
|
||||
return (void *) __p;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/* bits/time64.h -- underlying types for __time64_t. Generic version.
|
||||
Copyright (C) 2018-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_TYPES_H
|
||||
# error "Never include <bits/time64.h> directly; use <sys/types.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef _BITS_TIME64_H
|
||||
#define _BITS_TIME64_H 1
|
||||
|
||||
/* Define __TIME64_T_TYPE so that it is always a 64-bit type. */
|
||||
|
||||
#if __TIMESIZE == 64
|
||||
/* If we already have 64-bit time type then use it. */
|
||||
# define __TIME64_T_TYPE __TIME_T_TYPE
|
||||
#else
|
||||
/* Define a 64-bit time type alongsize the 32-bit one. */
|
||||
# define __TIME64_T_TYPE __SQUAD_TYPE
|
||||
#endif
|
||||
|
||||
#endif /* bits/time64.h */
|
|
@ -0,0 +1,22 @@
|
|||
/* Bit size of the time_t type at glibc build time, general case.
|
||||
Copyright (C) 2018-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
/* Size in bits of the 'time_t' type of the default ABI. */
|
||||
#define __TIMESIZE __WORDSIZE
|
|
@ -0,0 +1,7 @@
|
|||
#ifndef ____sigset_t_defined
|
||||
#define ____sigset_t_defined 1
|
||||
|
||||
/* A `sigset_t' has a bit for each signal. */
|
||||
typedef unsigned long int __sigset_t;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,28 @@
|
|||
/* Sched parameter structure. Generic version.
|
||||
Copyright (C) 1996-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_TYPES_STRUCT_SCHED_PARAM
|
||||
#define _BITS_TYPES_STRUCT_SCHED_PARAM 1
|
||||
|
||||
/* Data structure to describe a process' schedulability. */
|
||||
struct sched_param
|
||||
{
|
||||
int sched_priority;
|
||||
};
|
||||
|
||||
#endif /* bits/types/struct_sched_param.h */
|
|
@ -0,0 +1,83 @@
|
|||
/* bits/typesizes.h -- underlying types for *_t. Generic version.
|
||||
Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_TYPES_H
|
||||
# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef _BITS_TYPESIZES_H
|
||||
#define _BITS_TYPESIZES_H 1
|
||||
|
||||
/* See <bits/types.h> for the meaning of these macros. This file exists so
|
||||
that <bits/types.h> need not vary across different GNU platforms. */
|
||||
|
||||
#define __DEV_T_TYPE __UQUAD_TYPE
|
||||
#define __UID_T_TYPE __U32_TYPE
|
||||
#define __GID_T_TYPE __U32_TYPE
|
||||
#define __INO_T_TYPE __ULONGWORD_TYPE
|
||||
#define __INO64_T_TYPE __UQUAD_TYPE
|
||||
#define __MODE_T_TYPE __U32_TYPE
|
||||
#define __NLINK_T_TYPE __UWORD_TYPE
|
||||
#define __OFF_T_TYPE __SLONGWORD_TYPE
|
||||
#define __OFF64_T_TYPE __SQUAD_TYPE
|
||||
#define __PID_T_TYPE __S32_TYPE
|
||||
#define __RLIM_T_TYPE __ULONGWORD_TYPE
|
||||
#define __RLIM64_T_TYPE __UQUAD_TYPE
|
||||
#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
|
||||
#define __BLKCNT64_T_TYPE __SQUAD_TYPE
|
||||
#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
|
||||
#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
|
||||
#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
|
||||
#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
|
||||
#define __FSWORD_T_TYPE __SWORD_TYPE
|
||||
#define __ID_T_TYPE __U32_TYPE
|
||||
#define __CLOCK_T_TYPE __SLONGWORD_TYPE
|
||||
#define __TIME_T_TYPE __SLONGWORD_TYPE
|
||||
#define __USECONDS_T_TYPE __U32_TYPE
|
||||
#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
|
||||
#define __DADDR_T_TYPE __S32_TYPE
|
||||
#define __KEY_T_TYPE __S32_TYPE
|
||||
#define __CLOCKID_T_TYPE __S32_TYPE
|
||||
#define __TIMER_T_TYPE void *
|
||||
#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
|
||||
#define __FSID_T_TYPE struct { int __val[2]; }
|
||||
#define __SSIZE_T_TYPE __SWORD_TYPE
|
||||
#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE
|
||||
#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
|
||||
#define __CPU_MASK_TYPE __ULONGWORD_TYPE
|
||||
|
||||
#ifdef __LP64__
|
||||
/* Tell the libc code that off_t and off64_t are actually the same type
|
||||
for all ABI purposes, even if possibly expressed as different base types
|
||||
for C type-checking purposes. */
|
||||
# define __OFF_T_MATCHES_OFF64_T 1
|
||||
|
||||
/* Same for ino_t and ino64_t. */
|
||||
# define __INO_T_MATCHES_INO64_T 1
|
||||
|
||||
/* And for rlim_t and rlim64_t. */
|
||||
# define __RLIM_T_MATCHES_RLIM64_T 1
|
||||
#else
|
||||
# define __RLIM_T_MATCHES_RLIM64_T 0
|
||||
#endif
|
||||
|
||||
/* Number of descriptors that can fit in an `fd_set'. */
|
||||
#define __FD_SETSIZE 1024
|
||||
|
||||
|
||||
#endif /* bits/typesizes.h */
|
|
@ -0,0 +1,50 @@
|
|||
/* Inline functions to return unsigned integer values unchanged.
|
||||
Copyright (C) 2017-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _NETINET_IN_H && !defined _ENDIAN_H
|
||||
# error "Never use <bits/uintn-identity.h> directly; include <netinet/in.h> or <endian.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef _BITS_UINTN_IDENTITY_H
|
||||
#define _BITS_UINTN_IDENTITY_H 1
|
||||
|
||||
#include <bits/types.h>
|
||||
|
||||
/* These inline functions are to ensure the appropriate type
|
||||
conversions and associated diagnostics from macros that convert to
|
||||
a given endianness. */
|
||||
|
||||
static __inline __uint16_t
|
||||
__uint16_identity (__uint16_t __x)
|
||||
{
|
||||
return __x;
|
||||
}
|
||||
|
||||
static __inline __uint32_t
|
||||
__uint32_identity (__uint32_t __x)
|
||||
{
|
||||
return __x;
|
||||
}
|
||||
|
||||
static __inline __uint64_t
|
||||
__uint64_identity (__uint64_t __x)
|
||||
{
|
||||
return __x;
|
||||
}
|
||||
|
||||
#endif /* _BITS_UINTN_IDENTITY_H. */
|
|
@ -0,0 +1,26 @@
|
|||
/* Definitions of flag bits for `waitpid' et al.
|
||||
Copyright (C) 1992-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SYS_WAIT_H && !defined _STDLIB_H
|
||||
# error "Never include <bits/waitflags.h> directly; use <sys/wait.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
/* Bits in the third argument to `waitpid'. */
|
||||
#define WNOHANG 1 /* Don't block waiting. */
|
||||
#define WUNTRACED 2 /* Report status of stopped children. */
|
|
@ -0,0 +1,59 @@
|
|||
/* Definitions of status bits for `wait' et al.
|
||||
Copyright (C) 1992-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if !defined _SYS_WAIT_H && !defined _STDLIB_H
|
||||
# error "Never include <bits/waitstatus.h> directly; use <sys/wait.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
/* Everything extant so far uses these same bits. */
|
||||
|
||||
|
||||
/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */
|
||||
#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
|
||||
|
||||
/* If WIFSIGNALED(STATUS), the terminating signal. */
|
||||
#define __WTERMSIG(status) ((status) & 0x7f)
|
||||
|
||||
/* If WIFSTOPPED(STATUS), the signal that stopped the child. */
|
||||
#define __WSTOPSIG(status) __WEXITSTATUS(status)
|
||||
|
||||
/* Nonzero if STATUS indicates normal termination. */
|
||||
#define __WIFEXITED(status) (__WTERMSIG(status) == 0)
|
||||
|
||||
/* Nonzero if STATUS indicates termination by a signal. */
|
||||
#define __WIFSIGNALED(status) \
|
||||
(((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
|
||||
|
||||
/* Nonzero if STATUS indicates the child is stopped. */
|
||||
#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
|
||||
|
||||
/* Nonzero if STATUS indicates the child continued after a stop. We only
|
||||
define this if <bits/waitflags.h> provides the WCONTINUED flag bit. */
|
||||
#ifdef WCONTINUED
|
||||
# define __WIFCONTINUED(status) ((status) == __W_CONTINUED)
|
||||
#endif
|
||||
|
||||
/* Nonzero if STATUS indicates the child dumped core. */
|
||||
#define __WCOREDUMP(status) ((status) & __WCOREFLAG)
|
||||
|
||||
/* Macros for constructing status values. */
|
||||
#define __W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
|
||||
#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
|
||||
#define __W_CONTINUED 0xffff
|
||||
#define __WCOREFLAG 0x80
|
|
@ -0,0 +1,72 @@
|
|||
/* Special .init and .fini section support.
|
||||
Copyright (C) 1997-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Define an ELF note identifying the operating-system ABI that the
|
||||
executable was created for. The ELF note information identifies a
|
||||
particular OS or coordinated development effort within which the
|
||||
ELF header's e_machine value plus (for dynamically linked programs)
|
||||
the PT_INTERP dynamic linker name and DT_NEEDED shared library
|
||||
names fully identify the runtime environment required by an
|
||||
executable.
|
||||
|
||||
The general format of ELF notes is as follows.
|
||||
Offsets and lengths are bytes or (parenthetical references) to the
|
||||
values in other fields.
|
||||
|
||||
offset length contents
|
||||
0 4 length of name
|
||||
4 4 length of data
|
||||
8 4 note type
|
||||
12 (0) vendor name
|
||||
- null-terminated ASCII string, padded to 4-byte alignment
|
||||
12+(0) (4) note data,
|
||||
|
||||
The GNU project and cooperating development efforts (including the
|
||||
Linux community) use note type 1 and a vendor name string of "GNU"
|
||||
for a note descriptor that indicates ABI requirements. The note data
|
||||
is four 32-bit words. The first of these is an operating system
|
||||
number (0=Linux, 1=Hurd, 2=Solaris, ...) and the remaining three
|
||||
identify the earliest release of that OS that supports this ABI.
|
||||
See abi-tags (top level) for details. */
|
||||
|
||||
#include <config.h>
|
||||
#include <abi-tag.h> /* OS-specific ABI tag value */
|
||||
|
||||
/* The linker (GNU ld 2.8 and later) recognizes an allocated section whose
|
||||
name begins with `.note' and creates a PT_NOTE program header entry
|
||||
pointing at it. */
|
||||
|
||||
.section ".note.ABI-tag", "a"
|
||||
.p2align 2
|
||||
.long 1f - 0f /* name length */
|
||||
.long 3f - 2f /* data length */
|
||||
.long 1 /* note type */
|
||||
0: .asciz "GNU" /* vendor name */
|
||||
1: .p2align 2
|
||||
2: .long __ABI_TAG_OS /* note data: the ABI tag */
|
||||
.long __ABI_TAG_VERSION
|
||||
3: .p2align 2 /* pad out section */
|
|
@ -0,0 +1,4 @@
|
|||
#define __ABI_TAG_OS 0
|
||||
#ifndef __ABI_TAG_VERSION
|
||||
# define __ABI_TAG_VERSION 2,0,0
|
||||
#endif
|
|
@ -0,0 +1,106 @@
|
|||
/* Startup support for ELF initializers/finalizers in the main executable.
|
||||
Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
|
||||
/* These magic symbols are provided by the linker. */
|
||||
extern void (*__preinit_array_start []) (int, char **, char **)
|
||||
attribute_hidden;
|
||||
extern void (*__preinit_array_end []) (int, char **, char **)
|
||||
attribute_hidden;
|
||||
extern void (*__init_array_start []) (int, char **, char **)
|
||||
attribute_hidden;
|
||||
extern void (*__init_array_end []) (int, char **, char **)
|
||||
attribute_hidden;
|
||||
extern void (*__fini_array_start []) (void) attribute_hidden;
|
||||
extern void (*__fini_array_end []) (void) attribute_hidden;
|
||||
|
||||
|
||||
#ifndef NO_INITFINI
|
||||
/* These function symbols are provided for the .init/.fini section entry
|
||||
points automagically by the linker. */
|
||||
extern void _init (void);
|
||||
extern void _fini (void);
|
||||
#endif
|
||||
|
||||
|
||||
/* These functions are passed to __libc_start_main by the startup code.
|
||||
These get statically linked into each program. For dynamically linked
|
||||
programs, this module will come from libc_nonshared.a and differs from
|
||||
the libc.a module in that it doesn't call the preinit array. */
|
||||
|
||||
|
||||
void
|
||||
__libc_csu_init (int argc, char **argv, char **envp)
|
||||
{
|
||||
/* For dynamically linked executables the preinit array is executed by
|
||||
the dynamic linker (before initializing any shared object). */
|
||||
|
||||
#ifndef LIBC_NONSHARED
|
||||
/* For static executables, preinit happens right before init. */
|
||||
{
|
||||
const size_t size = __preinit_array_end - __preinit_array_start;
|
||||
size_t i;
|
||||
for (i = 0; i < size; i++)
|
||||
(*__preinit_array_start [i]) (argc, argv, envp);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NO_INITFINI
|
||||
_init ();
|
||||
#endif
|
||||
|
||||
const size_t size = __init_array_end - __init_array_start;
|
||||
for (size_t i = 0; i < size; i++)
|
||||
(*__init_array_start [i]) (argc, argv, envp);
|
||||
}
|
||||
|
||||
/* This function should not be used anymore. We run the executable's
|
||||
destructor now just like any other. We cannot remove the function,
|
||||
though. */
|
||||
void
|
||||
__libc_csu_fini (void)
|
||||
{
|
||||
#ifndef LIBC_NONSHARED
|
||||
size_t i = __fini_array_end - __fini_array_start;
|
||||
while (i-- > 0)
|
||||
(*__fini_array_start [i]) ();
|
||||
|
||||
# ifndef NO_INITFINI
|
||||
_fini ();
|
||||
# endif
|
||||
#endif
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
/* Copyright (C) 2005-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
extern void __stack_chk_fail (void) __attribute__ ((noreturn));
|
||||
|
||||
/* On some architectures, this helps needless PIC pointer setup
|
||||
that would be needed just for the __stack_chk_fail call. */
|
||||
|
||||
void __attribute__ ((noreturn)) attribute_hidden
|
||||
__stack_chk_fail_local (void)
|
||||
{
|
||||
__stack_chk_fail ();
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,40 @@
|
|||
#ifndef _ALLOCA_H
|
||||
|
||||
#include <stdlib/alloca.h>
|
||||
|
||||
# ifndef _ISOMAC
|
||||
|
||||
#include <stackinfo.h>
|
||||
|
||||
#undef __alloca
|
||||
|
||||
/* Now define the internal interfaces. */
|
||||
extern void *__alloca (size_t __size);
|
||||
|
||||
#ifdef __GNUC__
|
||||
# define __alloca(size) __builtin_alloca (size)
|
||||
#endif /* GCC. */
|
||||
|
||||
extern int __libc_use_alloca (size_t size) __attribute__ ((const));
|
||||
extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const));
|
||||
libc_hidden_proto (__libc_alloca_cutoff)
|
||||
|
||||
#define __MAX_ALLOCA_CUTOFF 65536
|
||||
|
||||
#include <allocalim.h>
|
||||
|
||||
#if defined stackinfo_get_sp && defined stackinfo_sub_sp
|
||||
# define alloca_account(size, avar) \
|
||||
({ void *old__ = stackinfo_get_sp (); \
|
||||
void *m__ = __alloca (size); \
|
||||
avar += stackinfo_sub_sp (old__); \
|
||||
m__; })
|
||||
#else
|
||||
# define alloca_account(size, avar) \
|
||||
({ size_t s__ = (size); \
|
||||
avar += s__; \
|
||||
__alloca (s__); })
|
||||
#endif
|
||||
|
||||
# endif /* !_ISOMAC */
|
||||
#endif
|
|
@ -0,0 +1 @@
|
|||
#include <posix/bits/cpu-set.h>
|
|
@ -0,0 +1 @@
|
|||
#include <io/bits/statx.h>
|
|
@ -0,0 +1,8 @@
|
|||
/* No floating-point inline functions in rtld and for the conform tests. */
|
||||
#ifdef _ISOMAC
|
||||
# include <stdlib/bits/stdlib-float.h>
|
||||
#else
|
||||
# if !IS_IN (rtld)
|
||||
# include <stdlib/bits/stdlib-float.h>
|
||||
# endif
|
||||
#endif
|
|
@ -0,0 +1 @@
|
|||
#include <posix/bits/types.h>
|
|
@ -0,0 +1 @@
|
|||
#include <locale/bits/types/__locale_t.h>
|
|
@ -0,0 +1 @@
|
|||
#include <time/bits/types/clock_t.h>
|
|
@ -0,0 +1 @@
|
|||
#include <time/bits/types/clockid_t.h>
|
|
@ -0,0 +1 @@
|
|||
#include <locale/bits/types/locale_t.h>
|
|
@ -0,0 +1 @@
|
|||
#include <signal/bits/types/sig_atomic_t.h>
|
|
@ -0,0 +1 @@
|
|||
#include <signal/bits/types/sigset_t.h>
|
|
@ -0,0 +1 @@
|
|||
#include <time/bits/types/struct_itimerspec.h>
|
|
@ -0,0 +1 @@
|
|||
#include <time/bits/types/struct_timespec.h>
|
|
@ -0,0 +1 @@
|
|||
#include <time/bits/types/struct_timeval.h>
|
|
@ -0,0 +1 @@
|
|||
#include <time/bits/types/struct_tm.h>
|
|
@ -0,0 +1 @@
|
|||
#include <time/bits/types/time_t.h>
|
|
@ -0,0 +1 @@
|
|||
#include <time/bits/types/timer_t.h>
|
|
@ -0,0 +1,3 @@
|
|||
/* __dso_handle is always defined by either crtbegin.o from GCC or our
|
||||
dso_handle.c. */
|
||||
extern void *__dso_handle __attribute__ ((__visibility__ ("hidden")));
|
|
@ -0,0 +1,29 @@
|
|||
#ifndef _ELF_H
|
||||
#include <elf/elf.h>
|
||||
|
||||
#ifndef _ISOMAC
|
||||
|
||||
# include <libc-pointer-arith.h>
|
||||
|
||||
/* Compute the offset of the note descriptor from size of note entry's
|
||||
owner string and note alignment. */
|
||||
# define ELF_NOTE_DESC_OFFSET(namesz, align) \
|
||||
ALIGN_UP (sizeof (ElfW(Nhdr)) + (namesz), (align))
|
||||
|
||||
/* Compute the offset of the next note entry from size of note entry's
|
||||
owner string, size of the note descriptor and note alignment. */
|
||||
# define ELF_NOTE_NEXT_OFFSET(namesz, descsz, align) \
|
||||
ALIGN_UP (ELF_NOTE_DESC_OFFSET ((namesz), (align)) + (descsz), (align))
|
||||
|
||||
/* Some information which is not meant for the public and therefore not
|
||||
in <elf.h>. */
|
||||
# include <dl-dtprocnum.h>
|
||||
# ifdef DT_1_SUPPORTED_MASK
|
||||
# error DT_1_SUPPORTED_MASK is defined!
|
||||
# endif
|
||||
# define DT_1_SUPPORTED_MASK \
|
||||
(DF_1_NOW | DF_1_NODELETE | DF_1_INITFIRST | DF_1_NOOPEN \
|
||||
| DF_1_ORIGIN | DF_1_NODEFLIB)
|
||||
|
||||
#endif /* !_ISOMAC */
|
||||
#endif /* elf.h */
|
|
@ -0,0 +1,17 @@
|
|||
#include <string/endian.h>
|
||||
|
||||
#if defined _LIBC && !defined _ISOMAC
|
||||
# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
|
||||
# define BIG_ENDI 1
|
||||
# undef LITTLE_ENDI
|
||||
# define HIGH_HALF 0
|
||||
# define LOW_HALF 1
|
||||
# else
|
||||
# if __FLOAT_WORD_ORDER == __LITTLE_ENDIAN
|
||||
# undef BIG_ENDI
|
||||
# define LITTLE_ENDI 1
|
||||
# define HIGH_HALF 1
|
||||
# define LOW_HALF 0
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
|
@ -0,0 +1,477 @@
|
|||
/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _FEATURES_H
|
||||
#define _FEATURES_H 1
|
||||
|
||||
/* These are defined by the user (or the compiler)
|
||||
to specify the desired environment:
|
||||
|
||||
__STRICT_ANSI__ ISO Standard C.
|
||||
_ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
|
||||
_ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
|
||||
__STDC_WANT_LIB_EXT2__
|
||||
Extensions to ISO C99 from TR 27431-2:2010.
|
||||
__STDC_WANT_IEC_60559_BFP_EXT__
|
||||
Extensions to ISO C11 from TS 18661-1:2014.
|
||||
__STDC_WANT_IEC_60559_FUNCS_EXT__
|
||||
Extensions to ISO C11 from TS 18661-4:2015.
|
||||
__STDC_WANT_IEC_60559_TYPES_EXT__
|
||||
Extensions to ISO C11 from TS 18661-3:2015.
|
||||
|
||||
_POSIX_SOURCE IEEE Std 1003.1.
|
||||
_POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
|
||||
if >=199309L, add IEEE Std 1003.1b-1993;
|
||||
if >=199506L, add IEEE Std 1003.1c-1995;
|
||||
if >=200112L, all of IEEE 1003.1-2004
|
||||
if >=200809L, all of IEEE 1003.1-2008
|
||||
_XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
|
||||
Single Unix conformance is wanted, to 600 for the
|
||||
sixth revision, to 700 for the seventh revision.
|
||||
_XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
|
||||
_LARGEFILE_SOURCE Some more functions for correct standard I/O.
|
||||
_LARGEFILE64_SOURCE Additional functionality from LFS for large files.
|
||||
_FILE_OFFSET_BITS=N Select default filesystem interface.
|
||||
_ATFILE_SOURCE Additional *at interfaces.
|
||||
_GNU_SOURCE All of the above, plus GNU extensions.
|
||||
_DEFAULT_SOURCE The default set of features (taking precedence over
|
||||
__STRICT_ANSI__).
|
||||
|
||||
_FORTIFY_SOURCE Add security hardening to many library functions.
|
||||
Set to 1 or 2; 2 performs stricter checks than 1.
|
||||
|
||||
_REENTRANT, _THREAD_SAFE
|
||||
Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
|
||||
|
||||
The `-ansi' switch to the GNU C compiler, and standards conformance
|
||||
options such as `-std=c99', define __STRICT_ANSI__. If none of
|
||||
these are defined, or if _DEFAULT_SOURCE is defined, the default is
|
||||
to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
|
||||
200809L, as well as enabling miscellaneous functions from BSD and
|
||||
SVID. If more than one of these are defined, they accumulate. For
|
||||
example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
|
||||
give you ISO C, 1003.1, and 1003.2, but nothing else.
|
||||
|
||||
These are defined by this file and are used by the
|
||||
header files to decide what to declare or define:
|
||||
|
||||
__GLIBC_USE (F) Define things from feature set F. This is defined
|
||||
to 1 or 0; the subsequent macros are either defined
|
||||
or undefined, and those tests should be moved to
|
||||
__GLIBC_USE.
|
||||
__USE_ISOC11 Define ISO C11 things.
|
||||
__USE_ISOC99 Define ISO C99 things.
|
||||
__USE_ISOC95 Define ISO C90 AMD1 (C95) things.
|
||||
__USE_ISOCXX11 Define ISO C++11 things.
|
||||
__USE_POSIX Define IEEE Std 1003.1 things.
|
||||
__USE_POSIX2 Define IEEE Std 1003.2 things.
|
||||
__USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
|
||||
__USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
|
||||
__USE_XOPEN Define XPG things.
|
||||
__USE_XOPEN_EXTENDED Define X/Open Unix things.
|
||||
__USE_UNIX98 Define Single Unix V2 things.
|
||||
__USE_XOPEN2K Define XPG6 things.
|
||||
__USE_XOPEN2KXSI Define XPG6 XSI things.
|
||||
__USE_XOPEN2K8 Define XPG7 things.
|
||||
__USE_XOPEN2K8XSI Define XPG7 XSI things.
|
||||
__USE_LARGEFILE Define correct standard I/O things.
|
||||
__USE_LARGEFILE64 Define LFS things with separate names.
|
||||
__USE_FILE_OFFSET64 Define 64bit interface as default.
|
||||
__USE_MISC Define things from 4.3BSD or System V Unix.
|
||||
__USE_ATFILE Define *at interfaces and AT_* constants for them.
|
||||
__USE_GNU Define GNU extensions.
|
||||
__USE_FORTIFY_LEVEL Additional security measures used, according to level.
|
||||
|
||||
The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
|
||||
defined by this file unconditionally. `__GNU_LIBRARY__' is provided
|
||||
only for compatibility. All new code should use the other symbols
|
||||
to test for features.
|
||||
|
||||
All macros listed above as possibly being defined by this file are
|
||||
explicitly undefined if they are not explicitly defined.
|
||||
Feature-test macros that are not defined by the user or compiler
|
||||
but are implied by the other feature-test macros defined (or by the
|
||||
lack of any definitions) are defined by the file.
|
||||
|
||||
ISO C feature test macros depend on the definition of the macro
|
||||
when an affected header is included, not when the first system
|
||||
header is included, and so they are handled in
|
||||
<bits/libc-header-start.h>, which does not have a multiple include
|
||||
guard. Feature test macros that can be handled from the first
|
||||
system header included are handled here. */
|
||||
|
||||
|
||||
/* Undefine everything, so we get a clean slate. */
|
||||
#undef __USE_ISOC11
|
||||
#undef __USE_ISOC99
|
||||
#undef __USE_ISOC95
|
||||
#undef __USE_ISOCXX11
|
||||
#undef __USE_POSIX
|
||||
#undef __USE_POSIX2
|
||||
#undef __USE_POSIX199309
|
||||
#undef __USE_POSIX199506
|
||||
#undef __USE_XOPEN
|
||||
#undef __USE_XOPEN_EXTENDED
|
||||
#undef __USE_UNIX98
|
||||
#undef __USE_XOPEN2K
|
||||
#undef __USE_XOPEN2KXSI
|
||||
#undef __USE_XOPEN2K8
|
||||
#undef __USE_XOPEN2K8XSI
|
||||
#undef __USE_LARGEFILE
|
||||
#undef __USE_LARGEFILE64
|
||||
#undef __USE_FILE_OFFSET64
|
||||
#undef __USE_MISC
|
||||
#undef __USE_ATFILE
|
||||
#undef __USE_GNU
|
||||
#undef __USE_FORTIFY_LEVEL
|
||||
#undef __KERNEL_STRICT_NAMES
|
||||
#undef __GLIBC_USE_DEPRECATED_GETS
|
||||
#undef __GLIBC_USE_DEPRECATED_SCANF
|
||||
|
||||
/* Suppress kernel-name space pollution unless user expressedly asks
|
||||
for it. */
|
||||
#ifndef _LOOSE_KERNEL_NAMES
|
||||
# define __KERNEL_STRICT_NAMES
|
||||
#endif
|
||||
|
||||
/* Convenience macro to test the version of gcc.
|
||||
Use like this:
|
||||
#if __GNUC_PREREQ (2,8)
|
||||
... code requiring gcc 2.8 or later ...
|
||||
#endif
|
||||
Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
|
||||
added in 2.0. */
|
||||
#if defined __GNUC__ && defined __GNUC_MINOR__
|
||||
# define __GNUC_PREREQ(maj, min) \
|
||||
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
||||
#else
|
||||
# define __GNUC_PREREQ(maj, min) 0
|
||||
#endif
|
||||
|
||||
/* Similarly for clang. Features added to GCC after version 4.2 may
|
||||
or may not also be available in clang, and clang's definitions of
|
||||
__GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
|
||||
features can be queried via __has_extension/__has_feature. */
|
||||
#if defined __clang_major__ && defined __clang_minor__
|
||||
# define __glibc_clang_prereq(maj, min) \
|
||||
((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
|
||||
#else
|
||||
# define __glibc_clang_prereq(maj, min) 0
|
||||
#endif
|
||||
|
||||
/* Whether to use feature set F. */
|
||||
#define __GLIBC_USE(F) __GLIBC_USE_ ## F
|
||||
|
||||
/* _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
|
||||
_DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
|
||||
issue a warning; the expectation is that the source is being
|
||||
transitioned to use the new macro. */
|
||||
#if (defined _BSD_SOURCE || defined _SVID_SOURCE) \
|
||||
&& !defined _DEFAULT_SOURCE
|
||||
# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
|
||||
# undef _DEFAULT_SOURCE
|
||||
# define _DEFAULT_SOURCE 1
|
||||
#endif
|
||||
|
||||
/* If _GNU_SOURCE was defined by the user, turn on all the other features. */
|
||||
#ifdef _GNU_SOURCE
|
||||
# undef _ISOC95_SOURCE
|
||||
# define _ISOC95_SOURCE 1
|
||||
# undef _ISOC99_SOURCE
|
||||
# define _ISOC99_SOURCE 1
|
||||
# undef _ISOC11_SOURCE
|
||||
# define _ISOC11_SOURCE 1
|
||||
# undef _POSIX_SOURCE
|
||||
# define _POSIX_SOURCE 1
|
||||
# undef _POSIX_C_SOURCE
|
||||
# define _POSIX_C_SOURCE 200809L
|
||||
# undef _XOPEN_SOURCE
|
||||
# define _XOPEN_SOURCE 700
|
||||
# undef _XOPEN_SOURCE_EXTENDED
|
||||
# define _XOPEN_SOURCE_EXTENDED 1
|
||||
# undef _LARGEFILE64_SOURCE
|
||||
# define _LARGEFILE64_SOURCE 1
|
||||
# undef _DEFAULT_SOURCE
|
||||
# define _DEFAULT_SOURCE 1
|
||||
# undef _ATFILE_SOURCE
|
||||
# define _ATFILE_SOURCE 1
|
||||
#endif
|
||||
|
||||
/* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
|
||||
define _DEFAULT_SOURCE. */
|
||||
#if (defined _DEFAULT_SOURCE \
|
||||
|| (!defined __STRICT_ANSI__ \
|
||||
&& !defined _ISOC99_SOURCE && !defined _ISOC11_SOURCE \
|
||||
&& !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE \
|
||||
&& !defined _XOPEN_SOURCE))
|
||||
# undef _DEFAULT_SOURCE
|
||||
# define _DEFAULT_SOURCE 1
|
||||
#endif
|
||||
|
||||
/* This is to enable the ISO C11 extension. */
|
||||
#if (defined _ISOC11_SOURCE \
|
||||
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L))
|
||||
# define __USE_ISOC11 1
|
||||
#endif
|
||||
|
||||
/* This is to enable the ISO C99 extension. */
|
||||
#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
|
||||
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
|
||||
# define __USE_ISOC99 1
|
||||
#endif
|
||||
|
||||
/* This is to enable the ISO C90 Amendment 1:1995 extension. */
|
||||
#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
|
||||
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L))
|
||||
# define __USE_ISOC95 1
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
/* This is to enable compatibility for ISO C++17. */
|
||||
# if __cplusplus >= 201703L
|
||||
# define __USE_ISOC11 1
|
||||
# endif
|
||||
/* This is to enable compatibility for ISO C++11.
|
||||
Check the temporary macro for now, too. */
|
||||
# if __cplusplus >= 201103L || defined __GXX_EXPERIMENTAL_CXX0X__
|
||||
# define __USE_ISOCXX11 1
|
||||
# define __USE_ISOC99 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
|
||||
is defined, use POSIX.1-2008 (or another version depending on
|
||||
_XOPEN_SOURCE). */
|
||||
#ifdef _DEFAULT_SOURCE
|
||||
# if !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE
|
||||
# define __USE_POSIX_IMPLICITLY 1
|
||||
# endif
|
||||
# undef _POSIX_SOURCE
|
||||
# define _POSIX_SOURCE 1
|
||||
# undef _POSIX_C_SOURCE
|
||||
# define _POSIX_C_SOURCE 200809L
|
||||
#endif
|
||||
|
||||
#if ((!defined __STRICT_ANSI__ \
|
||||
|| (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500)) \
|
||||
&& !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
|
||||
# define _POSIX_SOURCE 1
|
||||
# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500
|
||||
# define _POSIX_C_SOURCE 2
|
||||
# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600
|
||||
# define _POSIX_C_SOURCE 199506L
|
||||
# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 700
|
||||
# define _POSIX_C_SOURCE 200112L
|
||||
# else
|
||||
# define _POSIX_C_SOURCE 200809L
|
||||
# endif
|
||||
# define __USE_POSIX_IMPLICITLY 1
|
||||
#endif
|
||||
|
||||
/* Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
|
||||
defined in all multithreaded code. GNU libc has not required this
|
||||
for many years. We now treat them as compatibility synonyms for
|
||||
_POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
|
||||
comprehensive support for multithreaded code. Using them never
|
||||
lowers the selected level of POSIX conformance, only raises it. */
|
||||
#if ((!defined _POSIX_C_SOURCE || (_POSIX_C_SOURCE - 0) < 199506L) \
|
||||
&& (defined _REENTRANT || defined _THREAD_SAFE))
|
||||
# define _POSIX_SOURCE 1
|
||||
# undef _POSIX_C_SOURCE
|
||||
# define _POSIX_C_SOURCE 199506L
|
||||
#endif
|
||||
|
||||
#if (defined _POSIX_SOURCE \
|
||||
|| (defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1) \
|
||||
|| defined _XOPEN_SOURCE)
|
||||
# define __USE_POSIX 1
|
||||
#endif
|
||||
|
||||
#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE
|
||||
# define __USE_POSIX2 1
|
||||
#endif
|
||||
|
||||
#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L
|
||||
# define __USE_POSIX199309 1
|
||||
#endif
|
||||
|
||||
#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L
|
||||
# define __USE_POSIX199506 1
|
||||
#endif
|
||||
|
||||
#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L
|
||||
# define __USE_XOPEN2K 1
|
||||
# undef __USE_ISOC95
|
||||
# define __USE_ISOC95 1
|
||||
# undef __USE_ISOC99
|
||||
# define __USE_ISOC99 1
|
||||
#endif
|
||||
|
||||
#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L
|
||||
# define __USE_XOPEN2K8 1
|
||||
# undef _ATFILE_SOURCE
|
||||
# define _ATFILE_SOURCE 1
|
||||
#endif
|
||||
|
||||
#ifdef _XOPEN_SOURCE
|
||||
# define __USE_XOPEN 1
|
||||
# if (_XOPEN_SOURCE - 0) >= 500
|
||||
# define __USE_XOPEN_EXTENDED 1
|
||||
# define __USE_UNIX98 1
|
||||
# undef _LARGEFILE_SOURCE
|
||||
# define _LARGEFILE_SOURCE 1
|
||||
# if (_XOPEN_SOURCE - 0) >= 600
|
||||
# if (_XOPEN_SOURCE - 0) >= 700
|
||||
# define __USE_XOPEN2K8 1
|
||||
# define __USE_XOPEN2K8XSI 1
|
||||
# endif
|
||||
# define __USE_XOPEN2K 1
|
||||
# define __USE_XOPEN2KXSI 1
|
||||
# undef __USE_ISOC95
|
||||
# define __USE_ISOC95 1
|
||||
# undef __USE_ISOC99
|
||||
# define __USE_ISOC99 1
|
||||
# endif
|
||||
# else
|
||||
# ifdef _XOPEN_SOURCE_EXTENDED
|
||||
# define __USE_XOPEN_EXTENDED 1
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef _LARGEFILE_SOURCE
|
||||
# define __USE_LARGEFILE 1
|
||||
#endif
|
||||
|
||||
#ifdef _LARGEFILE64_SOURCE
|
||||
# define __USE_LARGEFILE64 1
|
||||
#endif
|
||||
|
||||
#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
|
||||
# define __USE_FILE_OFFSET64 1
|
||||
#endif
|
||||
|
||||
#if defined _DEFAULT_SOURCE
|
||||
# define __USE_MISC 1
|
||||
#endif
|
||||
|
||||
#ifdef _ATFILE_SOURCE
|
||||
# define __USE_ATFILE 1
|
||||
#endif
|
||||
|
||||
#ifdef _GNU_SOURCE
|
||||
# define __USE_GNU 1
|
||||
#endif
|
||||
|
||||
#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0
|
||||
# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
|
||||
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
|
||||
# elif !__GNUC_PREREQ (4, 1)
|
||||
# warning _FORTIFY_SOURCE requires GCC 4.1 or later
|
||||
# elif _FORTIFY_SOURCE > 1
|
||||
# define __USE_FORTIFY_LEVEL 2
|
||||
# else
|
||||
# define __USE_FORTIFY_LEVEL 1
|
||||
# endif
|
||||
#endif
|
||||
#ifndef __USE_FORTIFY_LEVEL
|
||||
# define __USE_FORTIFY_LEVEL 0
|
||||
#endif
|
||||
|
||||
/* The function 'gets' existed in C89, but is impossible to use
|
||||
safely. It has been removed from ISO C11 and ISO C++14. Note: for
|
||||
compatibility with various implementations of <cstdio>, this test
|
||||
must consider only the value of __cplusplus when compiling C++. */
|
||||
#if defined __cplusplus ? __cplusplus >= 201402L : defined __USE_ISOC11
|
||||
# define __GLIBC_USE_DEPRECATED_GETS 0
|
||||
#else
|
||||
# define __GLIBC_USE_DEPRECATED_GETS 1
|
||||
#endif
|
||||
|
||||
/* GNU formerly extended the scanf functions with modified format
|
||||
specifiers %as, %aS, and %a[...] that allocate a buffer for the
|
||||
input using malloc. This extension conflicts with ISO C99, which
|
||||
defines %a as a standalone format specifier that reads a floating-
|
||||
point number; moreover, POSIX.1-2008 provides the same feature
|
||||
using the modifier letter 'm' instead (%ms, %mS, %m[...]).
|
||||
|
||||
We now follow C99 unless GNU extensions are active and the compiler
|
||||
is specifically in C89 or C++98 mode (strict or not). For
|
||||
instance, with GCC, -std=gnu11 will have C99-compliant scanf with
|
||||
or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
|
||||
old extension. */
|
||||
#if defined __USE_GNU && \
|
||||
(defined __cplusplus \
|
||||
? (__cplusplus < 201103L && !defined __GXX_EXPERIMENTAL_CXX0X__) \
|
||||
: (!defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L))
|
||||
# define __GLIBC_USE_DEPRECATED_SCANF 1
|
||||
#else
|
||||
# define __GLIBC_USE_DEPRECATED_SCANF 0
|
||||
#endif
|
||||
|
||||
/* Get definitions of __STDC_* predefined macros, if the compiler has
|
||||
not preincluded this header automatically. */
|
||||
#include <stdc-predef.h>
|
||||
|
||||
/* This macro indicates that the installed library is the GNU C Library.
|
||||
For historic reasons the value now is 6 and this will stay from now
|
||||
on. The use of this variable is deprecated. Use __GLIBC__ and
|
||||
__GLIBC_MINOR__ now (see below) when you want to test for a specific
|
||||
GNU C library version and use the values in <gnu/lib-names.h> to get
|
||||
the sonames of the shared libraries. */
|
||||
#undef __GNU_LIBRARY__
|
||||
#define __GNU_LIBRARY__ 6
|
||||
|
||||
/* Major and minor version number of the GNU C library package. Use
|
||||
these macros to test for features in specific releases. */
|
||||
#define __GLIBC__ 2
|
||||
#define __GLIBC_MINOR__ 29
|
||||
|
||||
#define __GLIBC_PREREQ(maj, min) \
|
||||
((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
|
||||
|
||||
/* This is here only because every header file already includes this one. */
|
||||
#ifndef __ASSEMBLER__
|
||||
# ifndef _SYS_CDEFS_H
|
||||
# include <sys/cdefs.h>
|
||||
# endif
|
||||
|
||||
/* If we don't have __REDIRECT, prototypes will be missing if
|
||||
__USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */
|
||||
# if defined __USE_FILE_OFFSET64 && !defined __REDIRECT
|
||||
# define __USE_LARGEFILE 1
|
||||
# define __USE_LARGEFILE64 1
|
||||
# endif
|
||||
|
||||
#endif /* !ASSEMBLER */
|
||||
|
||||
/* Decide whether we can define 'extern inline' functions in headers. */
|
||||
#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
|
||||
&& !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \
|
||||
&& defined __extern_inline
|
||||
# define __USE_EXTERN_INLINES 1
|
||||
#endif
|
||||
|
||||
|
||||
/* This is here only because every header file already includes this one.
|
||||
Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
|
||||
<gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
|
||||
that will always return failure (and set errno to ENOSYS). */
|
||||
#include <gnu/stubs.h>
|
||||
|
||||
|
||||
#endif /* features.h */
|
|
@ -0,0 +1,2 @@
|
|||
/* This is a placeholder used only while compiling libc.
|
||||
The installed gnu/stubs.h file is created by make install. */
|
|
@ -0,0 +1,44 @@
|
|||
/* AUTOGENERATED BY gen-libc-modules.awk, DO NOT EDIT. */
|
||||
|
||||
#define MODULE_iconvprogs 1
|
||||
#define MODULE_iconvdata 2
|
||||
#define MODULE_ldconfig 3
|
||||
#define MODULE_lddlibc4 4
|
||||
#define MODULE_libmemusage 5
|
||||
#define MODULE_libSegFault 6
|
||||
#define MODULE_libpcprofile 7
|
||||
#define MODULE_librpcsvc 8
|
||||
#define MODULE_locale_programs 9
|
||||
#define MODULE_memusagestat 10
|
||||
#define MODULE_nonlib 11
|
||||
#define MODULE_nscd 12
|
||||
#define MODULE_extramodules 13
|
||||
#define MODULE_libnldbl 14
|
||||
#define MODULE_libsupport 15
|
||||
#define MODULE_testsuite 16
|
||||
#define MODULE_LIBS_BEGIN 17
|
||||
#define MODULE_rtld 18
|
||||
#define MODULE_libc 19
|
||||
#define MODULE_libnss_nis 20
|
||||
#define MODULE_libBrokenLocale 21
|
||||
#define MODULE_libpthread 22
|
||||
#define MODULE_libthread_db 23
|
||||
#define MODULE_libnss_nisplus 24
|
||||
#define MODULE_libcrypt 25
|
||||
#define MODULE_libdl 26
|
||||
#define MODULE_libgcc_s 27
|
||||
#define MODULE_libnss_test1 28
|
||||
#define MODULE_libnsl 29
|
||||
#define MODULE_libutil 30
|
||||
#define MODULE_libnss_ldap 31
|
||||
#define MODULE_libnss_test2 32
|
||||
#define MODULE_libnss_dns 33
|
||||
#define MODULE_libnss_compat 34
|
||||
#define MODULE_libmvec 35
|
||||
#define MODULE_libresolv 36
|
||||
#define MODULE_libnss_db 37
|
||||
#define MODULE_libm 38
|
||||
#define MODULE_libnss_files 39
|
||||
#define MODULE_librt 40
|
||||
#define MODULE_libnss_hesiod 41
|
||||
#define MODULE_libanl 42
|
|
@ -0,0 +1,60 @@
|
|||
/* Helper macros for pointer arithmetic.
|
||||
Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _LIBC_POINTER_ARITH_H
|
||||
#define _LIBC_POINTER_ARITH_H 1
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* 1 if 'type' is a pointer type, 0 otherwise. */
|
||||
# define __pointer_type(type) (__builtin_classify_type ((type) 0) == 5)
|
||||
|
||||
/* intptr_t if P is true, or T if P is false. */
|
||||
# define __integer_if_pointer_type_sub(T, P) \
|
||||
__typeof__ (*(0 ? (__typeof__ (0 ? (T *) 0 : (void *) (P))) 0 \
|
||||
: (__typeof__ (0 ? (intptr_t *) 0 : (void *) (!(P)))) 0))
|
||||
|
||||
/* intptr_t if EXPR has a pointer type, or the type of EXPR otherwise. */
|
||||
# define __integer_if_pointer_type(expr) \
|
||||
__integer_if_pointer_type_sub(__typeof__ ((__typeof__ (expr)) 0), \
|
||||
__pointer_type (__typeof__ (expr)))
|
||||
|
||||
/* Cast an integer or a pointer VAL to integer with proper type. */
|
||||
# define cast_to_integer(val) ((__integer_if_pointer_type (val)) (val))
|
||||
|
||||
/* Align a value by rounding down to closest size.
|
||||
e.g. Using size of 4096, we get this behavior:
|
||||
{4095, 4096, 4097} = {0, 4096, 4096}. */
|
||||
#define ALIGN_DOWN(base, size) ((base) & -((__typeof__ (base)) (size)))
|
||||
|
||||
/* Align a value by rounding up to closest size.
|
||||
e.g. Using size of 4096, we get this behavior:
|
||||
{4095, 4096, 4097} = {4096, 4096, 8192}.
|
||||
|
||||
Note: The size argument has side effects (expanded multiple times). */
|
||||
#define ALIGN_UP(base, size) ALIGN_DOWN ((base) + (size) - 1, (size))
|
||||
|
||||
/* Same as ALIGN_DOWN(), but automatically casts when base is a pointer. */
|
||||
#define PTR_ALIGN_DOWN(base, size) \
|
||||
((__typeof__ (base)) ALIGN_DOWN ((uintptr_t) (base), (size)))
|
||||
|
||||
/* Same as ALIGN_UP(), but automatically casts when base is a pointer. */
|
||||
#define PTR_ALIGN_UP(base, size) \
|
||||
((__typeof__ (base)) ALIGN_UP ((uintptr_t) (base), (size)))
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,16 @@
|
|||
#include_next <pthread.h>
|
||||
|
||||
#ifndef _ISOMAC
|
||||
/* Prototypes repeated instead of using __typeof because pthread.h is
|
||||
included in C++ tests, and declaring functions with __typeof and
|
||||
__THROW doesn't work for C++. */
|
||||
extern int __pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
|
||||
const pthread_barrierattr_t *__restrict
|
||||
__attr, unsigned int __count)
|
||||
__THROW __nonnull ((1));
|
||||
extern int __pthread_barrier_wait (pthread_barrier_t *__barrier)
|
||||
__THROWNL __nonnull ((1));
|
||||
|
||||
/* This function is called to initialize the pthread library. */
|
||||
extern void __pthread_initialize (void) __attribute__ ((weak));
|
||||
#endif
|
|
@ -0,0 +1,63 @@
|
|||
#ifndef _SIGNAL_H
|
||||
# include <signal/signal.h>
|
||||
|
||||
# ifndef _ISOMAC
|
||||
libc_hidden_proto (sigemptyset)
|
||||
libc_hidden_proto (sigfillset)
|
||||
libc_hidden_proto (sigaddset)
|
||||
libc_hidden_proto (sigdelset)
|
||||
libc_hidden_proto (sigismember)
|
||||
extern int __sigpause (int sig_or_mask, int is_sig);
|
||||
libc_hidden_proto (__sigpause)
|
||||
libc_hidden_proto (raise)
|
||||
libc_hidden_proto (__libc_current_sigrtmin)
|
||||
libc_hidden_proto (__libc_current_sigrtmax)
|
||||
libc_hidden_proto (_sys_siglist)
|
||||
|
||||
/* Now define the internal interfaces. */
|
||||
extern __sighandler_t __bsd_signal (int __sig, __sighandler_t __handler);
|
||||
extern int __kill (__pid_t __pid, int __sig);
|
||||
libc_hidden_proto (__kill)
|
||||
extern int __sigaction (int __sig, const struct sigaction *__restrict __act,
|
||||
struct sigaction *__restrict __oact);
|
||||
libc_hidden_proto (__sigaction)
|
||||
extern int __sigblock (int __mask);
|
||||
libc_hidden_proto (__sigblock)
|
||||
extern int __sigsetmask (int __mask);
|
||||
extern int __sigprocmask (int __how,
|
||||
const sigset_t *__set, sigset_t *__oset);
|
||||
libc_hidden_proto (__sigprocmask)
|
||||
extern int __sigsuspend (const sigset_t *__set);
|
||||
libc_hidden_proto (__sigsuspend)
|
||||
extern int __sigwait (const sigset_t *__set, int *__sig);
|
||||
libc_hidden_proto (__sigwait)
|
||||
extern int __sigwaitinfo (const sigset_t *__set, siginfo_t *__info);
|
||||
libc_hidden_proto (__sigwaitinfo)
|
||||
extern int __sigtimedwait (const sigset_t *__set, siginfo_t *__info,
|
||||
const struct timespec *__timeout);
|
||||
libc_hidden_proto (__sigtimedwait)
|
||||
extern int __sigqueue (__pid_t __pid, int __sig,
|
||||
const union sigval __val);
|
||||
#ifdef __USE_MISC
|
||||
extern int __sigreturn (struct sigcontext *__scp);
|
||||
#endif
|
||||
extern int __sigaltstack (const stack_t *__ss,
|
||||
stack_t *__oss);
|
||||
libc_hidden_proto (__sigaltstack)
|
||||
extern int __libc_sigaction (int sig, const struct sigaction *act,
|
||||
struct sigaction *oact);
|
||||
libc_hidden_proto (__libc_sigaction)
|
||||
|
||||
extern int __default_sigpause (int mask);
|
||||
extern int __xpg_sigpause (int sig);
|
||||
|
||||
/* Allocate real-time signal with highest/lowest available priority. */
|
||||
extern int __libc_allocate_rtsig (int __high);
|
||||
|
||||
# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
|
||||
extern __typeof (__sigaction) __sigaction attribute_hidden;
|
||||
extern __typeof (__libc_sigaction) __libc_sigaction attribute_hidden;
|
||||
# endif
|
||||
|
||||
# endif /* _ISOMAC */
|
||||
#endif /* signal.h */
|
|
@ -0,0 +1,77 @@
|
|||
/* Macros for defining Systemtap <sys/sdt.h> static probe points.
|
||||
Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _STAP_PROBE_H
|
||||
#define _STAP_PROBE_H 1
|
||||
|
||||
#ifdef USE_STAP_PROBE
|
||||
|
||||
# include <sys/sdt.h>
|
||||
|
||||
/* Our code uses one macro LIBC_PROBE (name, n, arg1, ..., argn).
|
||||
|
||||
Without USE_STAP_PROBE, that does nothing but evaluates all
|
||||
its arguments (to prevent bit rot, unlike e.g. assert).
|
||||
|
||||
Systemtap's header defines the macros STAP_PROBE (provider, name) and
|
||||
STAP_PROBEn (provider, name, arg1, ..., argn). For "provider" we paste
|
||||
in MODULE_NAME (libc, libpthread, etc.) automagically.
|
||||
|
||||
The format of the arg parameters is discussed here:
|
||||
|
||||
https://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation
|
||||
|
||||
The precise details of how register names are specified is
|
||||
architecture specific and can be found in the gdb and SystemTap
|
||||
source code. */
|
||||
|
||||
# define LIBC_PROBE(name, n, ...) \
|
||||
LIBC_PROBE_1 (MODULE_NAME, name, n, ## __VA_ARGS__)
|
||||
|
||||
# define LIBC_PROBE_1(lib, name, n, ...) \
|
||||
STAP_PROBE##n (lib, name, ## __VA_ARGS__)
|
||||
|
||||
# define STAP_PROBE0 STAP_PROBE
|
||||
|
||||
# define LIBC_PROBE_ASM(name, template) \
|
||||
STAP_PROBE_ASM (MODULE_NAME, name, template)
|
||||
|
||||
# define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS
|
||||
|
||||
#else /* Not USE_STAP_PROBE. */
|
||||
|
||||
# ifndef __ASSEMBLER__
|
||||
/* Evaluate all the arguments and verify that N matches their number. */
|
||||
# define LIBC_PROBE(name, n, ...) STAP_PROBE##n (__VA_ARGS__)
|
||||
|
||||
# define STAP_PROBE0()
|
||||
# define STAP_PROBE1(a1)
|
||||
# define STAP_PROBE2(a1, a2)
|
||||
# define STAP_PROBE3(a1, a2, a3)
|
||||
# define STAP_PROBE4(a1, a2, a3, a4)
|
||||
|
||||
# else
|
||||
# define LIBC_PROBE(name, n, ...) /* Nothing. */
|
||||
# endif
|
||||
|
||||
# define LIBC_PROBE_ASM(name, template) /* Nothing. */
|
||||
# define LIBC_PROBE_ASM_OPERANDS(n, ...) /* Nothing. */
|
||||
|
||||
#endif /* USE_STAP_PROBE. */
|
||||
|
||||
#endif /* stap-probe.h */
|
|
@ -0,0 +1,60 @@
|
|||
/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _STDC_PREDEF_H
|
||||
#define _STDC_PREDEF_H 1
|
||||
|
||||
/* This header is separate from features.h so that the compiler can
|
||||
include it implicitly at the start of every compilation. It must
|
||||
not itself include <features.h> or any other header that includes
|
||||
<features.h> because the implicit include comes before any feature
|
||||
test macros that may be defined in a source file before it first
|
||||
explicitly includes a system header. GCC knows the name of this
|
||||
header in order to preinclude it. */
|
||||
|
||||
/* glibc's intent is to support the IEC 559 math functionality, real
|
||||
and complex. If the GCC (4.9 and later) predefined macros
|
||||
specifying compiler intent are available, use them to determine
|
||||
whether the overall intent is to support these features; otherwise,
|
||||
presume an older compiler has intent to support these features and
|
||||
define these macros by default. */
|
||||
|
||||
#ifdef __GCC_IEC_559
|
||||
# if __GCC_IEC_559 > 0
|
||||
# define __STDC_IEC_559__ 1
|
||||
# endif
|
||||
#else
|
||||
# define __STDC_IEC_559__ 1
|
||||
#endif
|
||||
|
||||
#ifdef __GCC_IEC_559_COMPLEX
|
||||
# if __GCC_IEC_559_COMPLEX > 0
|
||||
# define __STDC_IEC_559_COMPLEX__ 1
|
||||
# endif
|
||||
#else
|
||||
# define __STDC_IEC_559_COMPLEX__ 1
|
||||
#endif
|
||||
|
||||
/* wchar_t uses Unicode 10.0.0. Version 10.0 of the Unicode Standard is
|
||||
synchronized with ISO/IEC 10646:2017, fifth edition, plus
|
||||
the following additions from Amendment 1 to the fifth edition:
|
||||
- 56 emoji characters
|
||||
- 285 hentaigana
|
||||
- 3 additional Zanabazar Square characters */
|
||||
#define __STDC_ISO_10646__ 201706L
|
||||
|
||||
#endif
|
|
@ -0,0 +1,306 @@
|
|||
#ifndef _STDLIB_H
|
||||
|
||||
#ifndef _ISOMAC
|
||||
# include <stddef.h>
|
||||
#endif
|
||||
#include <stdlib/stdlib.h>
|
||||
|
||||
/* Now define the internal interfaces. */
|
||||
#if !defined _ISOMAC
|
||||
# include <sys/stat.h>
|
||||
|
||||
extern __typeof (strtol_l) __strtol_l;
|
||||
extern __typeof (strtoul_l) __strtoul_l;
|
||||
extern __typeof (strtoll_l) __strtoll_l;
|
||||
extern __typeof (strtoull_l) __strtoull_l;
|
||||
extern __typeof (strtod_l) __strtod_l;
|
||||
extern __typeof (strtof_l) __strtof_l;
|
||||
extern __typeof (strtold_l) __strtold_l;
|
||||
libc_hidden_proto (__strtol_l)
|
||||
libc_hidden_proto (__strtoul_l)
|
||||
libc_hidden_proto (__strtoll_l)
|
||||
libc_hidden_proto (__strtoull_l)
|
||||
libc_hidden_proto (__strtod_l)
|
||||
libc_hidden_proto (__strtof_l)
|
||||
libc_hidden_proto (__strtold_l)
|
||||
|
||||
libc_hidden_proto (exit)
|
||||
libc_hidden_proto (abort)
|
||||
libc_hidden_proto (getenv)
|
||||
extern __typeof (secure_getenv) __libc_secure_getenv;
|
||||
libc_hidden_proto (__libc_secure_getenv)
|
||||
libc_hidden_proto (bsearch)
|
||||
libc_hidden_proto (qsort)
|
||||
extern __typeof (qsort_r) __qsort_r;
|
||||
libc_hidden_proto (__qsort_r)
|
||||
libc_hidden_proto (lrand48_r)
|
||||
libc_hidden_proto (wctomb)
|
||||
|
||||
extern long int __random (void) attribute_hidden;
|
||||
extern void __srandom (unsigned int __seed);
|
||||
extern char *__initstate (unsigned int __seed, char *__statebuf,
|
||||
size_t __statelen);
|
||||
extern char *__setstate (char *__statebuf);
|
||||
extern int __random_r (struct random_data *__buf, int32_t *__result)
|
||||
attribute_hidden;
|
||||
extern int __srandom_r (unsigned int __seed, struct random_data *__buf)
|
||||
attribute_hidden;
|
||||
extern int __initstate_r (unsigned int __seed, char *__statebuf,
|
||||
size_t __statelen, struct random_data *__buf)
|
||||
attribute_hidden;
|
||||
extern int __setstate_r (char *__statebuf, struct random_data *__buf)
|
||||
attribute_hidden;
|
||||
extern int __rand_r (unsigned int *__seed);
|
||||
extern int __erand48_r (unsigned short int __xsubi[3],
|
||||
struct drand48_data *__buffer, double *__result)
|
||||
attribute_hidden;
|
||||
extern int __nrand48_r (unsigned short int __xsubi[3],
|
||||
struct drand48_data *__buffer,
|
||||
long int *__result) attribute_hidden;
|
||||
extern int __jrand48_r (unsigned short int __xsubi[3],
|
||||
struct drand48_data *__buffer,
|
||||
long int *__result) attribute_hidden;
|
||||
extern int __srand48_r (long int __seedval,
|
||||
struct drand48_data *__buffer) attribute_hidden;
|
||||
extern int __seed48_r (unsigned short int __seed16v[3],
|
||||
struct drand48_data *__buffer) attribute_hidden;
|
||||
extern int __lcong48_r (unsigned short int __param[7],
|
||||
struct drand48_data *__buffer) attribute_hidden;
|
||||
|
||||
/* Internal function to compute next state of the generator. */
|
||||
extern int __drand48_iterate (unsigned short int __xsubi[3],
|
||||
struct drand48_data *__buffer)
|
||||
attribute_hidden;
|
||||
|
||||
/* Global state for non-reentrant functions. Defined in drand48-iter.c. */
|
||||
extern struct drand48_data __libc_drand48_data attribute_hidden;
|
||||
|
||||
extern int __setenv (const char *__name, const char *__value, int __replace)
|
||||
attribute_hidden;
|
||||
extern int __unsetenv (const char *__name) attribute_hidden;
|
||||
extern int __clearenv (void) attribute_hidden;
|
||||
extern char *__mktemp (char *__template) __THROW __nonnull ((1));
|
||||
extern char *__canonicalize_file_name (const char *__name);
|
||||
extern char *__realpath (const char *__name, char *__resolved);
|
||||
libc_hidden_proto (__realpath)
|
||||
extern int __ptsname_r (int __fd, char *__buf, size_t __buflen)
|
||||
attribute_hidden;
|
||||
# ifndef _ISOMAC
|
||||
extern int __ptsname_internal (int fd, char *buf, size_t buflen,
|
||||
struct stat64 *stp) attribute_hidden;
|
||||
# endif
|
||||
extern int __getpt (void);
|
||||
extern int __posix_openpt (int __oflag) attribute_hidden;
|
||||
|
||||
extern int __add_to_environ (const char *name, const char *value,
|
||||
const char *combines, int replace)
|
||||
attribute_hidden;
|
||||
extern void _quicksort (void *const pbase, size_t total_elems,
|
||||
size_t size, __compar_d_fn_t cmp, void *arg);
|
||||
|
||||
extern int __on_exit (void (*__func) (int __status, void *__arg), void *__arg);
|
||||
|
||||
extern int __cxa_atexit (void (*func) (void *), void *arg, void *d);
|
||||
libc_hidden_proto (__cxa_atexit);
|
||||
|
||||
extern int __cxa_thread_atexit_impl (void (*func) (void *), void *arg,
|
||||
void *d);
|
||||
extern void __call_tls_dtors (void)
|
||||
#ifndef SHARED
|
||||
__attribute__ ((weak))
|
||||
#endif
|
||||
;
|
||||
libc_hidden_proto (__call_tls_dtors)
|
||||
|
||||
extern void __cxa_finalize (void *d);
|
||||
|
||||
extern int __posix_memalign (void **memptr, size_t alignment, size_t size);
|
||||
|
||||
extern void *__libc_memalign (size_t alignment, size_t size)
|
||||
__attribute_malloc__;
|
||||
|
||||
extern void *__libc_reallocarray (void *__ptr, size_t __nmemb, size_t __size)
|
||||
__THROW __attribute_warn_unused_result__;
|
||||
libc_hidden_proto (__libc_reallocarray)
|
||||
|
||||
extern int __libc_system (const char *line);
|
||||
|
||||
|
||||
extern double __strtod_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr, int __group)
|
||||
__THROW __nonnull ((1)) __wur;
|
||||
extern float __strtof_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr, int __group)
|
||||
__THROW __nonnull ((1)) __wur;
|
||||
extern long double __strtold_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __group)
|
||||
__THROW __nonnull ((1)) __wur;
|
||||
extern long int __strtol_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __base, int __group)
|
||||
__THROW __nonnull ((1)) __wur;
|
||||
extern unsigned long int __strtoul_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __base, int __group)
|
||||
__THROW __nonnull ((1)) __wur;
|
||||
__extension__
|
||||
extern long long int __strtoll_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __base, int __group)
|
||||
__THROW __nonnull ((1)) __wur;
|
||||
__extension__
|
||||
extern unsigned long long int __strtoull_internal (const char *
|
||||
__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __base, int __group)
|
||||
__THROW __nonnull ((1)) __wur;
|
||||
libc_hidden_proto (__strtof_internal)
|
||||
libc_hidden_proto (__strtod_internal)
|
||||
libc_hidden_proto (__strtold_internal)
|
||||
libc_hidden_proto (__strtol_internal)
|
||||
libc_hidden_proto (__strtoll_internal)
|
||||
libc_hidden_proto (__strtoul_internal)
|
||||
libc_hidden_proto (__strtoull_internal)
|
||||
|
||||
extern double ____strtod_l_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr, int __group,
|
||||
locale_t __loc);
|
||||
extern float ____strtof_l_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr, int __group,
|
||||
locale_t __loc);
|
||||
extern long double ____strtold_l_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __group, locale_t __loc);
|
||||
extern long int ____strtol_l_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __base, int __group,
|
||||
locale_t __loc);
|
||||
extern unsigned long int ____strtoul_l_internal (const char *
|
||||
__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __base, int __group,
|
||||
locale_t __loc);
|
||||
__extension__
|
||||
extern long long int ____strtoll_l_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __base, int __group,
|
||||
locale_t __loc);
|
||||
__extension__
|
||||
extern unsigned long long int ____strtoull_l_internal (const char *
|
||||
__restrict __nptr,
|
||||
char **
|
||||
__restrict __endptr,
|
||||
int __base, int __group,
|
||||
locale_t __loc);
|
||||
|
||||
libc_hidden_proto (____strtof_l_internal)
|
||||
libc_hidden_proto (____strtod_l_internal)
|
||||
libc_hidden_proto (____strtold_l_internal)
|
||||
libc_hidden_proto (____strtol_l_internal)
|
||||
libc_hidden_proto (____strtoll_l_internal)
|
||||
libc_hidden_proto (____strtoul_l_internal)
|
||||
libc_hidden_proto (____strtoull_l_internal)
|
||||
|
||||
libc_hidden_proto (strtof)
|
||||
libc_hidden_proto (strtod)
|
||||
libc_hidden_proto (strtold)
|
||||
libc_hidden_proto (strtol)
|
||||
libc_hidden_proto (strtoll)
|
||||
libc_hidden_proto (strtoul)
|
||||
libc_hidden_proto (strtoull)
|
||||
|
||||
libc_hidden_proto (atoi)
|
||||
|
||||
extern float __strtof_nan (const char *, char **, char);
|
||||
extern double __strtod_nan (const char *, char **, char);
|
||||
extern long double __strtold_nan (const char *, char **, char);
|
||||
extern float __wcstof_nan (const wchar_t *, wchar_t **, wchar_t);
|
||||
extern double __wcstod_nan (const wchar_t *, wchar_t **, wchar_t);
|
||||
extern long double __wcstold_nan (const wchar_t *, wchar_t **, wchar_t);
|
||||
|
||||
libc_hidden_proto (__strtof_nan)
|
||||
libc_hidden_proto (__strtod_nan)
|
||||
libc_hidden_proto (__strtold_nan)
|
||||
libc_hidden_proto (__wcstof_nan)
|
||||
libc_hidden_proto (__wcstod_nan)
|
||||
libc_hidden_proto (__wcstold_nan)
|
||||
|
||||
/* Enable _FloatN bits as needed. */
|
||||
#include <bits/floatn.h>
|
||||
|
||||
#if __HAVE_DISTINCT_FLOAT128
|
||||
extern __typeof (strtof128_l) __strtof128_l;
|
||||
|
||||
libc_hidden_proto (__strtof128_l)
|
||||
libc_hidden_proto (strtof128)
|
||||
|
||||
extern _Float128 __strtof128_nan (const char *, char **, char);
|
||||
extern _Float128 __wcstof128_nan (const wchar_t *, wchar_t **, wchar_t);
|
||||
|
||||
libc_hidden_proto (__strtof128_nan)
|
||||
libc_hidden_proto (__wcstof128_nan)
|
||||
|
||||
extern _Float128 __strtof128_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __group);
|
||||
libc_hidden_proto (__strtof128_internal)
|
||||
|
||||
extern _Float128 ____strtof128_l_internal (const char *__restrict __nptr,
|
||||
char **__restrict __endptr,
|
||||
int __group, locale_t __loc);
|
||||
|
||||
libc_hidden_proto (____strtof128_l_internal)
|
||||
#endif
|
||||
|
||||
extern char *__ecvt (double __value, int __ndigit, int *__restrict __decpt,
|
||||
int *__restrict __sign);
|
||||
extern char *__fcvt (double __value, int __ndigit, int *__restrict __decpt,
|
||||
int *__restrict __sign);
|
||||
extern char *__gcvt (double __value, int __ndigit, char *__buf);
|
||||
extern int __ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
|
||||
int *__restrict __sign, char *__restrict __buf,
|
||||
size_t __len);
|
||||
libc_hidden_proto (__ecvt_r)
|
||||
extern int __fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
|
||||
int *__restrict __sign, char *__restrict __buf,
|
||||
size_t __len);
|
||||
libc_hidden_proto (__fcvt_r)
|
||||
extern char *__qecvt (long double __value, int __ndigit,
|
||||
int *__restrict __decpt, int *__restrict __sign);
|
||||
extern char *__qfcvt (long double __value, int __ndigit,
|
||||
int *__restrict __decpt, int *__restrict __sign);
|
||||
extern char *__qgcvt (long double __value, int __ndigit, char *__buf);
|
||||
extern int __qecvt_r (long double __value, int __ndigit,
|
||||
int *__restrict __decpt, int *__restrict __sign,
|
||||
char *__restrict __buf, size_t __len);
|
||||
libc_hidden_proto (__qecvt_r)
|
||||
extern int __qfcvt_r (long double __value, int __ndigit,
|
||||
int *__restrict __decpt, int *__restrict __sign,
|
||||
char *__restrict __buf, size_t __len);
|
||||
libc_hidden_proto (__qfcvt_r)
|
||||
|
||||
# if IS_IN (libc)
|
||||
# undef MB_CUR_MAX
|
||||
# define MB_CUR_MAX (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX))
|
||||
# endif
|
||||
|
||||
extern void *__default_morecore (ptrdiff_t) __THROW;
|
||||
libc_hidden_proto (__default_morecore)
|
||||
|
||||
struct abort_msg_s
|
||||
{
|
||||
unsigned int size;
|
||||
char msg[0];
|
||||
};
|
||||
extern struct abort_msg_s *__abort_msg;
|
||||
libc_hidden_proto (__abort_msg)
|
||||
|
||||
# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
|
||||
extern __typeof (unsetenv) unsetenv attribute_hidden;
|
||||
extern __typeof (__strtoul_internal) __strtoul_internal attribute_hidden;
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* include/stdlib.h */
|
|
@ -0,0 +1,18 @@
|
|||
#ifndef _SYS_CDEFS_H
|
||||
|
||||
#include <misc/sys/cdefs.h>
|
||||
|
||||
#ifndef _ISOMAC
|
||||
/* The compiler will optimize based on the knowledge the parameter is
|
||||
not NULL. This will omit tests. A robust implementation cannot allow
|
||||
this so when compiling glibc itself we ignore this attribute. */
|
||||
# undef __nonnull
|
||||
# define __nonnull(params)
|
||||
|
||||
extern void __chk_fail (void) __attribute__ ((__noreturn__));
|
||||
libc_hidden_proto (__chk_fail)
|
||||
rtld_hidden_proto (__chk_fail)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,18 @@
|
|||
#ifndef _SYS_SELECT_H
|
||||
#include <misc/sys/select.h>
|
||||
|
||||
#ifndef _ISOMAC
|
||||
/* Now define the internal interfaces. */
|
||||
extern int __pselect (int __nfds, fd_set *__readfds,
|
||||
fd_set *__writefds, fd_set *__exceptfds,
|
||||
const struct timespec *__timeout,
|
||||
const __sigset_t *__sigmask);
|
||||
|
||||
extern int __select (int __nfds, fd_set *__restrict __readfds,
|
||||
fd_set *__restrict __writefds,
|
||||
fd_set *__restrict __exceptfds,
|
||||
struct timeval *__restrict __timeout);
|
||||
libc_hidden_proto (__select)
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -0,0 +1 @@
|
|||
#include <signal/sys/signal.h>
|
|
@ -0,0 +1,64 @@
|
|||
#ifndef _SYS_STAT_H
|
||||
#include <io/sys/stat.h>
|
||||
|
||||
#ifndef _ISOMAC
|
||||
/* Now define the internal interfaces. */
|
||||
extern int __stat (const char *__file, struct stat *__buf);
|
||||
extern int __fstat (int __fd, struct stat *__buf);
|
||||
extern int __lstat (const char *__file, struct stat *__buf);
|
||||
extern int __chmod (const char *__file, __mode_t __mode);
|
||||
libc_hidden_proto (__chmod)
|
||||
extern int __fchmod (int __fd, __mode_t __mode);
|
||||
extern __mode_t __umask (__mode_t __mask);
|
||||
extern int __mkdir (const char *__path, __mode_t __mode);
|
||||
libc_hidden_proto (__mkdir)
|
||||
extern int __mknod (const char *__path,
|
||||
__mode_t __mode, __dev_t __dev);
|
||||
#if IS_IN (libc) || (IS_IN (rtld) && !defined NO_RTLD_HIDDEN)
|
||||
hidden_proto (__fxstat)
|
||||
hidden_proto (__fxstat64)
|
||||
hidden_proto (__lxstat)
|
||||
hidden_proto (__lxstat64)
|
||||
hidden_proto (__xstat)
|
||||
hidden_proto (__xstat64)
|
||||
#endif
|
||||
extern __inline__ int __stat (const char *__path, struct stat *__statbuf)
|
||||
{
|
||||
return __xstat (_STAT_VER, __path, __statbuf);
|
||||
}
|
||||
libc_hidden_proto (__xmknod)
|
||||
extern __inline__ int __mknod (const char *__path, __mode_t __mode,
|
||||
__dev_t __dev)
|
||||
{
|
||||
return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
|
||||
}
|
||||
libc_hidden_proto (__xmknodat)
|
||||
|
||||
libc_hidden_proto (__fxstatat)
|
||||
libc_hidden_proto (__fxstatat64)
|
||||
|
||||
# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
|
||||
extern __typeof (__fxstatat64) __fxstatat64 attribute_hidden;
|
||||
# endif
|
||||
|
||||
/* The `stat', `fstat', `lstat' functions have to be handled special since
|
||||
even while not compiling the library with optimization calls to these
|
||||
functions in the shared library must reference the `xstat' etc functions.
|
||||
We have to use macros but we cannot define them in the normal headers
|
||||
since on user level we must use real functions. */
|
||||
#define stat(fname, buf) __xstat (_STAT_VER, fname, buf)
|
||||
#define lstat(fname, buf) __lxstat (_STAT_VER, fname, buf)
|
||||
#define __lstat(fname, buf) __lxstat (_STAT_VER, fname, buf)
|
||||
#define lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf)
|
||||
#define __lstat64(fname, buf) __lxstat64 (_STAT_VER, fname, buf)
|
||||
#define stat64(fname, buf) __xstat64 (_STAT_VER, fname, buf)
|
||||
#define fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf)
|
||||
#define __fstat64(fd, buf) __fxstat64 (_STAT_VER, fd, buf)
|
||||
#define fstat(fd, buf) __fxstat (_STAT_VER, fd, buf)
|
||||
#define __fstat(fd, buf) __fxstat (_STAT_VER, fd, buf)
|
||||
#define __fstatat(dfd, fname, buf, flag) \
|
||||
__fxstatat (_STAT_VER, dfd, fname, buf, flag)
|
||||
#define __fstatat64(dfd, fname, buf, flag) \
|
||||
__fxstatat64 (_STAT_VER, dfd, fname, buf, flag)
|
||||
#endif
|
||||
#endif
|
|
@ -0,0 +1 @@
|
|||
#include <posix/sys/types.h>
|
|
@ -0,0 +1 @@
|
|||
#include <misc/syscall.h>
|
|
@ -0,0 +1,91 @@
|
|||
/* statx-related definitions and declarations.
|
||||
Copyright (C) 2018-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This interface is based on <linux/stat.h> in Linux. */
|
||||
|
||||
#ifndef _SYS_STAT_H
|
||||
# error Never include <bits/stat.x.h> directly, include <sys/stat.h> instead.
|
||||
#endif
|
||||
|
||||
struct statx_timestamp
|
||||
{
|
||||
__int64_t tv_sec;
|
||||
__uint32_t tv_nsec;
|
||||
__int32_t __statx_timestamp_pad1[1];
|
||||
};
|
||||
|
||||
/* Warning: The kernel may add additional fields to this struct in the
|
||||
future. Only use this struct for calling the statx function, not
|
||||
for storing data. (Expansion will be controlled by the mask
|
||||
argument of the statx function.) */
|
||||
struct statx
|
||||
{
|
||||
__uint32_t stx_mask;
|
||||
__uint32_t stx_blksize;
|
||||
__uint64_t stx_attributes;
|
||||
__uint32_t stx_nlink;
|
||||
__uint32_t stx_uid;
|
||||
__uint32_t stx_gid;
|
||||
__uint16_t stx_mode;
|
||||
__uint16_t __statx_pad1[1];
|
||||
__uint64_t stx_ino;
|
||||
__uint64_t stx_size;
|
||||
__uint64_t stx_blocks;
|
||||
__uint64_t stx_attributes_mask;
|
||||
struct statx_timestamp stx_atime;
|
||||
struct statx_timestamp stx_btime;
|
||||
struct statx_timestamp stx_ctime;
|
||||
struct statx_timestamp stx_mtime;
|
||||
__uint32_t stx_rdev_major;
|
||||
__uint32_t stx_rdev_minor;
|
||||
__uint32_t stx_dev_major;
|
||||
__uint32_t stx_dev_minor;
|
||||
__uint64_t __statx_pad2[14];
|
||||
};
|
||||
|
||||
#define STATX_TYPE 0x0001U
|
||||
#define STATX_MODE 0x0002U
|
||||
#define STATX_NLINK 0x0004U
|
||||
#define STATX_UID 0x0008U
|
||||
#define STATX_GID 0x0010U
|
||||
#define STATX_ATIME 0x0020U
|
||||
#define STATX_MTIME 0x0040U
|
||||
#define STATX_CTIME 0x0080U
|
||||
#define STATX_INO 0x0100U
|
||||
#define STATX_SIZE 0x0200U
|
||||
#define STATX_BLOCKS 0x0400U
|
||||
#define STATX_BASIC_STATS 0x07ffU
|
||||
#define STATX_ALL 0x0fffU
|
||||
#define STATX_BTIME 0x0800U
|
||||
#define STATX__RESERVED 0x80000000U
|
||||
|
||||
#define STATX_ATTR_COMPRESSED 0x0004
|
||||
#define STATX_ATTR_IMMUTABLE 0x0010
|
||||
#define STATX_ATTR_APPEND 0x0020
|
||||
#define STATX_ATTR_NODUMP 0x0040
|
||||
#define STATX_ATTR_ENCRYPTED 0x0800
|
||||
#define STATX_ATTR_AUTOMOUNT 0x1000
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Fill *BUF with information about PATH in DIRFD. */
|
||||
int statx (int __dirfd, const char *__restrict __path, int __flags,
|
||||
unsigned int __mask, struct statx *__restrict __buf)
|
||||
__THROW __nonnull ((2, 5));
|
||||
|
||||
__END_DECLS
|
|
@ -0,0 +1,55 @@
|
|||
/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
#undef fstat
|
||||
#undef __fstat
|
||||
int
|
||||
attribute_hidden
|
||||
__fstat (int fd, struct stat *buf)
|
||||
{
|
||||
return __fxstat (_STAT_VER, fd, buf);
|
||||
}
|
||||
|
||||
weak_hidden_alias (__fstat, fstat)
|
|
@ -0,0 +1,52 @@
|
|||
/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
#undef fstat64
|
||||
int
|
||||
attribute_hidden
|
||||
fstat64 (int fd, struct stat64 *buf)
|
||||
{
|
||||
return __fxstat64 (_STAT_VER, fd, buf);
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/* Copyright (C) 2005-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
#undef fstatat
|
||||
int
|
||||
attribute_hidden
|
||||
fstatat (int fd, const char *file, struct stat *buf, int flag)
|
||||
{
|
||||
return __fxstatat (_STAT_VER, fd, file, buf, flag);
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/* Copyright (C) 2005-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
#undef fstatat64
|
||||
int
|
||||
attribute_hidden
|
||||
fstatat64 (int fd, const char *file, struct stat64 *buf, int flag)
|
||||
{
|
||||
return __fxstatat64 (_STAT_VER, fd, file, buf, flag);
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
#undef lstat
|
||||
#undef __lstat
|
||||
int
|
||||
attribute_hidden
|
||||
__lstat (const char *file, struct stat *buf)
|
||||
{
|
||||
return __lxstat (_STAT_VER, file, buf);
|
||||
}
|
||||
|
||||
weak_hidden_alias (__lstat, lstat)
|
|
@ -0,0 +1,52 @@
|
|||
/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
#undef lstat64
|
||||
int
|
||||
attribute_hidden
|
||||
lstat64 (const char *file, struct stat64 *buf)
|
||||
{
|
||||
return __lxstat64 (_STAT_VER, file, buf);
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
/* Copyright (C) 1995-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
int
|
||||
attribute_hidden
|
||||
__mknod (const char *path, mode_t mode, dev_t dev)
|
||||
{
|
||||
return __xmknod (_MKNOD_VER, path, mode, &dev);
|
||||
}
|
||||
|
||||
weak_hidden_alias (__mknod, mknod)
|
|
@ -0,0 +1,53 @@
|
|||
/* Copyright (C) 1995-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
int
|
||||
attribute_hidden
|
||||
mknodat (int fd, const char *path, mode_t mode, dev_t dev)
|
||||
{
|
||||
return __xmknodat (_MKNOD_VER, fd, path, mode, &dev);
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
#undef stat
|
||||
int
|
||||
attribute_hidden
|
||||
__stat (const char *file, struct stat *buf)
|
||||
{
|
||||
return __xstat (_STAT_VER, file, buf);
|
||||
}
|
||||
|
||||
weak_hidden_alias (__stat, stat)
|
|
@ -0,0 +1,52 @@
|
|||
/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
/* This definition is only used if inlining fails for this function; see
|
||||
the last page of <sys/stat.h>. The real work is done by the `x'
|
||||
function which is passed a version number argument. We arrange in the
|
||||
makefile that when not inlined this function is always statically
|
||||
linked; that way a dynamically-linked executable always encodes the
|
||||
version number corresponding to the data structures it uses, so the `x'
|
||||
functions in the shared library can adapt without needing to recompile
|
||||
all callers. */
|
||||
|
||||
#undef stat64
|
||||
int
|
||||
attribute_hidden
|
||||
stat64 (const char *file, struct stat64 *buf)
|
||||
{
|
||||
return __xstat64 (_STAT_VER, file, buf);
|
||||
}
|
|
@ -0,0 +1,537 @@
|
|||
/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/*
|
||||
* POSIX Standard: 5.6 File Characteristics <sys/stat.h>
|
||||
*/
|
||||
|
||||
#ifndef _SYS_STAT_H
|
||||
#define _SYS_STAT_H 1
|
||||
|
||||
#include <features.h>
|
||||
|
||||
#include <bits/types.h> /* For __mode_t and __dev_t. */
|
||||
|
||||
#ifdef __USE_XOPEN2K8
|
||||
# include <bits/types/struct_timespec.h>
|
||||
#endif
|
||||
|
||||
#if defined __USE_XOPEN || defined __USE_XOPEN2K
|
||||
/* The Single Unix specification says that some more types are
|
||||
available here. */
|
||||
|
||||
# include <bits/types/time_t.h>
|
||||
|
||||
# ifndef __dev_t_defined
|
||||
typedef __dev_t dev_t;
|
||||
# define __dev_t_defined
|
||||
# endif
|
||||
|
||||
# ifndef __gid_t_defined
|
||||
typedef __gid_t gid_t;
|
||||
# define __gid_t_defined
|
||||
# endif
|
||||
|
||||
# ifndef __ino_t_defined
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
typedef __ino_t ino_t;
|
||||
# else
|
||||
typedef __ino64_t ino_t;
|
||||
# endif
|
||||
# define __ino_t_defined
|
||||
# endif
|
||||
|
||||
# ifndef __mode_t_defined
|
||||
typedef __mode_t mode_t;
|
||||
# define __mode_t_defined
|
||||
# endif
|
||||
|
||||
# ifndef __nlink_t_defined
|
||||
typedef __nlink_t nlink_t;
|
||||
# define __nlink_t_defined
|
||||
# endif
|
||||
|
||||
# ifndef __off_t_defined
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
typedef __off_t off_t;
|
||||
# else
|
||||
typedef __off64_t off_t;
|
||||
# endif
|
||||
# define __off_t_defined
|
||||
# endif
|
||||
|
||||
# ifndef __uid_t_defined
|
||||
typedef __uid_t uid_t;
|
||||
# define __uid_t_defined
|
||||
# endif
|
||||
#endif /* X/Open */
|
||||
|
||||
#ifdef __USE_UNIX98
|
||||
# ifndef __blkcnt_t_defined
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
typedef __blkcnt_t blkcnt_t;
|
||||
# else
|
||||
typedef __blkcnt64_t blkcnt_t;
|
||||
# endif
|
||||
# define __blkcnt_t_defined
|
||||
# endif
|
||||
|
||||
# ifndef __blksize_t_defined
|
||||
typedef __blksize_t blksize_t;
|
||||
# define __blksize_t_defined
|
||||
# endif
|
||||
#endif /* Unix98 */
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#include <bits/stat.h>
|
||||
|
||||
#if defined __USE_MISC || defined __USE_XOPEN
|
||||
# define S_IFMT __S_IFMT
|
||||
# define S_IFDIR __S_IFDIR
|
||||
# define S_IFCHR __S_IFCHR
|
||||
# define S_IFBLK __S_IFBLK
|
||||
# define S_IFREG __S_IFREG
|
||||
# ifdef __S_IFIFO
|
||||
# define S_IFIFO __S_IFIFO
|
||||
# endif
|
||||
# ifdef __S_IFLNK
|
||||
# define S_IFLNK __S_IFLNK
|
||||
# endif
|
||||
# if (defined __USE_MISC || defined __USE_XOPEN_EXTENDED) \
|
||||
&& defined __S_IFSOCK
|
||||
# define S_IFSOCK __S_IFSOCK
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Test macros for file types. */
|
||||
|
||||
#define __S_ISTYPE(mode, mask) (((mode) & __S_IFMT) == (mask))
|
||||
|
||||
#define S_ISDIR(mode) __S_ISTYPE((mode), __S_IFDIR)
|
||||
#define S_ISCHR(mode) __S_ISTYPE((mode), __S_IFCHR)
|
||||
#define S_ISBLK(mode) __S_ISTYPE((mode), __S_IFBLK)
|
||||
#define S_ISREG(mode) __S_ISTYPE((mode), __S_IFREG)
|
||||
#ifdef __S_IFIFO
|
||||
# define S_ISFIFO(mode) __S_ISTYPE((mode), __S_IFIFO)
|
||||
#endif
|
||||
#ifdef __S_IFLNK
|
||||
# define S_ISLNK(mode) __S_ISTYPE((mode), __S_IFLNK)
|
||||
#endif
|
||||
|
||||
#if defined __USE_MISC && !defined __S_IFLNK
|
||||
# define S_ISLNK(mode) 0
|
||||
#endif
|
||||
|
||||
#if (defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K) \
|
||||
&& defined __S_IFSOCK
|
||||
# define S_ISSOCK(mode) __S_ISTYPE((mode), __S_IFSOCK)
|
||||
#elif defined __USE_XOPEN2K
|
||||
# define S_ISSOCK(mode) 0
|
||||
#endif
|
||||
|
||||
/* These are from POSIX.1b. If the objects are not implemented using separate
|
||||
distinct file types, the macros always will evaluate to zero. Unlike the
|
||||
other S_* macros the following three take a pointer to a `struct stat'
|
||||
object as the argument. */
|
||||
#ifdef __USE_POSIX199309
|
||||
# define S_TYPEISMQ(buf) __S_TYPEISMQ(buf)
|
||||
# define S_TYPEISSEM(buf) __S_TYPEISSEM(buf)
|
||||
# define S_TYPEISSHM(buf) __S_TYPEISSHM(buf)
|
||||
#endif
|
||||
|
||||
|
||||
/* Protection bits. */
|
||||
|
||||
#define S_ISUID __S_ISUID /* Set user ID on execution. */
|
||||
#define S_ISGID __S_ISGID /* Set group ID on execution. */
|
||||
|
||||
#if defined __USE_MISC || defined __USE_XOPEN
|
||||
/* Save swapped text after use (sticky bit). This is pretty well obsolete. */
|
||||
# define S_ISVTX __S_ISVTX
|
||||
#endif
|
||||
|
||||
#define S_IRUSR __S_IREAD /* Read by owner. */
|
||||
#define S_IWUSR __S_IWRITE /* Write by owner. */
|
||||
#define S_IXUSR __S_IEXEC /* Execute by owner. */
|
||||
/* Read, write, and execute by owner. */
|
||||
#define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC)
|
||||
|
||||
#ifdef __USE_MISC
|
||||
# define S_IREAD S_IRUSR
|
||||
# define S_IWRITE S_IWUSR
|
||||
# define S_IEXEC S_IXUSR
|
||||
#endif
|
||||
|
||||
#define S_IRGRP (S_IRUSR >> 3) /* Read by group. */
|
||||
#define S_IWGRP (S_IWUSR >> 3) /* Write by group. */
|
||||
#define S_IXGRP (S_IXUSR >> 3) /* Execute by group. */
|
||||
/* Read, write, and execute by group. */
|
||||
#define S_IRWXG (S_IRWXU >> 3)
|
||||
|
||||
#define S_IROTH (S_IRGRP >> 3) /* Read by others. */
|
||||
#define S_IWOTH (S_IWGRP >> 3) /* Write by others. */
|
||||
#define S_IXOTH (S_IXGRP >> 3) /* Execute by others. */
|
||||
/* Read, write, and execute by others. */
|
||||
#define S_IRWXO (S_IRWXG >> 3)
|
||||
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* Macros for common mode bit masks. */
|
||||
# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
|
||||
# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)/* 07777 */
|
||||
# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 0666*/
|
||||
|
||||
# define S_BLKSIZE 512 /* Block size for `st_blocks'. */
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
/* Get file attributes for FILE and put them in BUF. */
|
||||
extern int stat (const char *__restrict __file,
|
||||
struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
|
||||
|
||||
/* Get file attributes for the file, device, pipe, or socket
|
||||
that file descriptor FD is open on and put them in BUF. */
|
||||
extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
|
||||
#else
|
||||
# ifdef __REDIRECT_NTH
|
||||
extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
|
||||
struct stat *__restrict __buf), stat64)
|
||||
__nonnull ((1, 2));
|
||||
extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
|
||||
__nonnull ((2));
|
||||
# else
|
||||
# define stat stat64
|
||||
# define fstat fstat64
|
||||
# endif
|
||||
#endif
|
||||
#ifdef __USE_LARGEFILE64
|
||||
extern int stat64 (const char *__restrict __file,
|
||||
struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
|
||||
extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
|
||||
#endif
|
||||
|
||||
#ifdef __USE_ATFILE
|
||||
/* Similar to stat, get the attributes for FILE and put them in BUF.
|
||||
Relative path names are interpreted relative to FD unless FD is
|
||||
AT_FDCWD. */
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
extern int fstatat (int __fd, const char *__restrict __file,
|
||||
struct stat *__restrict __buf, int __flag)
|
||||
__THROW __nonnull ((2, 3));
|
||||
# else
|
||||
# ifdef __REDIRECT_NTH
|
||||
extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
|
||||
struct stat *__restrict __buf,
|
||||
int __flag),
|
||||
fstatat64) __nonnull ((2, 3));
|
||||
# else
|
||||
# define fstatat fstatat64
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifdef __USE_LARGEFILE64
|
||||
extern int fstatat64 (int __fd, const char *__restrict __file,
|
||||
struct stat64 *__restrict __buf, int __flag)
|
||||
__THROW __nonnull ((2, 3));
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
/* Get file attributes about FILE and put them in BUF.
|
||||
If FILE is a symbolic link, do not follow it. */
|
||||
extern int lstat (const char *__restrict __file,
|
||||
struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
|
||||
# else
|
||||
# ifdef __REDIRECT_NTH
|
||||
extern int __REDIRECT_NTH (lstat,
|
||||
(const char *__restrict __file,
|
||||
struct stat *__restrict __buf), lstat64)
|
||||
__nonnull ((1, 2));
|
||||
# else
|
||||
# define lstat lstat64
|
||||
# endif
|
||||
# endif
|
||||
# ifdef __USE_LARGEFILE64
|
||||
extern int lstat64 (const char *__restrict __file,
|
||||
struct stat64 *__restrict __buf)
|
||||
__THROW __nonnull ((1, 2));
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Set file access permissions for FILE to MODE.
|
||||
If FILE is a symbolic link, this affects its target instead. */
|
||||
extern int chmod (const char *__file, __mode_t __mode)
|
||||
__THROW __nonnull ((1));
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* Set file access permissions for FILE to MODE.
|
||||
If FILE is a symbolic link, this affects the link itself
|
||||
rather than its target. */
|
||||
extern int lchmod (const char *__file, __mode_t __mode)
|
||||
__THROW __nonnull ((1));
|
||||
#endif
|
||||
|
||||
/* Set file access permissions of the file FD is open on to MODE. */
|
||||
#if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED
|
||||
extern int fchmod (int __fd, __mode_t __mode) __THROW;
|
||||
#endif
|
||||
|
||||
#ifdef __USE_ATFILE
|
||||
/* Set file access permissions of FILE relative to
|
||||
the directory FD is open on. */
|
||||
extern int fchmodat (int __fd, const char *__file, __mode_t __mode,
|
||||
int __flag)
|
||||
__THROW __nonnull ((2)) __wur;
|
||||
#endif /* Use ATFILE. */
|
||||
|
||||
|
||||
|
||||
/* Set the file creation mask of the current process to MASK,
|
||||
and return the old creation mask. */
|
||||
extern __mode_t umask (__mode_t __mask) __THROW;
|
||||
|
||||
#ifdef __USE_GNU
|
||||
/* Get the current `umask' value without changing it.
|
||||
This function is only available under the GNU Hurd. */
|
||||
extern __mode_t getumask (void) __THROW;
|
||||
#endif
|
||||
|
||||
/* Create a new directory named PATH, with permission bits MODE. */
|
||||
extern int mkdir (const char *__path, __mode_t __mode)
|
||||
__THROW __nonnull ((1));
|
||||
|
||||
#ifdef __USE_ATFILE
|
||||
/* Like mkdir, create a new directory with permission bits MODE. But
|
||||
interpret relative PATH names relative to the directory associated
|
||||
with FD. */
|
||||
extern int mkdirat (int __fd, const char *__path, __mode_t __mode)
|
||||
__THROW __nonnull ((2));
|
||||
#endif
|
||||
|
||||
/* Create a device file named PATH, with permission and special bits MODE
|
||||
and device number DEV (which can be constructed from major and minor
|
||||
device numbers with the `makedev' macro above). */
|
||||
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
|
||||
extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev)
|
||||
__THROW __nonnull ((1));
|
||||
|
||||
# ifdef __USE_ATFILE
|
||||
/* Like mknod, create a new device file with permission bits MODE and
|
||||
device number DEV. But interpret relative PATH names relative to
|
||||
the directory associated with FD. */
|
||||
extern int mknodat (int __fd, const char *__path, __mode_t __mode,
|
||||
__dev_t __dev) __THROW __nonnull ((2));
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
/* Create a new FIFO named PATH, with permission bits MODE. */
|
||||
extern int mkfifo (const char *__path, __mode_t __mode)
|
||||
__THROW __nonnull ((1));
|
||||
|
||||
#ifdef __USE_ATFILE
|
||||
/* Like mkfifo, create a new FIFO with permission bits MODE. But
|
||||
interpret relative PATH names relative to the directory associated
|
||||
with FD. */
|
||||
extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
|
||||
__THROW __nonnull ((2));
|
||||
#endif
|
||||
|
||||
#ifdef __USE_ATFILE
|
||||
/* Set file access and modification times relative to directory file
|
||||
descriptor. */
|
||||
extern int utimensat (int __fd, const char *__path,
|
||||
const struct timespec __times[2],
|
||||
int __flags)
|
||||
__THROW __nonnull ((2));
|
||||
#endif
|
||||
|
||||
#ifdef __USE_XOPEN2K8
|
||||
/* Set file access and modification times of the file associated with FD. */
|
||||
extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
|
||||
#endif
|
||||
|
||||
/* To allow the `struct stat' structure and the file type `mode_t'
|
||||
bits to vary without changing shared library major version number,
|
||||
the `stat' family of functions and `mknod' are in fact inline
|
||||
wrappers around calls to `xstat', `fxstat', `lxstat', and `xmknod',
|
||||
which all take a leading version-number argument designating the
|
||||
data structure and bits used. <bits/stat.h> defines _STAT_VER with
|
||||
the version number corresponding to `struct stat' as defined in
|
||||
that file; and _MKNOD_VER with the version number corresponding to
|
||||
the S_IF* macros defined therein. It is arranged that when not
|
||||
inlined these function are always statically linked; that way a
|
||||
dynamically-linked executable always encodes the version number
|
||||
corresponding to the data structures it uses, so the `x' functions
|
||||
in the shared library can adapt without needing to recompile all
|
||||
callers. */
|
||||
|
||||
#ifndef _STAT_VER
|
||||
# define _STAT_VER 0
|
||||
#endif
|
||||
#ifndef _MKNOD_VER
|
||||
# define _MKNOD_VER 0
|
||||
#endif
|
||||
|
||||
/* Wrappers for stat and mknod system calls. */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
|
||||
__THROW __nonnull ((3));
|
||||
extern int __xstat (int __ver, const char *__filename,
|
||||
struct stat *__stat_buf) __THROW __nonnull ((2, 3));
|
||||
extern int __lxstat (int __ver, const char *__filename,
|
||||
struct stat *__stat_buf) __THROW __nonnull ((2, 3));
|
||||
extern int __fxstatat (int __ver, int __fildes, const char *__filename,
|
||||
struct stat *__stat_buf, int __flag)
|
||||
__THROW __nonnull ((3, 4));
|
||||
#else
|
||||
# ifdef __REDIRECT_NTH
|
||||
extern int __REDIRECT_NTH (__fxstat, (int __ver, int __fildes,
|
||||
struct stat *__stat_buf), __fxstat64)
|
||||
__nonnull ((3));
|
||||
extern int __REDIRECT_NTH (__xstat, (int __ver, const char *__filename,
|
||||
struct stat *__stat_buf), __xstat64)
|
||||
__nonnull ((2, 3));
|
||||
extern int __REDIRECT_NTH (__lxstat, (int __ver, const char *__filename,
|
||||
struct stat *__stat_buf), __lxstat64)
|
||||
__nonnull ((2, 3));
|
||||
extern int __REDIRECT_NTH (__fxstatat, (int __ver, int __fildes,
|
||||
const char *__filename,
|
||||
struct stat *__stat_buf, int __flag),
|
||||
__fxstatat64) __nonnull ((3, 4));
|
||||
|
||||
# else
|
||||
# define __fxstat __fxstat64
|
||||
# define __xstat __xstat64
|
||||
# define __lxstat __lxstat64
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf)
|
||||
__THROW __nonnull ((3));
|
||||
extern int __xstat64 (int __ver, const char *__filename,
|
||||
struct stat64 *__stat_buf) __THROW __nonnull ((2, 3));
|
||||
extern int __lxstat64 (int __ver, const char *__filename,
|
||||
struct stat64 *__stat_buf) __THROW __nonnull ((2, 3));
|
||||
extern int __fxstatat64 (int __ver, int __fildes, const char *__filename,
|
||||
struct stat64 *__stat_buf, int __flag)
|
||||
__THROW __nonnull ((3, 4));
|
||||
#endif
|
||||
extern int __xmknod (int __ver, const char *__path, __mode_t __mode,
|
||||
__dev_t *__dev) __THROW __nonnull ((2, 4));
|
||||
|
||||
extern int __xmknodat (int __ver, int __fd, const char *__path,
|
||||
__mode_t __mode, __dev_t *__dev)
|
||||
__THROW __nonnull ((3, 5));
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# include <bits/statx.h>
|
||||
#endif
|
||||
|
||||
#ifdef __USE_EXTERN_INLINES
|
||||
/* Inlined versions of the real stat and mknod functions. */
|
||||
|
||||
__extern_inline int
|
||||
__NTH (stat (const char *__path, struct stat *__statbuf))
|
||||
{
|
||||
return __xstat (_STAT_VER, __path, __statbuf);
|
||||
}
|
||||
|
||||
# if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
|
||||
__extern_inline int
|
||||
__NTH (lstat (const char *__path, struct stat *__statbuf))
|
||||
{
|
||||
return __lxstat (_STAT_VER, __path, __statbuf);
|
||||
}
|
||||
# endif
|
||||
|
||||
__extern_inline int
|
||||
__NTH (fstat (int __fd, struct stat *__statbuf))
|
||||
{
|
||||
return __fxstat (_STAT_VER, __fd, __statbuf);
|
||||
}
|
||||
|
||||
# ifdef __USE_ATFILE
|
||||
__extern_inline int
|
||||
__NTH (fstatat (int __fd, const char *__filename, struct stat *__statbuf,
|
||||
int __flag))
|
||||
{
|
||||
return __fxstatat (_STAT_VER, __fd, __filename, __statbuf, __flag);
|
||||
}
|
||||
# endif
|
||||
|
||||
# ifdef __USE_MISC
|
||||
__extern_inline int
|
||||
__NTH (mknod (const char *__path, __mode_t __mode, __dev_t __dev))
|
||||
{
|
||||
return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
|
||||
}
|
||||
# endif
|
||||
|
||||
# ifdef __USE_ATFILE
|
||||
__extern_inline int
|
||||
__NTH (mknodat (int __fd, const char *__path, __mode_t __mode,
|
||||
__dev_t __dev))
|
||||
{
|
||||
return __xmknodat (_MKNOD_VER, __fd, __path, __mode, &__dev);
|
||||
}
|
||||
# endif
|
||||
|
||||
# if defined __USE_LARGEFILE64 \
|
||||
&& (! defined __USE_FILE_OFFSET64 \
|
||||
|| (defined __REDIRECT_NTH && defined __OPTIMIZE__))
|
||||
__extern_inline int
|
||||
__NTH (stat64 (const char *__path, struct stat64 *__statbuf))
|
||||
{
|
||||
return __xstat64 (_STAT_VER, __path, __statbuf);
|
||||
}
|
||||
|
||||
# if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
|
||||
__extern_inline int
|
||||
__NTH (lstat64 (const char *__path, struct stat64 *__statbuf))
|
||||
{
|
||||
return __lxstat64 (_STAT_VER, __path, __statbuf);
|
||||
}
|
||||
# endif
|
||||
|
||||
__extern_inline int
|
||||
__NTH (fstat64 (int __fd, struct stat64 *__statbuf))
|
||||
{
|
||||
return __fxstat64 (_STAT_VER, __fd, __statbuf);
|
||||
}
|
||||
|
||||
# ifdef __USE_ATFILE
|
||||
__extern_inline int
|
||||
__NTH (fstatat64 (int __fd, const char *__filename, struct stat64 *__statbuf,
|
||||
int __flag))
|
||||
{
|
||||
return __fxstatat64 (_STAT_VER, __fd, __filename, __statbuf, __flag);
|
||||
}
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
|
||||
#endif /* sys/stat.h */
|
|
@ -0,0 +1,44 @@
|
|||
/* Definition of struct __locale_struct and __locale_t.
|
||||
Copyright (C) 1997-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_TYPES___LOCALE_T_H
|
||||
#define _BITS_TYPES___LOCALE_T_H 1
|
||||
|
||||
/* POSIX.1-2008: the locale_t type, representing a locale context
|
||||
(implementation-namespace version). This type should be treated
|
||||
as opaque by applications; some details are exposed for the sake of
|
||||
efficiency in e.g. ctype functions. */
|
||||
|
||||
struct __locale_struct
|
||||
{
|
||||
/* Note: LC_ALL is not a valid index into this array. */
|
||||
struct __locale_data *__locales[13]; /* 13 = __LC_LAST. */
|
||||
|
||||
/* To increase the speed of this solution we add some special members. */
|
||||
const unsigned short int *__ctype_b;
|
||||
const int *__ctype_tolower;
|
||||
const int *__ctype_toupper;
|
||||
|
||||
/* Note: LC_ALL is not a valid index into this array. */
|
||||
const char *__names[13];
|
||||
};
|
||||
|
||||
typedef struct __locale_struct *__locale_t;
|
||||
|
||||
#endif /* bits/types/__locale_t.h */
|
|
@ -0,0 +1,26 @@
|
|||
/* Definition of locale_t.
|
||||
Copyright (C) 2017-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_TYPES_LOCALE_T_H
|
||||
#define _BITS_TYPES_LOCALE_T_H 1
|
||||
|
||||
#include <bits/types/__locale_t.h>
|
||||
|
||||
typedef __locale_t locale_t;
|
||||
|
||||
#endif /* bits/types/locale_t.h */
|
|
@ -0,0 +1,517 @@
|
|||
/* Copyright (C) 1992-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _SYS_CDEFS_H
|
||||
#define _SYS_CDEFS_H 1
|
||||
|
||||
/* We are almost always included from features.h. */
|
||||
#ifndef _FEATURES_H
|
||||
# include <features.h>
|
||||
#endif
|
||||
|
||||
/* The GNU libc does not support any K&R compilers or the traditional mode
|
||||
of ISO C compilers anymore. Check for some of the combinations not
|
||||
anymore supported. */
|
||||
#if defined __GNUC__ && !defined __STDC__
|
||||
# error "You need a ISO C conforming compiler to use the glibc headers"
|
||||
#endif
|
||||
|
||||
/* Some user header file might have defined this before. */
|
||||
#undef __P
|
||||
#undef __PMT
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
/* All functions, except those with callbacks or those that
|
||||
synchronize memory, are leaf functions. */
|
||||
# if __GNUC_PREREQ (4, 6) && !defined _LIBC
|
||||
# define __LEAF , __leaf__
|
||||
# define __LEAF_ATTR __attribute__ ((__leaf__))
|
||||
# else
|
||||
# define __LEAF
|
||||
# define __LEAF_ATTR
|
||||
# endif
|
||||
|
||||
/* GCC can always grok prototypes. For C++ programs we add throw()
|
||||
to help it optimize the function calls. But this works only with
|
||||
gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
|
||||
as non-throwing using a function attribute since programs can use
|
||||
the -fexceptions options for C code as well. */
|
||||
# if !defined __cplusplus && __GNUC_PREREQ (3, 3)
|
||||
# define __THROW __attribute__ ((__nothrow__ __LEAF))
|
||||
# define __THROWNL __attribute__ ((__nothrow__))
|
||||
# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
|
||||
# define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
|
||||
# else
|
||||
# if defined __cplusplus && __GNUC_PREREQ (2,8)
|
||||
# define __THROW throw ()
|
||||
# define __THROWNL throw ()
|
||||
# define __NTH(fct) __LEAF_ATTR fct throw ()
|
||||
# define __NTHNL(fct) fct throw ()
|
||||
# else
|
||||
# define __THROW
|
||||
# define __THROWNL
|
||||
# define __NTH(fct) fct
|
||||
# define __NTHNL(fct) fct
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#else /* Not GCC. */
|
||||
|
||||
# if (defined __cplusplus \
|
||||
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
|
||||
# define __inline inline
|
||||
# else
|
||||
# define __inline /* No inline functions. */
|
||||
# endif
|
||||
|
||||
# define __THROW
|
||||
# define __THROWNL
|
||||
# define __NTH(fct) fct
|
||||
|
||||
#endif /* GCC. */
|
||||
|
||||
/* Compilers that are not clang may object to
|
||||
#if defined __clang__ && __has_extension(...)
|
||||
even though they do not need to evaluate the right-hand side of the &&. */
|
||||
#if defined __clang__ && defined __has_extension
|
||||
# define __glibc_clang_has_extension(ext) __has_extension (ext)
|
||||
#else
|
||||
# define __glibc_clang_has_extension(ext) 0
|
||||
#endif
|
||||
|
||||
/* These two macros are not used in glibc anymore. They are kept here
|
||||
only because some other projects expect the macros to be defined. */
|
||||
#define __P(args) args
|
||||
#define __PMT(args) args
|
||||
|
||||
/* For these things, GCC behaves the ANSI way normally,
|
||||
and the non-ANSI way under -traditional. */
|
||||
|
||||
#define __CONCAT(x,y) x ## y
|
||||
#define __STRING(x) #x
|
||||
|
||||
/* This is not a typedef so `const __ptr_t' does the right thing. */
|
||||
#define __ptr_t void *
|
||||
|
||||
|
||||
/* C++ needs to know that types and declarations are C, not C++. */
|
||||
#ifdef __cplusplus
|
||||
# define __BEGIN_DECLS extern "C" {
|
||||
# define __END_DECLS }
|
||||
#else
|
||||
# define __BEGIN_DECLS
|
||||
# define __END_DECLS
|
||||
#endif
|
||||
|
||||
|
||||
/* Fortify support. */
|
||||
#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
|
||||
#define __bos0(ptr) __builtin_object_size (ptr, 0)
|
||||
|
||||
#if __GNUC_PREREQ (4,3)
|
||||
# define __warndecl(name, msg) \
|
||||
extern void name (void) __attribute__((__warning__ (msg)))
|
||||
# define __warnattr(msg) __attribute__((__warning__ (msg)))
|
||||
# define __errordecl(name, msg) \
|
||||
extern void name (void) __attribute__((__error__ (msg)))
|
||||
#else
|
||||
# define __warndecl(name, msg) extern void name (void)
|
||||
# define __warnattr(msg)
|
||||
# define __errordecl(name, msg) extern void name (void)
|
||||
#endif
|
||||
|
||||
/* Support for flexible arrays.
|
||||
Headers that should use flexible arrays only if they're "real"
|
||||
(e.g. only if they won't affect sizeof()) should test
|
||||
#if __glibc_c99_flexarr_available. */
|
||||
#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
|
||||
# define __flexarr []
|
||||
# define __glibc_c99_flexarr_available 1
|
||||
#elif __GNUC_PREREQ (2,97)
|
||||
/* GCC 2.97 supports C99 flexible array members as an extension,
|
||||
even when in C89 mode or compiling C++ (any version). */
|
||||
# define __flexarr []
|
||||
# define __glibc_c99_flexarr_available 1
|
||||
#elif defined __GNUC__
|
||||
/* Pre-2.97 GCC did not support C99 flexible arrays but did have
|
||||
an equivalent extension with slightly different notation. */
|
||||
# define __flexarr [0]
|
||||
# define __glibc_c99_flexarr_available 1
|
||||
#else
|
||||
/* Some other non-C99 compiler. Approximate with [1]. */
|
||||
# define __flexarr [1]
|
||||
# define __glibc_c99_flexarr_available 0
|
||||
#endif
|
||||
|
||||
|
||||
/* __asm__ ("xyz") is used throughout the headers to rename functions
|
||||
at the assembly language level. This is wrapped by the __REDIRECT
|
||||
macro, in order to support compilers that can do this some other
|
||||
way. When compilers don't support asm-names at all, we have to do
|
||||
preprocessor tricks instead (which don't have exactly the right
|
||||
semantics, but it's the best we can do).
|
||||
|
||||
Example:
|
||||
int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */
|
||||
|
||||
#if defined __GNUC__ && __GNUC__ >= 2
|
||||
|
||||
# define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias))
|
||||
# ifdef __cplusplus
|
||||
# define __REDIRECT_NTH(name, proto, alias) \
|
||||
name proto __THROW __asm__ (__ASMNAME (#alias))
|
||||
# define __REDIRECT_NTHNL(name, proto, alias) \
|
||||
name proto __THROWNL __asm__ (__ASMNAME (#alias))
|
||||
# else
|
||||
# define __REDIRECT_NTH(name, proto, alias) \
|
||||
name proto __asm__ (__ASMNAME (#alias)) __THROW
|
||||
# define __REDIRECT_NTHNL(name, proto, alias) \
|
||||
name proto __asm__ (__ASMNAME (#alias)) __THROWNL
|
||||
# endif
|
||||
# define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
|
||||
# define __ASMNAME2(prefix, cname) __STRING (prefix) cname
|
||||
|
||||
/*
|
||||
#elif __SOME_OTHER_COMPILER__
|
||||
|
||||
# define __REDIRECT(name, proto, alias) name proto; \
|
||||
_Pragma("let " #name " = " #alias)
|
||||
*/
|
||||
#endif
|
||||
|
||||
/* GCC has various useful declarations that can be made with the
|
||||
`__attribute__' syntax. All of the ways we use this do fine if
|
||||
they are omitted for compilers that don't understand it. */
|
||||
#if !defined __GNUC__ || __GNUC__ < 2
|
||||
# define __attribute__(xyz) /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.96 development the `malloc' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings. */
|
||||
#if __GNUC_PREREQ (2,96)
|
||||
# define __attribute_malloc__ __attribute__ ((__malloc__))
|
||||
#else
|
||||
# define __attribute_malloc__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* Tell the compiler which arguments to an allocation function
|
||||
indicate the size of the allocation. */
|
||||
#if __GNUC_PREREQ (4, 3)
|
||||
# define __attribute_alloc_size__(params) \
|
||||
__attribute__ ((__alloc_size__ params))
|
||||
#else
|
||||
# define __attribute_alloc_size__(params) /* Ignore. */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.96 development the `pure' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings. */
|
||||
#if __GNUC_PREREQ (2,96)
|
||||
# define __attribute_pure__ __attribute__ ((__pure__))
|
||||
#else
|
||||
# define __attribute_pure__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* This declaration tells the compiler that the value is constant. */
|
||||
#if __GNUC_PREREQ (2,5)
|
||||
# define __attribute_const__ __attribute__ ((__const__))
|
||||
#else
|
||||
# define __attribute_const__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 3.1 development the `used' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings. */
|
||||
#if __GNUC_PREREQ (3,1)
|
||||
# define __attribute_used__ __attribute__ ((__used__))
|
||||
# define __attribute_noinline__ __attribute__ ((__noinline__))
|
||||
#else
|
||||
# define __attribute_used__ __attribute__ ((__unused__))
|
||||
# define __attribute_noinline__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* Since version 3.2, gcc allows marking deprecated functions. */
|
||||
#if __GNUC_PREREQ (3,2)
|
||||
# define __attribute_deprecated__ __attribute__ ((__deprecated__))
|
||||
#else
|
||||
# define __attribute_deprecated__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* Since version 4.5, gcc also allows one to specify the message printed
|
||||
when a deprecated function is used. clang claims to be gcc 4.2, but
|
||||
may also support this feature. */
|
||||
#if __GNUC_PREREQ (4,5) || \
|
||||
__glibc_clang_has_extension (__attribute_deprecated_with_message__)
|
||||
# define __attribute_deprecated_msg__(msg) \
|
||||
__attribute__ ((__deprecated__ (msg)))
|
||||
#else
|
||||
# define __attribute_deprecated_msg__(msg) __attribute_deprecated__
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.8 development the `format_arg' attribute
|
||||
for functions was introduced. We don't want to use it unconditionally
|
||||
(although this would be possible) since it generates warnings.
|
||||
If several `format_arg' attributes are given for the same function, in
|
||||
gcc-3.0 and older, all but the last one are ignored. In newer gccs,
|
||||
all designated arguments are considered. */
|
||||
#if __GNUC_PREREQ (2,8)
|
||||
# define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
|
||||
#else
|
||||
# define __attribute_format_arg__(x) /* Ignore */
|
||||
#endif
|
||||
|
||||
/* At some point during the gcc 2.97 development the `strfmon' format
|
||||
attribute for functions was introduced. We don't want to use it
|
||||
unconditionally (although this would be possible) since it
|
||||
generates warnings. */
|
||||
#if __GNUC_PREREQ (2,97)
|
||||
# define __attribute_format_strfmon__(a,b) \
|
||||
__attribute__ ((__format__ (__strfmon__, a, b)))
|
||||
#else
|
||||
# define __attribute_format_strfmon__(a,b) /* Ignore */
|
||||
#endif
|
||||
|
||||
/* The nonull function attribute allows to mark pointer parameters which
|
||||
must not be NULL. */
|
||||
#if __GNUC_PREREQ (3,3)
|
||||
# define __nonnull(params) __attribute__ ((__nonnull__ params))
|
||||
#else
|
||||
# define __nonnull(params)
|
||||
#endif
|
||||
|
||||
/* If fortification mode, we warn about unused results of certain
|
||||
function calls which can lead to problems. */
|
||||
#if __GNUC_PREREQ (3,4)
|
||||
# define __attribute_warn_unused_result__ \
|
||||
__attribute__ ((__warn_unused_result__))
|
||||
# if __USE_FORTIFY_LEVEL > 0
|
||||
# define __wur __attribute_warn_unused_result__
|
||||
# endif
|
||||
#else
|
||||
# define __attribute_warn_unused_result__ /* empty */
|
||||
#endif
|
||||
#ifndef __wur
|
||||
# define __wur /* Ignore */
|
||||
#endif
|
||||
|
||||
/* Forces a function to be always inlined. */
|
||||
#if __GNUC_PREREQ (3,2)
|
||||
/* The Linux kernel defines __always_inline in stddef.h (283d7573), and
|
||||
it conflicts with this definition. Therefore undefine it first to
|
||||
allow either header to be included first. */
|
||||
# undef __always_inline
|
||||
# define __always_inline __inline __attribute__ ((__always_inline__))
|
||||
#else
|
||||
# undef __always_inline
|
||||
# define __always_inline __inline
|
||||
#endif
|
||||
|
||||
/* Associate error messages with the source location of the call site rather
|
||||
than with the source location inside the function. */
|
||||
#if __GNUC_PREREQ (4,3)
|
||||
# define __attribute_artificial__ __attribute__ ((__artificial__))
|
||||
#else
|
||||
# define __attribute_artificial__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
|
||||
inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
|
||||
or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
|
||||
older than 4.3 may define these macros and still not guarantee GNU inlining
|
||||
semantics.
|
||||
|
||||
clang++ identifies itself as gcc-4.2, but has support for GNU inlining
|
||||
semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
|
||||
__GNUC_GNU_INLINE__ macro definitions. */
|
||||
#if (!defined __cplusplus || __GNUC_PREREQ (4,3) \
|
||||
|| (defined __clang__ && (defined __GNUC_STDC_INLINE__ \
|
||||
|| defined __GNUC_GNU_INLINE__)))
|
||||
# if defined __GNUC_STDC_INLINE__ || defined __cplusplus
|
||||
# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
|
||||
# define __extern_always_inline \
|
||||
extern __always_inline __attribute__ ((__gnu_inline__))
|
||||
# else
|
||||
# define __extern_inline extern __inline
|
||||
# define __extern_always_inline extern __always_inline
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __extern_always_inline
|
||||
# define __fortify_function __extern_always_inline __attribute_artificial__
|
||||
#endif
|
||||
|
||||
/* GCC 4.3 and above allow passing all anonymous arguments of an
|
||||
__extern_always_inline function to some other vararg function. */
|
||||
#if __GNUC_PREREQ (4,3)
|
||||
# define __va_arg_pack() __builtin_va_arg_pack ()
|
||||
# define __va_arg_pack_len() __builtin_va_arg_pack_len ()
|
||||
#endif
|
||||
|
||||
/* It is possible to compile containing GCC extensions even if GCC is
|
||||
run in pedantic mode if the uses are carefully marked using the
|
||||
`__extension__' keyword. But this is not generally available before
|
||||
version 2.8. */
|
||||
#if !__GNUC_PREREQ (2,8)
|
||||
# define __extension__ /* Ignore */
|
||||
#endif
|
||||
|
||||
/* __restrict is known in EGCS 1.2 and above. */
|
||||
#if !__GNUC_PREREQ (2,92)
|
||||
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
|
||||
# define __restrict restrict
|
||||
# else
|
||||
# define __restrict /* Ignore */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* ISO C99 also allows to declare arrays as non-overlapping. The syntax is
|
||||
array_name[restrict]
|
||||
GCC 3.1 supports this. */
|
||||
#if __GNUC_PREREQ (3,1) && !defined __GNUG__
|
||||
# define __restrict_arr __restrict
|
||||
#else
|
||||
# ifdef __GNUC__
|
||||
# define __restrict_arr /* Not supported in old GCC. */
|
||||
# else
|
||||
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
|
||||
# define __restrict_arr restrict
|
||||
# else
|
||||
/* Some other non-C99 compiler. */
|
||||
# define __restrict_arr /* Not supported. */
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if __GNUC__ >= 3
|
||||
# define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
|
||||
# define __glibc_likely(cond) __builtin_expect ((cond), 1)
|
||||
#else
|
||||
# define __glibc_unlikely(cond) (cond)
|
||||
# define __glibc_likely(cond) (cond)
|
||||
#endif
|
||||
|
||||
#ifdef __has_attribute
|
||||
# define __glibc_has_attribute(attr) __has_attribute (attr)
|
||||
#else
|
||||
# define __glibc_has_attribute(attr) 0
|
||||
#endif
|
||||
|
||||
#if (!defined _Noreturn \
|
||||
&& (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
|
||||
&& !__GNUC_PREREQ (4,7))
|
||||
# if __GNUC_PREREQ (2,8)
|
||||
# define _Noreturn __attribute__ ((__noreturn__))
|
||||
# else
|
||||
# define _Noreturn
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ (8, 0)
|
||||
/* Describes a char array whose address can safely be passed as the first
|
||||
argument to strncpy and strncat, as the char array is not necessarily
|
||||
a NUL-terminated string. */
|
||||
# define __attribute_nonstring__ __attribute__ ((__nonstring__))
|
||||
#else
|
||||
# define __attribute_nonstring__
|
||||
#endif
|
||||
|
||||
/* Undefine (also defined in libc-symbols.h). */
|
||||
#undef __attribute_copy__
|
||||
#if __GNUC_PREREQ (9, 0)
|
||||
/* Copies attributes from the declaration or type referenced by
|
||||
the argument. */
|
||||
# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg)))
|
||||
#else
|
||||
# define __attribute_copy__(arg)
|
||||
#endif
|
||||
|
||||
#if (!defined _Static_assert && !defined __cplusplus \
|
||||
&& (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
|
||||
&& (!__GNUC_PREREQ (4, 6) || defined __STRICT_ANSI__))
|
||||
# define _Static_assert(expr, diagnostic) \
|
||||
extern int (*__Static_assert_function (void)) \
|
||||
[!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })]
|
||||
#endif
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
#include <bits/long-double.h>
|
||||
|
||||
#if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
|
||||
# define __LDBL_COMPAT 1
|
||||
# ifdef __REDIRECT
|
||||
# define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias)
|
||||
# define __LDBL_REDIR(name, proto) \
|
||||
__LDBL_REDIR1 (name, proto, __nldbl_##name)
|
||||
# define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias)
|
||||
# define __LDBL_REDIR_NTH(name, proto) \
|
||||
__LDBL_REDIR1_NTH (name, proto, __nldbl_##name)
|
||||
# define __LDBL_REDIR1_DECL(name, alias) \
|
||||
extern __typeof (name) name __asm (__ASMNAME (#alias));
|
||||
# define __LDBL_REDIR_DECL(name) \
|
||||
extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name));
|
||||
# define __REDIRECT_LDBL(name, proto, alias) \
|
||||
__LDBL_REDIR1 (name, proto, __nldbl_##alias)
|
||||
# define __REDIRECT_NTH_LDBL(name, proto, alias) \
|
||||
__LDBL_REDIR1_NTH (name, proto, __nldbl_##alias)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined __LDBL_COMPAT || !defined __REDIRECT
|
||||
# define __LDBL_REDIR1(name, proto, alias) name proto
|
||||
# define __LDBL_REDIR(name, proto) name proto
|
||||
# define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW
|
||||
# define __LDBL_REDIR_NTH(name, proto) name proto __THROW
|
||||
# define __LDBL_REDIR_DECL(name)
|
||||
# ifdef __REDIRECT
|
||||
# define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias)
|
||||
# define __REDIRECT_NTH_LDBL(name, proto, alias) \
|
||||
__REDIRECT_NTH (name, proto, alias)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
|
||||
intended for use in preprocessor macros.
|
||||
|
||||
Note: MESSAGE must be a _single_ string; concatenation of string
|
||||
literals is not supported. */
|
||||
#if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5)
|
||||
# define __glibc_macro_warning1(message) _Pragma (#message)
|
||||
# define __glibc_macro_warning(message) \
|
||||
__glibc_macro_warning1 (GCC warning message)
|
||||
#else
|
||||
# define __glibc_macro_warning(msg)
|
||||
#endif
|
||||
|
||||
/* Generic selection (ISO C11) is a C-only feature, available in GCC
|
||||
since version 4.9. Previous versions do not provide generic
|
||||
selection, even though they might set __STDC_VERSION__ to 201112L,
|
||||
when in -std=c11 mode. Thus, we must check for !defined __GNUC__
|
||||
when testing __STDC_VERSION__ for generic selection support.
|
||||
On the other hand, Clang also defines __GNUC__, so a clang-specific
|
||||
check is required to enable the use of generic selection. */
|
||||
#if !defined __cplusplus \
|
||||
&& (__GNUC_PREREQ (4, 9) \
|
||||
|| __glibc_clang_has_extension (c_generic_selections) \
|
||||
|| (!defined __GNUC__ && defined __STDC_VERSION__ \
|
||||
&& __STDC_VERSION__ >= 201112L))
|
||||
# define __HAVE_GENERIC_SELECTION 1
|
||||
#else
|
||||
# define __HAVE_GENERIC_SELECTION 0
|
||||
#endif
|
||||
|
||||
#endif /* sys/cdefs.h */
|
|
@ -0,0 +1,128 @@
|
|||
/* `fd_set' type and related macros, and `select'/`pselect' declarations.
|
||||
Copyright (C) 1996-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> */
|
||||
|
||||
#ifndef _SYS_SELECT_H
|
||||
#define _SYS_SELECT_H 1
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* Get definition of needed basic types. */
|
||||
#include <bits/types.h>
|
||||
|
||||
/* Get __FD_* definitions. */
|
||||
#include <bits/select.h>
|
||||
|
||||
/* Get sigset_t. */
|
||||
#include <bits/types/sigset_t.h>
|
||||
|
||||
/* Get definition of timer specification structures. */
|
||||
#include <bits/types/time_t.h>
|
||||
#include <bits/types/struct_timeval.h>
|
||||
#ifdef __USE_XOPEN2K
|
||||
# include <bits/types/struct_timespec.h>
|
||||
#endif
|
||||
|
||||
#ifndef __suseconds_t_defined
|
||||
typedef __suseconds_t suseconds_t;
|
||||
# define __suseconds_t_defined
|
||||
#endif
|
||||
|
||||
|
||||
/* The fd_set member is required to be an array of longs. */
|
||||
typedef long int __fd_mask;
|
||||
|
||||
/* Some versions of <linux/posix_types.h> define this macros. */
|
||||
#undef __NFDBITS
|
||||
/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
|
||||
#define __NFDBITS (8 * (int) sizeof (__fd_mask))
|
||||
#define __FD_ELT(d) ((d) / __NFDBITS)
|
||||
#define __FD_MASK(d) ((__fd_mask) (1UL << ((d) % __NFDBITS)))
|
||||
|
||||
/* fd_set for select and pselect. */
|
||||
typedef struct
|
||||
{
|
||||
/* XPG4.2 requires this member name. Otherwise avoid the name
|
||||
from the global namespace. */
|
||||
#ifdef __USE_XOPEN
|
||||
__fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
|
||||
# define __FDS_BITS(set) ((set)->fds_bits)
|
||||
#else
|
||||
__fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
|
||||
# define __FDS_BITS(set) ((set)->__fds_bits)
|
||||
#endif
|
||||
} fd_set;
|
||||
|
||||
/* Maximum number of file descriptors in `fd_set'. */
|
||||
#define FD_SETSIZE __FD_SETSIZE
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* Sometimes the fd_set member is assumed to have this type. */
|
||||
typedef __fd_mask fd_mask;
|
||||
|
||||
/* Number of bits per word of `fd_set' (some code assumes this is 32). */
|
||||
# define NFDBITS __NFDBITS
|
||||
#endif
|
||||
|
||||
|
||||
/* Access macros for `fd_set'. */
|
||||
#define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp)
|
||||
#define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp)
|
||||
#define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp)
|
||||
#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Check the first NFDS descriptors each in READFDS (if not NULL) for read
|
||||
readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
|
||||
(if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
|
||||
after waiting the interval specified therein. Returns the number of ready
|
||||
descriptors, or -1 for errors.
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int select (int __nfds, fd_set *__restrict __readfds,
|
||||
fd_set *__restrict __writefds,
|
||||
fd_set *__restrict __exceptfds,
|
||||
struct timeval *__restrict __timeout);
|
||||
|
||||
#ifdef __USE_XOPEN2K
|
||||
/* Same as above only that the TIMEOUT value is given with higher
|
||||
resolution and a sigmask which is been set temporarily. This version
|
||||
should be used.
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int pselect (int __nfds, fd_set *__restrict __readfds,
|
||||
fd_set *__restrict __writefds,
|
||||
fd_set *__restrict __exceptfds,
|
||||
const struct timespec *__restrict __timeout,
|
||||
const __sigset_t *__restrict __sigmask);
|
||||
#endif
|
||||
|
||||
|
||||
/* Define some inlines helping to catch common problems. */
|
||||
#if __USE_FORTIFY_LEVEL > 0 && defined __GNUC__
|
||||
# include <bits/select2.h>
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/select.h */
|
|
@ -0,0 +1 @@
|
|||
#include <sys/syscall.h>
|
|
@ -0,0 +1,62 @@
|
|||
/* Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
In addition to the permissions in the GNU Lesser General Public
|
||||
License, the Free Software Foundation gives you unlimited
|
||||
permission to link the compiled version of this file with other
|
||||
programs, and to distribute those programs without any restriction
|
||||
coming from the use of this file. (The GNU Lesser General Public
|
||||
License restrictions do apply in other respects; for example, they
|
||||
cover modification of the file, and distribution when not linked
|
||||
into another program.)
|
||||
|
||||
Note that people who make modified versions of this file are not
|
||||
obligated to grant this special exception for their modified
|
||||
versions; it is their choice whether to do so. The GNU Lesser
|
||||
General Public License gives permission to release a modified
|
||||
version without this exception; this exception also makes it
|
||||
possible to release a modified version which carries forward this
|
||||
exception.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
extern int __pthread_atfork (void (*prepare) (void), void (*parent) (void),
|
||||
void (*child) (void));
|
||||
extern int __register_atfork (void (*__prepare) (void),
|
||||
void (*__parent) (void),
|
||||
void (*__child) (void),
|
||||
void *dso_handle);
|
||||
libc_hidden_proto (__register_atfork)
|
||||
extern void *__dso_handle __attribute__ ((__visibility__ ("hidden")));
|
||||
|
||||
|
||||
/* Hide the symbol so that no definition but the one locally in the
|
||||
executable or DSO is used. */
|
||||
int
|
||||
#ifndef __pthread_atfork
|
||||
/* Don't mark the compatibility function as hidden. */
|
||||
attribute_hidden
|
||||
#endif
|
||||
__pthread_atfork (void (*prepare) (void), void (*parent) (void),
|
||||
void (*child) (void))
|
||||
{
|
||||
return __register_atfork (prepare, parent, child, __dso_handle);
|
||||
}
|
||||
#ifndef __pthread_atfork
|
||||
extern int pthread_atfork (void (*prepare) (void), void (*parent) (void),
|
||||
void (*child) (void)) attribute_hidden;
|
||||
weak_alias (__pthread_atfork, pthread_atfork)
|
||||
#endif
|
|
@ -0,0 +1,124 @@
|
|||
/* Definition of the cpu_set_t structure used by the POSIX 1003.1b-1993
|
||||
scheduling interface.
|
||||
Copyright (C) 1996-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _BITS_CPU_SET_H
|
||||
#define _BITS_CPU_SET_H 1
|
||||
|
||||
#ifndef _SCHED_H
|
||||
# error "Never include <bits/cpu-set.h> directly; use <sched.h> instead."
|
||||
#endif
|
||||
|
||||
/* Size definition for CPU sets. */
|
||||
#define __CPU_SETSIZE 1024
|
||||
#define __NCPUBITS (8 * sizeof (__cpu_mask))
|
||||
|
||||
/* Type for array elements in 'cpu_set_t'. */
|
||||
typedef __CPU_MASK_TYPE __cpu_mask;
|
||||
|
||||
/* Basic access functions. */
|
||||
#define __CPUELT(cpu) ((cpu) / __NCPUBITS)
|
||||
#define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
|
||||
|
||||
/* Data structure to describe CPU mask. */
|
||||
typedef struct
|
||||
{
|
||||
__cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
|
||||
} cpu_set_t;
|
||||
|
||||
/* Access functions for CPU masks. */
|
||||
#if __GNUC_PREREQ (2, 91)
|
||||
# define __CPU_ZERO_S(setsize, cpusetp) \
|
||||
do __builtin_memset (cpusetp, '\0', setsize); while (0)
|
||||
#else
|
||||
# define __CPU_ZERO_S(setsize, cpusetp) \
|
||||
do { \
|
||||
size_t __i; \
|
||||
size_t __imax = (setsize) / sizeof (__cpu_mask); \
|
||||
__cpu_mask *__bits = (cpusetp)->__bits; \
|
||||
for (__i = 0; __i < __imax; ++__i) \
|
||||
__bits[__i] = 0; \
|
||||
} while (0)
|
||||
#endif
|
||||
#define __CPU_SET_S(cpu, setsize, cpusetp) \
|
||||
(__extension__ \
|
||||
({ size_t __cpu = (cpu); \
|
||||
__cpu / 8 < (setsize) \
|
||||
? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
|
||||
|= __CPUMASK (__cpu)) \
|
||||
: 0; }))
|
||||
#define __CPU_CLR_S(cpu, setsize, cpusetp) \
|
||||
(__extension__ \
|
||||
({ size_t __cpu = (cpu); \
|
||||
__cpu / 8 < (setsize) \
|
||||
? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
|
||||
&= ~__CPUMASK (__cpu)) \
|
||||
: 0; }))
|
||||
#define __CPU_ISSET_S(cpu, setsize, cpusetp) \
|
||||
(__extension__ \
|
||||
({ size_t __cpu = (cpu); \
|
||||
__cpu / 8 < (setsize) \
|
||||
? ((((const __cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
|
||||
& __CPUMASK (__cpu))) != 0 \
|
||||
: 0; }))
|
||||
|
||||
#define __CPU_COUNT_S(setsize, cpusetp) \
|
||||
__sched_cpucount (setsize, cpusetp)
|
||||
|
||||
#if __GNUC_PREREQ (2, 91)
|
||||
# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
|
||||
(__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0)
|
||||
#else
|
||||
# define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
|
||||
(__extension__ \
|
||||
({ const __cpu_mask *__arr1 = (cpusetp1)->__bits; \
|
||||
const __cpu_mask *__arr2 = (cpusetp2)->__bits; \
|
||||
size_t __imax = (setsize) / sizeof (__cpu_mask); \
|
||||
size_t __i; \
|
||||
for (__i = 0; __i < __imax; ++__i) \
|
||||
if (__arr1[__i] != __arr2[__i]) \
|
||||
break; \
|
||||
__i == __imax; }))
|
||||
#endif
|
||||
|
||||
#define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \
|
||||
(__extension__ \
|
||||
({ cpu_set_t *__dest = (destset); \
|
||||
const __cpu_mask *__arr1 = (srcset1)->__bits; \
|
||||
const __cpu_mask *__arr2 = (srcset2)->__bits; \
|
||||
size_t __imax = (setsize) / sizeof (__cpu_mask); \
|
||||
size_t __i; \
|
||||
for (__i = 0; __i < __imax; ++__i) \
|
||||
((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; \
|
||||
__dest; }))
|
||||
|
||||
#define __CPU_ALLOC_SIZE(count) \
|
||||
((((count) + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask))
|
||||
#define __CPU_ALLOC(count) __sched_cpualloc (count)
|
||||
#define __CPU_FREE(cpuset) __sched_cpufree (cpuset)
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
|
||||
__THROW;
|
||||
extern cpu_set_t *__sched_cpualloc (size_t __count) __THROW __wur;
|
||||
extern void __sched_cpufree (cpu_set_t *__set) __THROW;
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* bits/cpu-set.h */
|
|
@ -0,0 +1,224 @@
|
|||
/* bits/types.h -- definitions of __*_t types underlying *_t types.
|
||||
Copyright (C) 2002-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/*
|
||||
* Never include this file directly; use <sys/types.h> instead.
|
||||
*/
|
||||
|
||||
#ifndef _BITS_TYPES_H
|
||||
#define _BITS_TYPES_H 1
|
||||
|
||||
#include <features.h>
|
||||
#include <bits/wordsize.h>
|
||||
#include <bits/timesize.h>
|
||||
|
||||
/* Convenience types. */
|
||||
typedef unsigned char __u_char;
|
||||
typedef unsigned short int __u_short;
|
||||
typedef unsigned int __u_int;
|
||||
typedef unsigned long int __u_long;
|
||||
|
||||
/* Fixed-size types, underlying types depend on word size and compiler. */
|
||||
typedef signed char __int8_t;
|
||||
typedef unsigned char __uint8_t;
|
||||
typedef signed short int __int16_t;
|
||||
typedef unsigned short int __uint16_t;
|
||||
typedef signed int __int32_t;
|
||||
typedef unsigned int __uint32_t;
|
||||
#if __WORDSIZE == 64
|
||||
typedef signed long int __int64_t;
|
||||
typedef unsigned long int __uint64_t;
|
||||
#else
|
||||
__extension__ typedef signed long long int __int64_t;
|
||||
__extension__ typedef unsigned long long int __uint64_t;
|
||||
#endif
|
||||
|
||||
/* Smallest types with at least a given width. */
|
||||
typedef __int8_t __int_least8_t;
|
||||
typedef __uint8_t __uint_least8_t;
|
||||
typedef __int16_t __int_least16_t;
|
||||
typedef __uint16_t __uint_least16_t;
|
||||
typedef __int32_t __int_least32_t;
|
||||
typedef __uint32_t __uint_least32_t;
|
||||
typedef __int64_t __int_least64_t;
|
||||
typedef __uint64_t __uint_least64_t;
|
||||
|
||||
/* quad_t is also 64 bits. */
|
||||
#if __WORDSIZE == 64
|
||||
typedef long int __quad_t;
|
||||
typedef unsigned long int __u_quad_t;
|
||||
#else
|
||||
__extension__ typedef long long int __quad_t;
|
||||
__extension__ typedef unsigned long long int __u_quad_t;
|
||||
#endif
|
||||
|
||||
/* Largest integral types. */
|
||||
#if __WORDSIZE == 64
|
||||
typedef long int __intmax_t;
|
||||
typedef unsigned long int __uintmax_t;
|
||||
#else
|
||||
__extension__ typedef long long int __intmax_t;
|
||||
__extension__ typedef unsigned long long int __uintmax_t;
|
||||
#endif
|
||||
|
||||
|
||||
/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
|
||||
macros for each of the OS types we define below. The definitions
|
||||
of those macros must use the following macros for underlying types.
|
||||
We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
|
||||
variants of each of the following integer types on this machine.
|
||||
|
||||
16 -- "natural" 16-bit type (always short)
|
||||
32 -- "natural" 32-bit type (always int)
|
||||
64 -- "natural" 64-bit type (long or long long)
|
||||
LONG32 -- 32-bit type, traditionally long
|
||||
QUAD -- 64-bit type, always long long
|
||||
WORD -- natural type of __WORDSIZE bits (int or long)
|
||||
LONGWORD -- type of __WORDSIZE bits, traditionally long
|
||||
|
||||
We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
|
||||
conventional uses of `long' or `long long' type modifiers match the
|
||||
types we define, even when a less-adorned type would be the same size.
|
||||
This matters for (somewhat) portably writing printf/scanf formats for
|
||||
these types, where using the appropriate l or ll format modifiers can
|
||||
make the typedefs and the formats match up across all GNU platforms. If
|
||||
we used `long' when it's 64 bits where `long long' is expected, then the
|
||||
compiler would warn about the formats not matching the argument types,
|
||||
and the programmer changing them to shut up the compiler would break the
|
||||
program's portability.
|
||||
|
||||
Here we assume what is presently the case in all the GCC configurations
|
||||
we support: long long is always 64 bits, long is always word/address size,
|
||||
and int is always 32 bits. */
|
||||
|
||||
#define __S16_TYPE short int
|
||||
#define __U16_TYPE unsigned short int
|
||||
#define __S32_TYPE int
|
||||
#define __U32_TYPE unsigned int
|
||||
#define __SLONGWORD_TYPE long int
|
||||
#define __ULONGWORD_TYPE unsigned long int
|
||||
#if __WORDSIZE == 32
|
||||
# define __SQUAD_TYPE __quad_t
|
||||
# define __UQUAD_TYPE __u_quad_t
|
||||
# define __SWORD_TYPE int
|
||||
# define __UWORD_TYPE unsigned int
|
||||
# define __SLONG32_TYPE long int
|
||||
# define __ULONG32_TYPE unsigned long int
|
||||
# define __S64_TYPE __quad_t
|
||||
# define __U64_TYPE __u_quad_t
|
||||
/* We want __extension__ before typedef's that use nonstandard base types
|
||||
such as `long long' in C89 mode. */
|
||||
# define __STD_TYPE __extension__ typedef
|
||||
#elif __WORDSIZE == 64
|
||||
# define __SQUAD_TYPE long int
|
||||
# define __UQUAD_TYPE unsigned long int
|
||||
# define __SWORD_TYPE long int
|
||||
# define __UWORD_TYPE unsigned long int
|
||||
# define __SLONG32_TYPE int
|
||||
# define __ULONG32_TYPE unsigned int
|
||||
# define __S64_TYPE long int
|
||||
# define __U64_TYPE unsigned long int
|
||||
/* No need to mark the typedef with __extension__. */
|
||||
# define __STD_TYPE typedef
|
||||
#else
|
||||
# error
|
||||
#endif
|
||||
#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */
|
||||
#include <bits/time64.h> /* Defines __TIME*_T_TYPE macros. */
|
||||
|
||||
|
||||
__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */
|
||||
__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */
|
||||
__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */
|
||||
__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
|
||||
__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/
|
||||
__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
|
||||
__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
|
||||
__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
|
||||
__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
|
||||
__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
|
||||
__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
|
||||
__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
|
||||
__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
|
||||
__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
|
||||
__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */
|
||||
__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
|
||||
__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
|
||||
__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
|
||||
|
||||
__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
|
||||
__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */
|
||||
|
||||
/* Clock ID used in clock and timer functions. */
|
||||
__STD_TYPE __CLOCKID_T_TYPE __clockid_t;
|
||||
|
||||
/* Timer ID returned by `timer_create'. */
|
||||
__STD_TYPE __TIMER_T_TYPE __timer_t;
|
||||
|
||||
/* Type to represent block size. */
|
||||
__STD_TYPE __BLKSIZE_T_TYPE __blksize_t;
|
||||
|
||||
/* Types from the Large File Support interface. */
|
||||
|
||||
/* Type to count number of disk blocks. */
|
||||
__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t;
|
||||
__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;
|
||||
|
||||
/* Type to count file system blocks. */
|
||||
__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t;
|
||||
__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
|
||||
|
||||
/* Type to count file system nodes. */
|
||||
__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t;
|
||||
__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t;
|
||||
|
||||
/* Type of miscellaneous file system fields. */
|
||||
__STD_TYPE __FSWORD_T_TYPE __fsword_t;
|
||||
|
||||
__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */
|
||||
|
||||
/* Signed long type used in system calls. */
|
||||
__STD_TYPE __SYSCALL_SLONG_TYPE __syscall_slong_t;
|
||||
/* Unsigned long type used in system calls. */
|
||||
__STD_TYPE __SYSCALL_ULONG_TYPE __syscall_ulong_t;
|
||||
|
||||
/* These few don't really vary by system, they always correspond
|
||||
to one of the other defined types. */
|
||||
typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */
|
||||
typedef char *__caddr_t;
|
||||
|
||||
/* Duplicates info from stdint.h but this is used in unistd.h. */
|
||||
__STD_TYPE __SWORD_TYPE __intptr_t;
|
||||
|
||||
/* Duplicate info from sys/socket.h. */
|
||||
__STD_TYPE __U32_TYPE __socklen_t;
|
||||
|
||||
/* C99: An integer type that can be accessed as an atomic entity,
|
||||
even in the presence of asynchronous interrupts.
|
||||
It is not currently necessary for this to be machine-specific. */
|
||||
typedef int __sig_atomic_t;
|
||||
|
||||
#if __TIMESIZE == 64
|
||||
# define __time64_t __time_t
|
||||
#else
|
||||
__STD_TYPE __TIME64_T_TYPE __time64_t; /* Seconds since the Epoch. */
|
||||
#endif
|
||||
|
||||
#undef __STD_TYPE
|
||||
|
||||
#endif /* bits/types.h */
|
|
@ -0,0 +1,249 @@
|
|||
/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/*
|
||||
* POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
|
||||
*/
|
||||
|
||||
#ifndef _SYS_TYPES_H
|
||||
#define _SYS_TYPES_H 1
|
||||
|
||||
#include <features.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#include <bits/types.h>
|
||||
|
||||
#ifdef __USE_MISC
|
||||
# ifndef __u_char_defined
|
||||
typedef __u_char u_char;
|
||||
typedef __u_short u_short;
|
||||
typedef __u_int u_int;
|
||||
typedef __u_long u_long;
|
||||
typedef __quad_t quad_t;
|
||||
typedef __u_quad_t u_quad_t;
|
||||
typedef __fsid_t fsid_t;
|
||||
# define __u_char_defined
|
||||
# endif
|
||||
typedef __loff_t loff_t;
|
||||
#endif
|
||||
|
||||
#ifndef __ino_t_defined
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
typedef __ino_t ino_t;
|
||||
# else
|
||||
typedef __ino64_t ino_t;
|
||||
# endif
|
||||
# define __ino_t_defined
|
||||
#endif
|
||||
#if defined __USE_LARGEFILE64 && !defined __ino64_t_defined
|
||||
typedef __ino64_t ino64_t;
|
||||
# define __ino64_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __dev_t_defined
|
||||
typedef __dev_t dev_t;
|
||||
# define __dev_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __gid_t_defined
|
||||
typedef __gid_t gid_t;
|
||||
# define __gid_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __mode_t_defined
|
||||
typedef __mode_t mode_t;
|
||||
# define __mode_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __nlink_t_defined
|
||||
typedef __nlink_t nlink_t;
|
||||
# define __nlink_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __uid_t_defined
|
||||
typedef __uid_t uid_t;
|
||||
# define __uid_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __off_t_defined
|
||||
# ifndef __USE_FILE_OFFSET64
|
||||
typedef __off_t off_t;
|
||||
# else
|
||||
typedef __off64_t off_t;
|
||||
# endif
|
||||
# define __off_t_defined
|
||||
#endif
|
||||
#if defined __USE_LARGEFILE64 && !defined __off64_t_defined
|
||||
typedef __off64_t off64_t;
|
||||
# define __off64_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __pid_t_defined
|
||||
typedef __pid_t pid_t;
|
||||
# define __pid_t_defined
|
||||
#endif
|
||||
|
||||
#if (defined __USE_XOPEN || defined __USE_XOPEN2K8) \
|
||||
&& !defined __id_t_defined
|
||||
typedef __id_t id_t;
|
||||
# define __id_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __ssize_t_defined
|
||||
typedef __ssize_t ssize_t;
|
||||
# define __ssize_t_defined
|
||||
#endif
|
||||
|
||||
#ifdef __USE_MISC
|
||||
# ifndef __daddr_t_defined
|
||||
typedef __daddr_t daddr_t;
|
||||
typedef __caddr_t caddr_t;
|
||||
# define __daddr_t_defined
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if (defined __USE_MISC || defined __USE_XOPEN) && !defined __key_t_defined
|
||||
typedef __key_t key_t;
|
||||
# define __key_t_defined
|
||||
#endif
|
||||
|
||||
#if defined __USE_XOPEN || defined __USE_XOPEN2K8
|
||||
# include <bits/types/clock_t.h>
|
||||
#endif
|
||||
#include <bits/types/clockid_t.h>
|
||||
#include <bits/types/time_t.h>
|
||||
#include <bits/types/timer_t.h>
|
||||
|
||||
#ifdef __USE_XOPEN
|
||||
# ifndef __useconds_t_defined
|
||||
typedef __useconds_t useconds_t;
|
||||
# define __useconds_t_defined
|
||||
# endif
|
||||
# ifndef __suseconds_t_defined
|
||||
typedef __suseconds_t suseconds_t;
|
||||
# define __suseconds_t_defined
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define __need_size_t
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* Old compatibility names for C types. */
|
||||
typedef unsigned long int ulong;
|
||||
typedef unsigned short int ushort;
|
||||
typedef unsigned int uint;
|
||||
#endif
|
||||
|
||||
/* These size-specific names are used by some of the inet code. */
|
||||
|
||||
#include <bits/stdint-intn.h>
|
||||
|
||||
#if !__GNUC_PREREQ (2, 7)
|
||||
|
||||
/* These were defined by ISO C without the first `_'. */
|
||||
typedef unsigned char u_int8_t;
|
||||
typedef unsigned short int u_int16_t;
|
||||
typedef unsigned int u_int32_t;
|
||||
# if __WORDSIZE == 64
|
||||
typedef unsigned long int u_int64_t;
|
||||
# else
|
||||
__extension__ typedef unsigned long long int u_int64_t;
|
||||
# endif
|
||||
|
||||
typedef int register_t;
|
||||
|
||||
#else
|
||||
|
||||
/* For GCC 2.7 and later, we can use specific type-size attributes. */
|
||||
# define __u_intN_t(N, MODE) \
|
||||
typedef unsigned int u_int##N##_t __attribute__ ((__mode__ (MODE)))
|
||||
|
||||
__u_intN_t (8, __QI__);
|
||||
__u_intN_t (16, __HI__);
|
||||
__u_intN_t (32, __SI__);
|
||||
__u_intN_t (64, __DI__);
|
||||
|
||||
typedef int register_t __attribute__ ((__mode__ (__word__)));
|
||||
|
||||
|
||||
/* Some code from BIND tests this macro to see if the types above are
|
||||
defined. */
|
||||
#endif
|
||||
#define __BIT_TYPES_DEFINED__ 1
|
||||
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* In BSD <sys/types.h> is expected to define BYTE_ORDER. */
|
||||
# include <endian.h>
|
||||
|
||||
/* It also defines `fd_set' and the FD_* macros for `select'. */
|
||||
# include <sys/select.h>
|
||||
#endif /* Use misc. */
|
||||
|
||||
|
||||
#if (defined __USE_UNIX98 || defined __USE_XOPEN2K8) \
|
||||
&& !defined __blksize_t_defined
|
||||
typedef __blksize_t blksize_t;
|
||||
# define __blksize_t_defined
|
||||
#endif
|
||||
|
||||
/* Types from the Large File Support interface. */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
# ifndef __blkcnt_t_defined
|
||||
typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */
|
||||
# define __blkcnt_t_defined
|
||||
# endif
|
||||
# ifndef __fsblkcnt_t_defined
|
||||
typedef __fsblkcnt_t fsblkcnt_t; /* Type to count file system blocks. */
|
||||
# define __fsblkcnt_t_defined
|
||||
# endif
|
||||
# ifndef __fsfilcnt_t_defined
|
||||
typedef __fsfilcnt_t fsfilcnt_t; /* Type to count file system inodes. */
|
||||
# define __fsfilcnt_t_defined
|
||||
# endif
|
||||
#else
|
||||
# ifndef __blkcnt_t_defined
|
||||
typedef __blkcnt64_t blkcnt_t; /* Type to count number of disk blocks. */
|
||||
# define __blkcnt_t_defined
|
||||
# endif
|
||||
# ifndef __fsblkcnt_t_defined
|
||||
typedef __fsblkcnt64_t fsblkcnt_t; /* Type to count file system blocks. */
|
||||
# define __fsblkcnt_t_defined
|
||||
# endif
|
||||
# ifndef __fsfilcnt_t_defined
|
||||
typedef __fsfilcnt64_t fsfilcnt_t; /* Type to count file system inodes. */
|
||||
# define __fsfilcnt_t_defined
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
typedef __blkcnt64_t blkcnt64_t; /* Type to count number of disk blocks. */
|
||||
typedef __fsblkcnt64_t fsblkcnt64_t; /* Type to count file system blocks. */
|
||||
typedef __fsfilcnt64_t fsfilcnt64_t; /* Type to count file system inodes. */
|
||||
#endif
|
||||
|
||||
|
||||
/* Now add the thread types. */
|
||||
#if defined __USE_POSIX199506 || defined __USE_UNIX98
|
||||
# include <bits/pthreadtypes.h>
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/types.h */
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef __sig_atomic_t_defined
|
||||
#define __sig_atomic_t_defined 1
|
||||
|
||||
#include <bits/types.h>
|
||||
|
||||
/* An integral type that can be modified atomically, without the
|
||||
possibility of a signal arriving in the middle of the operation. */
|
||||
typedef __sig_atomic_t sig_atomic_t;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef __sigset_t_defined
|
||||
#define __sigset_t_defined 1
|
||||
|
||||
#include <bits/types/__sigset_t.h>
|
||||
|
||||
/* A set of signals to be blocked, unblocked, or waited for. */
|
||||
typedef __sigset_t sigset_t;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,375 @@
|
|||
/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/*
|
||||
* ISO C99 Standard: 7.14 Signal handling <signal.h>
|
||||
*/
|
||||
|
||||
#ifndef _SIGNAL_H
|
||||
#define _SIGNAL_H
|
||||
|
||||
#include <features.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#include <bits/types.h>
|
||||
#include <bits/signum.h>
|
||||
|
||||
#include <bits/types/sig_atomic_t.h>
|
||||
|
||||
#if defined __USE_POSIX
|
||||
#include <bits/types/sigset_t.h>
|
||||
#endif
|
||||
|
||||
#if defined __USE_XOPEN || defined __USE_XOPEN2K
|
||||
# ifndef __pid_t_defined
|
||||
typedef __pid_t pid_t;
|
||||
# define __pid_t_defined
|
||||
#endif
|
||||
#ifdef __USE_XOPEN
|
||||
# endif
|
||||
# ifndef __uid_t_defined
|
||||
typedef __uid_t uid_t;
|
||||
# define __uid_t_defined
|
||||
# endif
|
||||
#endif /* Unix98 */
|
||||
|
||||
#ifdef __USE_POSIX199309
|
||||
/* We need `struct timespec' later on. */
|
||||
# include <bits/types/struct_timespec.h>
|
||||
#endif
|
||||
|
||||
#if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED
|
||||
# include <bits/types/siginfo_t.h>
|
||||
# include <bits/siginfo-consts.h>
|
||||
#endif
|
||||
|
||||
#ifdef __USE_MISC
|
||||
# include <bits/types/sigval_t.h>
|
||||
#endif
|
||||
|
||||
#ifdef __USE_POSIX199309
|
||||
# include <bits/types/sigevent_t.h>
|
||||
# include <bits/sigevent-consts.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* Type of a signal handler. */
|
||||
typedef void (*__sighandler_t) (int);
|
||||
|
||||
/* The X/Open definition of `signal' specifies the SVID semantic. Use
|
||||
the additional function `sysv_signal' when X/Open compatibility is
|
||||
requested. */
|
||||
extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
|
||||
__THROW;
|
||||
#ifdef __USE_GNU
|
||||
extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
|
||||
__THROW;
|
||||
#endif
|
||||
|
||||
/* Set the handler for the signal SIG to HANDLER, returning the old
|
||||
handler, or SIG_ERR on error.
|
||||
By default `signal' has the BSD semantic. */
|
||||
#ifdef __USE_MISC
|
||||
extern __sighandler_t signal (int __sig, __sighandler_t __handler)
|
||||
__THROW;
|
||||
#else
|
||||
/* Make sure the used `signal' implementation is the SVID version. */
|
||||
# ifdef __REDIRECT_NTH
|
||||
extern __sighandler_t __REDIRECT_NTH (signal,
|
||||
(int __sig, __sighandler_t __handler),
|
||||
__sysv_signal);
|
||||
# else
|
||||
# define signal __sysv_signal
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8
|
||||
/* The X/Open definition of `signal' conflicts with the BSD version.
|
||||
So they defined another function `bsd_signal'. */
|
||||
extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler)
|
||||
__THROW;
|
||||
#endif
|
||||
|
||||
/* Send signal SIG to process number PID. If PID is zero,
|
||||
send SIG to all processes in the current process's process group.
|
||||
If PID is < -1, send SIG to all processes in process group - PID. */
|
||||
#ifdef __USE_POSIX
|
||||
extern int kill (__pid_t __pid, int __sig) __THROW;
|
||||
#endif /* Use POSIX. */
|
||||
|
||||
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
|
||||
/* Send SIG to all processes in process group PGRP.
|
||||
If PGRP is zero, send SIG to all processes in
|
||||
the current process's process group. */
|
||||
extern int killpg (__pid_t __pgrp, int __sig) __THROW;
|
||||
#endif /* Use misc || X/Open Unix. */
|
||||
|
||||
/* Raise signal SIG, i.e., send SIG to yourself. */
|
||||
extern int raise (int __sig) __THROW;
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* SVID names for the same things. */
|
||||
extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
|
||||
__THROW;
|
||||
extern int gsignal (int __sig) __THROW;
|
||||
#endif /* Use misc. */
|
||||
|
||||
#ifdef __USE_XOPEN2K8
|
||||
/* Print a message describing the meaning of the given signal number. */
|
||||
extern void psignal (int __sig, const char *__s);
|
||||
|
||||
/* Print a message describing the meaning of the given signal information. */
|
||||
extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
|
||||
#endif /* POSIX 2008. */
|
||||
|
||||
|
||||
|
||||
/* The `sigpause' function in X/Open defines the argument as the
|
||||
signal number. This requires redirecting to another function
|
||||
because the default version in glibc uses an old BSD interface.
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
|
||||
#ifdef __USE_XOPEN_EXTENDED
|
||||
# ifdef __GNUC__
|
||||
extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
|
||||
# else
|
||||
extern int __sigpause (int __sig_or_mask, int __is_sig);
|
||||
/* Remove a signal from the signal mask and suspend the process. */
|
||||
# define sigpause(sig) __sigpause ((sig), 1)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __USE_MISC
|
||||
/* None of the following functions should be used anymore. They are here
|
||||
only for compatibility. A single word (`int') is not guaranteed to be
|
||||
enough to hold a complete signal mask and therefore these functions
|
||||
simply do not work in many situations. Use `sigprocmask' instead. */
|
||||
|
||||
/* Compute mask for signal SIG. */
|
||||
# define sigmask(sig) ((int)(1u << ((sig) - 1)))
|
||||
|
||||
/* Block signals in MASK, returning the old mask. */
|
||||
extern int sigblock (int __mask) __THROW __attribute_deprecated__;
|
||||
|
||||
/* Set the mask of blocked signals to MASK, returning the old mask. */
|
||||
extern int sigsetmask (int __mask) __THROW __attribute_deprecated__;
|
||||
|
||||
/* Return currently selected signal mask. */
|
||||
extern int siggetmask (void) __THROW __attribute_deprecated__;
|
||||
#endif /* Use misc. */
|
||||
|
||||
|
||||
#ifdef __USE_MISC
|
||||
# define NSIG _NSIG
|
||||
#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
typedef __sighandler_t sighandler_t;
|
||||
#endif
|
||||
|
||||
/* 4.4 BSD uses the name `sig_t' for this. */
|
||||
#ifdef __USE_MISC
|
||||
typedef __sighandler_t sig_t;
|
||||
#endif
|
||||
|
||||
#ifdef __USE_POSIX
|
||||
|
||||
/* Clear all signals from SET. */
|
||||
extern int sigemptyset (sigset_t *__set) __THROW __nonnull ((1));
|
||||
|
||||
/* Set all signals in SET. */
|
||||
extern int sigfillset (sigset_t *__set) __THROW __nonnull ((1));
|
||||
|
||||
/* Add SIGNO to SET. */
|
||||
extern int sigaddset (sigset_t *__set, int __signo) __THROW __nonnull ((1));
|
||||
|
||||
/* Remove SIGNO from SET. */
|
||||
extern int sigdelset (sigset_t *__set, int __signo) __THROW __nonnull ((1));
|
||||
|
||||
/* Return 1 if SIGNO is in SET, 0 if not. */
|
||||
extern int sigismember (const sigset_t *__set, int __signo)
|
||||
__THROW __nonnull ((1));
|
||||
|
||||
# ifdef __USE_GNU
|
||||
/* Return non-empty value is SET is not empty. */
|
||||
extern int sigisemptyset (const sigset_t *__set) __THROW __nonnull ((1));
|
||||
|
||||
/* Build new signal set by combining the two inputs set using logical AND. */
|
||||
extern int sigandset (sigset_t *__set, const sigset_t *__left,
|
||||
const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
|
||||
|
||||
/* Build new signal set by combining the two inputs set using logical OR. */
|
||||
extern int sigorset (sigset_t *__set, const sigset_t *__left,
|
||||
const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
|
||||
# endif /* GNU */
|
||||
|
||||
/* Get the system-specific definitions of `struct sigaction'
|
||||
and the `SA_*' and `SIG_*'. constants. */
|
||||
# include <bits/sigaction.h>
|
||||
|
||||
/* Get and/or change the set of blocked signals. */
|
||||
extern int sigprocmask (int __how, const sigset_t *__restrict __set,
|
||||
sigset_t *__restrict __oset) __THROW;
|
||||
|
||||
/* Change the set of blocked signals to SET,
|
||||
wait until a signal arrives, and restore the set of blocked signals.
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int sigsuspend (const sigset_t *__set) __nonnull ((1));
|
||||
|
||||
/* Get and/or set the action for signal SIG. */
|
||||
extern int sigaction (int __sig, const struct sigaction *__restrict __act,
|
||||
struct sigaction *__restrict __oact) __THROW;
|
||||
|
||||
/* Put in SET all signals that are blocked and waiting to be delivered. */
|
||||
extern int sigpending (sigset_t *__set) __THROW __nonnull ((1));
|
||||
|
||||
|
||||
# ifdef __USE_POSIX199506
|
||||
/* Select any of pending signals from SET or wait for any to arrive.
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig)
|
||||
__nonnull ((1, 2));
|
||||
# endif /* Use POSIX 1995. */
|
||||
|
||||
# ifdef __USE_POSIX199309
|
||||
/* Select any of pending signals from SET and place information in INFO.
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int sigwaitinfo (const sigset_t *__restrict __set,
|
||||
siginfo_t *__restrict __info) __nonnull ((1));
|
||||
|
||||
/* Select any of pending signals from SET and place information in INFO.
|
||||
Wait the time specified by TIMEOUT if no signal is pending.
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int sigtimedwait (const sigset_t *__restrict __set,
|
||||
siginfo_t *__restrict __info,
|
||||
const struct timespec *__restrict __timeout)
|
||||
__nonnull ((1));
|
||||
|
||||
/* Send signal SIG to the process PID. Associate data in VAL with the
|
||||
signal. */
|
||||
extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
|
||||
__THROW;
|
||||
# endif /* Use POSIX 199306. */
|
||||
|
||||
#endif /* Use POSIX. */
|
||||
|
||||
#ifdef __USE_MISC
|
||||
|
||||
/* Names of the signals. This variable exists only for compatibility.
|
||||
Use `strsignal' instead (see <string.h>). */
|
||||
extern const char *const _sys_siglist[_NSIG];
|
||||
extern const char *const sys_siglist[_NSIG];
|
||||
|
||||
|
||||
/* Get machine-dependent `struct sigcontext' and signal subcodes. */
|
||||
# include <bits/sigcontext.h>
|
||||
|
||||
/* Restore the state saved in SCP. */
|
||||
extern int sigreturn (struct sigcontext *__scp) __THROW;
|
||||
|
||||
#endif /* Use misc. */
|
||||
|
||||
|
||||
#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
# define __need_size_t
|
||||
# include <stddef.h>
|
||||
|
||||
# include <bits/types/stack_t.h>
|
||||
# if defined __USE_XOPEN || defined __USE_XOPEN2K8
|
||||
/* This will define `ucontext_t' and `mcontext_t'. */
|
||||
# include <sys/ucontext.h>
|
||||
# endif
|
||||
#endif /* Use POSIX.1-2008 or X/Open Unix. */
|
||||
|
||||
#if defined __USE_XOPEN_EXTENDED || defined __USE_MISC
|
||||
/* If INTERRUPT is nonzero, make signal SIG interrupt system calls
|
||||
(causing them to fail with EINTR); if INTERRUPT is zero, make system
|
||||
calls be restarted after signal SIG. */
|
||||
extern int siginterrupt (int __sig, int __interrupt) __THROW;
|
||||
|
||||
# include <bits/sigstack.h>
|
||||
# include <bits/ss_flags.h>
|
||||
|
||||
/* Alternate signal handler stack interface.
|
||||
This interface should always be preferred over `sigstack'. */
|
||||
extern int sigaltstack (const stack_t *__restrict __ss,
|
||||
stack_t *__restrict __oss) __THROW;
|
||||
#endif /* __USE_XOPEN_EXTENDED || __USE_MISC */
|
||||
|
||||
#if ((defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
|
||||
|| defined __USE_MISC)
|
||||
# include <bits/types/struct_sigstack.h>
|
||||
#endif
|
||||
|
||||
#if ((defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
|
||||
|| defined __USE_MISC)
|
||||
/* Run signals handlers on the stack specified by SS (if not NULL).
|
||||
If OSS is not NULL, it is filled in with the old signal stack status.
|
||||
This interface is obsolete and on many platform not implemented. */
|
||||
extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
|
||||
__THROW __attribute_deprecated__;
|
||||
#endif
|
||||
|
||||
#ifdef __USE_XOPEN_EXTENDED
|
||||
/* Simplified interface for signal management. */
|
||||
|
||||
/* Add SIG to the calling process' signal mask. */
|
||||
extern int sighold (int __sig) __THROW;
|
||||
|
||||
/* Remove SIG from the calling process' signal mask. */
|
||||
extern int sigrelse (int __sig) __THROW;
|
||||
|
||||
/* Set the disposition of SIG to SIG_IGN. */
|
||||
extern int sigignore (int __sig) __THROW;
|
||||
|
||||
/* Set the disposition of SIG. */
|
||||
extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW;
|
||||
#endif
|
||||
|
||||
#if defined __USE_POSIX199506 || defined __USE_UNIX98
|
||||
/* Some of the functions for handling signals in threaded programs must
|
||||
be defined here. */
|
||||
# include <bits/pthreadtypes.h>
|
||||
# include <bits/sigthread.h>
|
||||
#endif /* use Unix98 */
|
||||
|
||||
/* The following functions are used internally in the C library and in
|
||||
other code which need deep insights. */
|
||||
|
||||
/* Return number of available real-time signal with highest priority. */
|
||||
extern int __libc_current_sigrtmin (void) __THROW;
|
||||
/* Return number of available real-time signal with lowest priority. */
|
||||
extern int __libc_current_sigrtmax (void) __THROW;
|
||||
|
||||
#define SIGRTMIN (__libc_current_sigrtmin ())
|
||||
#define SIGRTMAX (__libc_current_sigrtmax ())
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* not signal.h */
|
|
@ -0,0 +1 @@
|
|||
#include <signal.h>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue