diff options
Diffstat (limited to 'libc/ports/sysdeps/unix/sysv/linux')
49 files changed, 1488 insertions, 29 deletions
diff --git a/libc/ports/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h b/libc/ports/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h index 4a465a5bd..4a8c8d56b 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h +++ b/libc/ports/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h @@ -97,6 +97,14 @@ typedef struct int si_band; /* Band event for SIGPOLL. */ int si_fd; } _sigpoll; + + /* SIGSYS. */ + struct + { + void *_call_addr; /* Calling user insn. */ + int _syscall; /* Triggering system call number. */ + unsigned int _arch; /* AUDIT_ARCH_* of syscall. */ + } _sigsys; } _sifields; } siginfo_t; @@ -115,6 +123,9 @@ typedef struct # define si_addr _sifields._sigfault.si_addr # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd +# define si_call_addr _sifields._sigsys._call_addr +# define si_syscall _sifields._sigsys._syscall +# define si_arch _sifields._sigsys._arch /* Values for `si_code'. Positive values are reserved for kernel-generated diff --git a/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/c++-types.data new file mode 100644 index 000000000..f264ed84b --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:m +blkcnt_t:j +blksize_t:j +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:m +fd_mask:l +fsblkcnt64_t:l +fsblkcnt_t:i +fsfilcnt64_t:m +fsfilcnt_t:j +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:m +ino_t:j +int16_t:s +int32_t:i +int64_t:l +int8_t:a +intptr_t:l +key_t:i +loff_t:l +mode_t:j +nlink_t:j +off64_t:l +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:l +register_t:l +rlim64_t:m +rlim_t:m +sigset_t:10__sigset_t +size_t:m +socklen_t:j +ssize_t:l +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:m +u_int8_t:h +ulong:m +u_long:m +u_quad_t:m +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist index 6d333aa52..f8a3295ad 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist @@ -1811,6 +1811,9 @@ GLIBC_2.16 sys_errlist D 0x460 sys_nerr D 0x4 timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F GLIBC_2.2 GLIBC_2.2 A _IO_adjust_wcolumn F diff --git a/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/localplt.data b/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/localplt.data new file mode 100644 index 000000000..00700d1e0 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/localplt.data @@ -0,0 +1,20 @@ +libc.so: _OtsAddX ? +libc.so: _OtsConvertFloatXT ? +libc.so: _OtsCvtQX ? +libc.so: _OtsDivX ? +libc.so: _OtsEqlX ? +libc.so: _OtsGeqX ? +libc.so: _OtsLssX ? +libc.so: _OtsMulX ? +libc.so: _OtsNeqX ? +libc.so: _OtsSubX ? +libc.so: _Unwind_Find_FDE +libc.so: calloc ? +libc.so: free ? +libc.so: malloc ? +libc.so: memalign ? +libc.so: realloc ? +libm.so: matherr +# We used to offer inline functions that used this, so it must be exported. +# Ought to reorg things such that carg isn't thus forced to use a plt. +libm.so: __atan2 diff --git a/libc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h b/libc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h index 74d549a99..9092df719 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h +++ b/libc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h @@ -24,20 +24,14 @@ /* On ARM the mmap2/stat64/lstat64/fstat64 syscalls were introduced in 2.3.35. */ -#if __LINUX_KERNEL_VERSION >= 131875 -# define __ASSUME_MMAP2_SYSCALL 1 -# define __ASSUME_STAT64_SYSCALL 1 -#endif +#define __ASSUME_MMAP2_SYSCALL 1 +#define __ASSUME_STAT64_SYSCALL 1 /* Arm got fcntl64 in 2.4.4. */ -#if __LINUX_KERNEL_VERSION >= 132100 -# define __ASSUME_FCNTL64 1 -#endif +#define __ASSUME_FCNTL64 1 /* The vfork syscall on arm was definitely available in 2.4. */ -#if __LINUX_KERNEL_VERSION >= 132097 -# define __ASSUME_VFORK_SYSCALL 1 -#endif +#define __ASSUME_VFORK_SYSCALL 1 /* The signal frame layout changed in 2.6.18. */ #if __LINUX_KERNEL_VERSION >= 132626 diff --git a/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/c++-types.data new file mode 100644 index 000000000..fde53bf33 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist index 1f496fb61..5523fdd2a 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist @@ -78,6 +78,9 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F GLIBC_2.4 GLIBC_2.4 A _Exit F diff --git a/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/localplt.data b/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/localplt.data new file mode 100644 index 000000000..109522e37 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/localplt.data @@ -0,0 +1,13 @@ +libc.so: __signbit +libc.so: calloc +libc.so: free +libc.so: fscanf +libc.so: malloc +libc.so: memalign +libc.so: raise +libc.so: realloc +libm.so: __signbit +libm.so: __signbitf +libm.so: matherr +libpthread.so: __errno_location +libpthread.so: raise diff --git a/libc/ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h b/libc/ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h index 0adf09029..e06d5668f 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h +++ b/libc/ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2009, 2012 Free Software Foundation, Inc. +/* Copyright (C) 2002-2012 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 @@ -64,6 +64,8 @@ enum EPOLL_EVENTS #define EPOLLHUP EPOLLHUP EPOLLRDHUP = 0x2000, #define EPOLLRDHUP EPOLLRDHUP + EPOLLWAKEUP = 1u << 29, +#define EPOLLWAKEUP EPOLLWAKEUP EPOLLONESHOT = 1u << 30, #define EPOLLONESHOT EPOLLONESHOT EPOLLET = 1u << 31 diff --git a/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/c++-types.data new file mode 100644 index 000000000..23c11dc41 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:l +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:m +fd_mask:l +fsblkcnt64_t:m +fsblkcnt_t:m +fsfilcnt64_t:m +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:m +ino_t:m +int16_t:s +int32_t:i +int64_t:l +int8_t:a +intptr_t:l +key_t:i +loff_t:l +mode_t:j +nlink_t:m +off64_t:l +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:l +register_t:l +rlim64_t:m +rlim_t:m +sigset_t:10__sigset_t +size_t:m +socklen_t:j +ssize_t:l +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:m +u_int8_t:h +ulong:m +u_long:m +u_quad_t:m +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist index 6939ad73b..b73f5ca8f 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist @@ -78,6 +78,9 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F GLIBC_2.2 GLIBC_2.2 A _Exit F diff --git a/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/localplt.data b/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/localplt.data new file mode 100644 index 000000000..ba488163b --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/localplt.data @@ -0,0 +1,8 @@ +libc.so: calloc +libc.so: free +libc.so: malloc +libc.so: memalign +libc.so: realloc +libm.so: matherr +libm.so: matherrf +libm.so: matherrl diff --git a/libc/ports/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h b/libc/ports/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h index ae94464b2..ba72704e8 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h +++ b/libc/ports/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h @@ -1,5 +1,5 @@ /* `ptrace' debugger support interface. Linux/ia64 version. - Copyright (C) 2001, 2006, 2007, 2011 Free Software Foundation, Inc. + Copyright (C) 2001-2012 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 @@ -154,7 +154,8 @@ struct pt_all_user_regs }; /* Options set using PTRACE_SETOPTIONS. */ -enum __ptrace_setoptions { +enum __ptrace_setoptions +{ PTRACE_O_TRACESYSGOOD = 0x00000001, PTRACE_O_TRACEFORK = 0x00000002, PTRACE_O_TRACEVFORK = 0x00000004, @@ -162,17 +163,20 @@ enum __ptrace_setoptions { PTRACE_O_TRACEEXEC = 0x00000010, PTRACE_O_TRACEVFORKDONE = 0x00000020, PTRACE_O_TRACEEXIT = 0x00000040, - PTRACE_O_MASK = 0x0000007f + PTRACE_O_TRACESECCOMP = 0x00000080, + PTRACE_O_MASK = 0x000000ff }; /* Wait extended result codes for the above trace options. */ -enum __ptrace_eventcodes { +enum __ptrace_eventcodes +{ PTRACE_EVENT_FORK = 1, PTRACE_EVENT_VFORK = 2, PTRACE_EVENT_CLONE = 3, PTRACE_EVENT_EXEC = 4, PTRACE_EVENT_VFORK_DONE = 5, - PTRACE_EVENT_EXIT = 6 + PTRACE_EVENT_EXIT = 6, + PTRACE_EVENT_SECCOMP = 7 }; /* Perform process tracing functions. REQUEST is one of the values diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist index ca31ead95..9a924571e 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist @@ -79,6 +79,9 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F GLIBC_2.4 GLIBC_2.4 A _Exit F diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h b/libc/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h index 9b0a300c4..6fb37a616 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -18,12 +18,10 @@ <http://www.gnu.org/licenses/>. */ /* These features were surely available with 2.4.12. */ -#if __LINUX_KERNEL_VERSION >= 132108 -# define __ASSUME_MMAP2_SYSCALL 1 -# define __ASSUME_STAT64_SYSCALL 1 -# define __ASSUME_FCNTL64 1 -# define __ASSUME_VFORK_SYSCALL 1 -#endif +#define __ASSUME_MMAP2_SYSCALL 1 +#define __ASSUME_STAT64_SYSCALL 1 +#define __ASSUME_FCNTL64 1 +#define __ASSUME_VFORK_SYSCALL 1 /* Many syscalls were added in 2.6.10 for m68k. */ #if __LINUX_KERNEL_VERSION >= 132618 diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/Makefile b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/Makefile new file mode 100644 index 000000000..91bd35800 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/Makefile @@ -0,0 +1,3 @@ +ifeq ($(subdir),stdlib) +gen-as-const-headers += ucontext_i.sym +endif diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/getcontext.S b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/getcontext.S new file mode 100644 index 000000000..4f31d2afc --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/getcontext.S @@ -0,0 +1,63 @@ +/* Save current context. + Copyright (C) 2012 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 <sysdep.h> + +#include "ucontext_i.h" + + +ENTRY(__getcontext) + /* Load address of the context data structure. */ + move.l 4(%sp), %a0 + + /* Save the preserved registers and the return address. */ + movem.l %d2-%d7, oGREGS+2*4(%a0) + movem.l %a2-%a6, oGREGS+10*4(%a0) + lea 4(%sp), %a1 + move.l %a1, oSP(%a0) + move.l (%sp), oPC(%a0) + fmovem.l %fpsr/%fpcr/%fpiar, oFPREGS(%a0) + fmovem.x %fp2-%fp7, oFP2(%a0) + cfi_def_cfa (%a0, 0) + cfi_offset (%d2, oGREGS+2*4) + cfi_offset (%d3, oGREGS+3*4) + cfi_offset (%pc, oPC) + + /* Save the current signal mask. */ + lea oSIGMASK(%a0), %a1 + move.l %a1, %d3 + clr.l %d2 + move.l #SIG_SETMASK, %d1 + move.l #__NR_sigprocmask, %d0 + trap #0 + /* Restore registers. */ + move.l oGREGS+2*4(%a0), %d2 + cfi_restore (%d2) + move.l oGREGS+3*4(%a0), %d3 + cfi_restore (%d3) + cfi_def_cfa (%sp, 4) + cfi_offset (%pc, -4) + cmp.l #-4095, %d0 /* Check %d0 for error. */ + jcc SYSCALL_ERROR_LABEL /* Jump to error handler. */ + +0: /* All done, return 0 for success. */ + clr.l %d0 + rts +PSEUDO_END(__getcontext) + +weak_alias (__getcontext, getcontext) diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/makecontext.S b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/makecontext.S new file mode 100644 index 000000000..a7048b1d3 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/makecontext.S @@ -0,0 +1,100 @@ +/* Create new context. + Copyright (C) 2012 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 <sysdep.h> + +#include "ucontext_i.h" + + +ENTRY(__makecontext) + move.l 4(%sp), %a0 + + /* Get the address of the function we are supposed to run. */ + move.l 8(%sp), oPC(%a0) + + /* Compute the address of the stack. The information comes from + to us_stack element. */ + move.l oSS_SP(%a0), %a1 + add.l oSS_SIZE(%a0), %a1 + + /* Remember the number of parameters for the exit handler since + it has to remove them. We store the number in the D7 register + which the function we will call must preserve. */ + move.l 12(%sp), %d1 + move.l %d1, oGREGS+7*4(%a0) + + /* Make room on the new stack for the parameters. + Room for the arguments, return address (== 1f) and + oLINK pointer is needed. */ + neg.l %d1 + lea -8(%a1,%d1.l*4), %a1 + neg.l %d1 + + /* Store the future stack pointer. */ + move.l %a1, oSP(%a0) + + /* Put the next context on the new stack (from the uc_link + element). */ + move.l oLINK(%a0), 4(%a1,%d1.l*4) + + /* Copy all the parameters. */ +1: subq.l #1,%d1 + jmi 2f + move.l 16(%sp,%d1.l*4), 4(%a1,%d1.l*4) + jra 1b +2: + + /* If the function we call returns we must continue with the + context which is given in the uc_link element. To do this + set the return address for the function the user provides + to a little bit of helper code which does the magic (see + below). */ + lea 1f(%pc), %a0 + move.l %a0, (%a1) + /* 'makecontext' returns no value. */ + rts + + /* This is the helper code which gets called if a function which + is registered with 'makecontext' returns. In this case we + have to install the context listed in the uc_link element of + the context 'makecontext' manipulated at the time of the + 'makecontext' call. If the pointer is NULL the process must + terminate. */ + cfi_endproc +1: + /* This removes the parameters passed to the function given to + 'makecontext' from the stack. D7 contains the number of + parameters (see above). */ + lea (%sp,%d7.l*4), %sp + + tst.l (%sp) /* Check the next context. */ + jeq 2f /* If it is zero exit. */ + + jbsr JUMPTARGET(__setcontext) + /* If this returns (which can happen if the syscall fails) we'll + exit the program with the return error value (-1). */ + + move.l %d0, (%sp) +2: jbsr HIDDEN_JUMPTARGET(exit) + /* The 'exit' call should never return. In case it does cause + the process to terminate. */ + illegal + cfi_startproc +END(__makecontext) + +weak_alias (__makecontext, makecontext) diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist index c2706f1e1..fbcd20897 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist @@ -1767,6 +1767,9 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F GLIBC_2.2 GLIBC_2.2 A _IO_adjust_wcolumn F diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/setcontext.S b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/setcontext.S new file mode 100644 index 000000000..a8d53a555 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/setcontext.S @@ -0,0 +1,94 @@ +/* Install given context. + Copyright (C) 2012 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 <sysdep.h> + +#include "ucontext_i.h" + +ENTRY(__setcontext) + /* Load address of the context data structure. */ + move.l 4(%sp), %a0 + + /* Get the current signal mask. Note that we preserve D2/D3 in case + the system call fails and we return from the function with an + error. */ + move.l %d3, -(%sp) + cfi_adjust_cfa_offset (4) + cfi_rel_offset (%d3, 0) + move.l %d2, -(%sp) + cfi_adjust_cfa_offset (4) + cfi_rel_offset (%d2, 0) + clr.l %d3 + lea oSIGMASK(%a0), %a1 + move.l %a1, %d2 + move.l #SIG_SETMASK, %d1 + move.l #__NR_sigprocmask, %d0 + trap #0 + cmp.l #-4095, %d0 /* Check %d0 for error. */ + jcs 0f + move.l (%sp)+, %d2 + cfi_adjust_cfa_offset (-4) + cfi_restore (d2) + move.l (%sp)+, %d3 + cfi_adjust_cfa_offset (-4) + cfi_restore (d3) + jra SYSCALL_ERROR_LABEL /* Jump to error handler if error. */ + +0: /* Load the new stack pointer. */ + move.l oSP(%a0), %sp + cfi_def_cfa (%a0, 0) + cfi_offset (%d2, oGREGS+2*4) + cfi_offset (%d3, oGREGS+3*4) + cfi_offset (%d4, oGREGS+4*4) + cfi_offset (%d5, oGREGS+5*4) + cfi_offset (%d6, oGREGS+6*4) + cfi_offset (%d7, oGREGS+7*4) + cfi_offset (%a2, oGREGS+10*4) + cfi_offset (%a3, oGREGS+11*4) + cfi_offset (%a4, oGREGS+12*4) + cfi_offset (%a5, oGREGS+13*4) + cfi_offset (%a6, oGREGS+14*4) + cfi_offset (%fp2, oFP2+0*12) + cfi_offset (%fp3, oFP2+1*12) + cfi_offset (%fp4, oFP2+2*12) + cfi_offset (%fp5, oFP2+3*12) + cfi_offset (%fp6, oFP2+4*12) + cfi_offset (%fp7, oFP2+5*12) + cfi_offset (%pc, oPC) + + /* Load the values of all the preserved registers (except SP). */ + movem.l oGREGS+2*4(%a0), %d2-%d7 + movem.l oGREGS+10*4(%a0), %a2-%a6 + fmovem.l oFPREGS(%a0), %fpsr/%fpcr/%fpiar + fmovem.x oFP2(%a0), %fp2-%fp7 + clr.l %d0 + + /* Fetch the address to return to. */ + movl oPC(%a0), %a1 + + /* End FDE here, we fall into another context. */ + cfi_endproc + cfi_startproc + cfi_register (%pc, %a1) + + jmp (%a1) + + cfi_offset (%pc, -4) +PSEUDO_END(__setcontext) + +weak_alias (__setcontext, setcontext) diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/swapcontext.S b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/swapcontext.S new file mode 100644 index 000000000..b65aed8ff --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/swapcontext.S @@ -0,0 +1,108 @@ +/* Save current context and install the given one. + Copyright (C) 2012 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 <sysdep.h> + +#include "ucontext_i.h" + + +ENTRY(__swapcontext) + /* Load address of the context data structure we save in. */ + move.l 4(%sp), %a0 + + /* Save the preserved registers and the return address. */ + movem.l %d2-%d7, oGREGS+2*4(%a0) + movem.l %a2-%a6, oGREGS+10*4(%a0) + lea 4(%sp), %a1 + move.l %a1, oSP(%a0) + move.l (%sp), oPC(%a0) + fmovem.l %fpsr/%fpcr/%fpiar, oFPREGS(%a0) + fmovem.x %fp2-%fp7, oFP2(%a0) + cfi_def_cfa (%a0, 0) + cfi_offset (%d2, oGREGS+2*4) + cfi_offset (%d3, oGREGS+3*4) + cfi_offset (%a2, oGREGS+10*4) + cfi_offset (%pc, oPC) + + /* Load address of the context data structure we have to load. */ + move.l 8(%sp), %a1 + + /* Save the current signal mask and install the new one. */ + lea oSIGMASK(%a0), %a2 + move.l %a2, %d3 + lea oSIGMASK(%a1), %a2 + move.l %a2, %d2 + move.l #SIG_SETMASK, %d1 + move.l #__NR_sigprocmask, %d0 + trap #0 + cmp.l #-4095, %d0 /* Check %d0 for error. */ + jcs 0f + /* Restore registers. */ + move.l oGREGS+2*4(%a0), %d2 + cfi_restore (%d2) + move.l oGREGS+3*4(%a0), %d3 + cfi_restore (%d3) + move.l oGREGS+10*4(%a0), %a2 + cfi_restore (%a2) + jra SYSCALL_ERROR_LABEL /* Jump to error handler. */ + +0: /* Load the new stack pointer. */ + move.l oSP(%a1), %sp + cfi_def_cfa (%a1, 0) + cfi_offset (%d2, oGREGS+2*4) + cfi_offset (%d3, oGREGS+3*4) + cfi_offset (%d4, oGREGS+4*4) + cfi_offset (%d5, oGREGS+5*4) + cfi_offset (%d6, oGREGS+6*4) + cfi_offset (%d7, oGREGS+7*4) + cfi_offset (%a2, oGREGS+10*4) + cfi_offset (%a3, oGREGS+11*4) + cfi_offset (%a4, oGREGS+12*4) + cfi_offset (%a5, oGREGS+13*4) + cfi_offset (%a6, oGREGS+14*4) + cfi_offset (%fp2, oFP2+0*12) + cfi_offset (%fp3, oFP2+1*12) + cfi_offset (%fp4, oFP2+2*12) + cfi_offset (%fp5, oFP2+3*12) + cfi_offset (%fp6, oFP2+4*12) + cfi_offset (%fp7, oFP2+5*12) + cfi_offset (%pc, oPC) + + /* Load the values of all the preserved registers (except SP). */ + movem.l oGREGS+2*4(%a1), %d2-%d7 + movem.l oGREGS+10*4(%a1), %a2-%a6 + fmovem.l oFPREGS(%a1), %fpsr/%fpcr/%fpiar + fmovem.x oFP2(%a1), %fp2-%fp7 + + /* Clear D0 to indicate success. */ + clr.l %d0 + + /* Fetch the address to return to. */ + move.l oPC(%a1), %a0 + + /* End FDE here, we fall into another context. */ + cfi_endproc + cfi_startproc + cfi_register (%pc, %a0) + + jmp (%a0) + + cfi_offset (%pc, -4) +PSEUDO_END(__swapcontext) + +weak_alias (__swapcontext, swapcontext) diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/ucontext_i.sym b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/ucontext_i.sym new file mode 100644 index 000000000..46bd4bf15 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/ucontext_i.sym @@ -0,0 +1,20 @@ +#include <stddef.h> +#include <signal.h> +#include <sys/ucontext.h> + +-- + +SIG_SETMASK + +#define ucontext(member) offsetof (ucontext_t, member) +#define mcontext(member) ucontext (uc_mcontext.member) + +oLINK ucontext (uc_link) +oSS_SP ucontext (uc_stack.ss_sp) +oSS_SIZE ucontext (uc_stack.ss_size) +oGREGS mcontext (gregs) +oSP mcontext (gregs[R_SP]) +oPC mcontext (gregs[R_PC]) +oFPREGS mcontext (fpregs) +oFP2 mcontext (fpregs.f_fpregs[2]) +oSIGMASK ucontext (uc_sigmask) diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/m68k/nptl/c++-types.data new file mode 100644 index 000000000..fde53bf33 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/m68k/nptl/localplt.data b/libc/ports/sysdeps/unix/sysv/linux/m68k/nptl/localplt.data new file mode 100644 index 000000000..d266b8f74 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/m68k/nptl/localplt.data @@ -0,0 +1,8 @@ +libc.so: _Unwind_Find_FDE +libc.so: __m68k_read_tp +libc.so: calloc +libc.so: free +libc.so: malloc +libc.so: memalign +libc.so: realloc +libm.so: matherr diff --git a/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/c++-types.data new file mode 100644 index 000000000..fde53bf33 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist index 80f7d3321..54e8d1a94 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist @@ -2242,3 +2242,6 @@ GLIBC_2.9 pipe2 F _gp_disp _gp_disp A +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F diff --git a/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/mmap64.c b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/mmap64.c new file mode 100644 index 000000000..0dbd384a6 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/mmap64.c @@ -0,0 +1 @@ +/* mmap64 is the same as mmap. */ diff --git a/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/c++-types.data new file mode 100644 index 000000000..39212e50b --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:x +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libc.abilist index 6d64e1d23..2a0e2a2d9 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libc.abilist @@ -1390,6 +1390,9 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F GLIBC_2.2 GLIBC_2.2 A _Exit F diff --git a/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/c++-types.data new file mode 100644 index 000000000..23c11dc41 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:l +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:m +fd_mask:l +fsblkcnt64_t:m +fsblkcnt_t:m +fsfilcnt64_t:m +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:m +ino_t:m +int16_t:s +int32_t:i +int64_t:l +int8_t:a +intptr_t:l +key_t:i +loff_t:l +mode_t:j +nlink_t:m +off64_t:l +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:l +register_t:l +rlim64_t:m +rlim_t:m +sigset_t:10__sigset_t +size_t:m +socklen_t:j +ssize_t:l +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:m +u_int8_t:h +ulong:m +u_long:m +u_quad_t:m +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist index 701152eeb..0e21194ac 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist @@ -1388,6 +1388,9 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F GLIBC_2.2 GLIBC_2.2 A _Exit F diff --git a/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list index 867323a96..50d5ba319 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list +++ b/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list @@ -2,6 +2,8 @@ lseek - lseek Ci:iii __libc_lseek __lseek lseek __llseek llseek __libc_lseek64 __lseek64 lseek64 +mmap - mmap b:aniiii __mmap mmap __mmap64 mmap64 + ftruncate - ftruncate i:ii __ftruncate ftruncate ftruncate64 __ftruncate64 truncate - truncate i:si truncate truncate64 diff --git a/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data new file mode 100644 index 000000000..fde53bf33 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data new file mode 100644 index 000000000..3c64ec9d9 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data @@ -0,0 +1,13 @@ +libc.so: __signbit +libc.so: __signbitl +libc.so: abort +libc.so: calloc +libc.so: free +libc.so: malloc +libc.so: memalign +libc.so: realloc +libm.so: __signbit +libm.so: __signbitf +libm.so: __signbitl +libm.so: fegetround +libm.so: matherr diff --git a/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data new file mode 100644 index 000000000..fde53bf33 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data new file mode 100644 index 000000000..f38522386 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data @@ -0,0 +1,31 @@ +libc.so: __adddf3 +libc.so: __divdf3 +libc.so: __eqdf2 +libc.so: __extendsfdf2 +libc.so: __fixdfsi +libc.so: __fixunsdfsi +libc.so: __floatsidf +libc.so: __floatunsidf +libc.so: __gedf2 +libc.so: __gtdf2 +libc.so: __ledf2 +libc.so: __ltdf2 +libc.so: __muldf3 +libc.so: __nedf2 +libc.so: __signbit +libc.so: __signbitl +libc.so: __subdf3 +libc.so: __truncdfsf2 +libc.so: __unorddf2 +libc.so: abort +libc.so: calloc +libc.so: free +libc.so: malloc +libc.so: memalign +libc.so: realloc +libm.so: __signbit +libm.so: __signbitf +libm.so: __signbitl +libm.so: copysignl +libm.so: fegetround +libm.so: matherr diff --git a/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/c++-types.data new file mode 100644 index 000000000..fde53bf33 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:l +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist index 43015f4e9..11ad6a525 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist @@ -1772,6 +1772,9 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F GLIBC_2.2 GLIBC_2.2 A _IO_adjust_wcolumn F diff --git a/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/localplt.data b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/localplt.data new file mode 100644 index 000000000..0743b08a3 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/localplt.data @@ -0,0 +1,41 @@ +libc.so: _Unwind_Find_FDE +libc.so: __adddf3 ? +libc.so: __addsf3 ? +libc.so: __divdf3 ? +libc.so: __divsf3 ? +libc.so: __eqdf2 ? +libc.so: __eqsf2 ? +libc.so: __extendsfdf2 ? +libc.so: __fixdfsi ? +libc.so: __fixsfsi ? +libc.so: __fixunsdfsi ? +libc.so: __floatsidf ? +libc.so: __floatsisf ? +libc.so: __floatunsidf ? +libc.so: __floatunsisf ? +libc.so: __gedf2 ? +libc.so: __gtdf2 ? +libc.so: __ledf2 ? +libc.so: __ltdf2 ? +libc.so: __muldf3 ? +libc.so: __mulsf3 ? +libc.so: __nedf2 ? +libc.so: __signbit +libc.so: __signbitl +libc.so: __subdf3 ? +libc.so: __subsf3 ? +libc.so: __truncdfsf2 ? +libc.so: __unorddf2 ? +libc.so: abort ? +libc.so: calloc +libc.so: free +libc.so: malloc +libc.so: memalign +libc.so: realloc +libm.so: __signbit +libm.so: __signbitf +libm.so: __signbitl +libm.so: copysignl +libm.so: fabsl +libm.so: fegetround +libm.so: matherr diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h b/libc/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h index 44ffcc04d..6fa354a78 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/bits/siginfo.h @@ -104,6 +104,14 @@ typedef struct long int si_band; /* Band event for SIGPOLL. */ int si_fd; } _sigpoll; + + /* SIGSYS. */ + struct + { + void *_call_addr; /* Calling user insn. */ + int _syscall; /* Triggering system call number. */ + unsigned int _arch; /* AUDIT_ARCH_* of syscall. */ + } _sigsys; } _sifields; } siginfo_t; @@ -123,6 +131,9 @@ typedef struct # define si_trapno _sifields._sigfault.si_trapno # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd +# define si_call_addr _sifields._sigsys._call_addr +# define si_syscall _sifields._sigsys._syscall +# define si_arch _sifields._sigsys._arch /* Values for `si_code'. Positive values are reserved for kernel-generated diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/makecontext.c b/libc/ports/sysdeps/unix/sysv/linux/tile/makecontext.c index e3f66bccb..d7584e072 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/tile/makecontext.c +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/makecontext.c @@ -61,7 +61,7 @@ __makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) /* Set the return address to trampoline. */ ucp->uc_mcontext.lr = (long) __startcontext; - /* Pass ucp->uc_link to __start_context in r30. */ + /* Pass ucp->uc_link to __startcontext in r30. */ ucp->uc_mcontext.gregs[30] = (long) ucp->uc_link; } weak_alias (__makecontext, makecontext) diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/setcontext.S b/libc/ports/sysdeps/unix/sysv/linux/tile/setcontext.S index f95ad7cca..587097e90 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/tile/setcontext.S +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/setcontext.S @@ -196,6 +196,9 @@ ENTRY (__startcontext) move r0, r30 jal __setcontext } -1: j HIDDEN_JUMPTARGET(exit) +1: { + movei r0, 0 + j HIDDEN_JUMPTARGET(exit) + } END (__startcontext) .hidden __startcontext diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/sys/ptrace.h b/libc/ports/sysdeps/unix/sysv/linux/tile/sys/ptrace.h index 702f19e41..820d94cda 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/tile/sys/ptrace.h +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/sys/ptrace.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2011 Free Software Foundation, Inc. +/* Copyright (C) 2011-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011. @@ -107,7 +107,8 @@ enum __ptrace_request /* Options set using PTRACE_SETOPTIONS. */ -enum __ptrace_setoptions { +enum __ptrace_setoptions +{ PTRACE_O_TRACESYSGOOD = 0x00000001, PTRACE_O_TRACEFORK = 0x00000002, PTRACE_O_TRACEVFORK = 0x00000004, @@ -115,17 +116,20 @@ enum __ptrace_setoptions { PTRACE_O_TRACEEXEC = 0x00000010, PTRACE_O_TRACEVFORKDONE = 0x00000020, PTRACE_O_TRACEEXIT = 0x00000040, - PTRACE_O_MASK = 0x0000007f + PTRACE_O_TRACESECCOMP = 0x00000080, + PTRACE_O_MASK = 0x000000ff }; /* Wait extended result codes for the above trace options. */ -enum __ptrace_eventcodes { +enum __ptrace_eventcodes +{ PTRACE_EVENT_FORK = 1, PTRACE_EVENT_VFORK = 2, PTRACE_EVENT_CLONE = 3, PTRACE_EVENT_EXEC = 4, PTRACE_EVENT_VFORK_DONE = 5, - PTRACE_EVENT_EXIT = 6 + PTRACE_EVENT_EXIT = 6, + PTRACE_EVENT_SECCOMP = 7 }; /* Perform process tracing functions. REQUEST is one of the values diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data new file mode 100644 index 000000000..1a7bcb38d --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:i +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:x +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist index eed3b4937..48f0c69eb 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist @@ -2080,3 +2080,6 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data new file mode 100644 index 000000000..ac925ccb3 --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:l +blkcnt_t:l +blksize_t:i +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:m +fd_mask:l +fsblkcnt64_t:m +fsblkcnt_t:m +fsfilcnt64_t:m +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:m +ino_t:m +int16_t:s +int32_t:i +int64_t:l +int8_t:a +intptr_t:l +key_t:i +loff_t:l +mode_t:j +nlink_t:j +off64_t:l +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:l +register_t:l +rlim64_t:m +rlim_t:m +sigset_t:10__sigset_t +size_t:m +socklen_t:j +ssize_t:l +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:m +u_int8_t:h +ulong:m +u_long:m +u_quad_t:m +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist index 2dbce23ec..3aa70a100 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist @@ -2080,3 +2080,6 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data b/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data new file mode 100644 index 000000000..303f4570c --- /dev/null +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:i +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist b/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist index eed3b4937..48f0c69eb 100644 --- a/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist +++ b/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist @@ -2080,3 +2080,6 @@ GLIBC_2.16 mbrtoc16 F mbrtoc32 F timespec_get F +GLIBC_2.17 + GLIBC_2.17 A + secure_getenv F |