From 978560d2d59061c18105088eefd568c7a5ac3b4b Mon Sep 17 00:00:00 2001 From: joseph Date: Wed, 30 May 2012 19:53:28 +0000 Subject: Merge changes between r18761 and r18832 from /fsf/trunk. git-svn-id: svn://svn.eglibc.org/trunk@18833 7b3dc134-2b1b-0410-93df-9e9f96275f8d --- libc/sysdeps/powerpc/powerpc32/dl-irel.h | 1 + libc/sysdeps/sh/_mcount.S | 11 +- libc/sysdeps/sh/sh4/fpu/fclrexcpt.c | 4 +- libc/sysdeps/sh/sh4/fpu/fedisblxcpt.c | 2 +- libc/sysdeps/sh/sh4/fpu/feenablxcpt.c | 2 +- libc/sysdeps/sh/sh4/fpu/fegetenv.c | 2 +- libc/sysdeps/sh/sh4/fpu/fegetexcept.c | 2 +- libc/sysdeps/sh/sh4/fpu/fegetround.c | 4 +- libc/sysdeps/sh/sh4/fpu/feholdexcpt.c | 5 +- libc/sysdeps/sh/sh4/fpu/fesetenv.c | 4 +- libc/sysdeps/sh/sh4/fpu/fesetround.c | 2 +- libc/sysdeps/sh/sh4/fpu/feupdateenv.c | 2 +- libc/sysdeps/sh/sh4/fpu/fraiseexcpt.c | 8 + libc/sysdeps/sh/sh4/fpu/fsetexcptflg.c | 4 +- libc/sysdeps/sh/sh4/fpu/ftestexcept.c | 4 +- libc/sysdeps/sparc/sparc32/soft-fp/q_util.c | 49 ++---- libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h | 16 +- libc/sysdeps/sparc/sparc64/soft-fp/Versions | 2 +- libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c | 49 ++---- libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h | 16 +- libc/sysdeps/unix/make-syscalls.sh | 6 + libc/sysdeps/unix/sh/sysdep.S | 13 +- libc/sysdeps/unix/sysv/linux/Makefile | 53 +++--- libc/sysdeps/unix/sysv/linux/ftruncate64.c | 52 +----- libc/sysdeps/unix/sysv/linux/i386/Implies | 1 + libc/sysdeps/unix/sysv/linux/i386/Makefile | 3 + libc/sysdeps/unix/sysv/linux/kernel-features.h | 14 +- libc/sysdeps/unix/sysv/linux/powerpc/Makefile | 11 +- .../sysv/linux/powerpc/powerpc32/ftruncate64.c | 51 +----- .../unix/sysv/linux/powerpc/powerpc32/truncate64.c | 53 +----- libc/sysdeps/unix/sysv/linux/s390/Makefile | 11 +- .../unix/sysv/linux/s390/s390-32/nptl/ld.abilist | 1 + .../unix/sysv/linux/s390/s390-32/nptl/libc.abilist | 196 ++++++++++++++++++++- .../unix/sysv/linux/s390/s390-32/nptl/libm.abilist | 104 +++++++++++ .../linux/s390/s390-32/nptl/libpthread.abilist | 17 ++ .../sysv/linux/s390/s390-32/nptl/librt.abilist | 7 - .../sysv/linux/s390/s390-32/nptl/libutil.abilist | 3 + .../unix/sysv/linux/s390/s390-64/nptl/ld.abilist | 1 + .../unix/sysv/linux/s390/s390-64/nptl/libc.abilist | 177 ++++++++++++++++++- .../unix/sysv/linux/s390/s390-64/nptl/libm.abilist | 104 +++++++++++ .../linux/s390/s390-64/nptl/libpthread.abilist | 17 ++ libc/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S | 3 +- libc/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S | 3 +- libc/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S | 1 + libc/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S | 1 + libc/sysdeps/unix/sysv/linux/sparc/Makefile | 10 +- .../sysv/linux/sparc/sparc64/nptl/libc.abilist | 1 - libc/sysdeps/unix/sysv/linux/truncate64.c | 51 +----- libc/sysdeps/unix/sysv/linux/x86/Makefile | 14 ++ libc/sysdeps/unix/sysv/linux/x86_64/64/Makefile | 2 + libc/sysdeps/unix/sysv/linux/x86_64/Implies | 1 + libc/sysdeps/unix/sysv/linux/x86_64/Makefile | 6 - .../unix/sysv/linux/x86_64/bits/typesizes.h | 6 +- libc/sysdeps/unix/sysv/linux/x86_64/x32/Makefile | 3 + libc/sysdeps/x86_64/64/shlib-versions | 1 - libc/sysdeps/x86_64/x32/shlib-versions | 1 - 56 files changed, 820 insertions(+), 368 deletions(-) create mode 100644 libc/sysdeps/unix/sysv/linux/i386/Implies create mode 100644 libc/sysdeps/unix/sysv/linux/x86/Makefile create mode 100644 libc/sysdeps/unix/sysv/linux/x86_64/64/Makefile (limited to 'libc/sysdeps') diff --git a/libc/sysdeps/powerpc/powerpc32/dl-irel.h b/libc/sysdeps/powerpc/powerpc32/dl-irel.h index ebaf44a1e..7504b0819 100644 --- a/libc/sysdeps/powerpc/powerpc32/dl-irel.h +++ b/libc/sysdeps/powerpc/powerpc32/dl-irel.h @@ -22,6 +22,7 @@ #include #include +#include #define ELF_MACHINE_IRELA 1 diff --git a/libc/sysdeps/sh/_mcount.S b/libc/sysdeps/sh/_mcount.S index 7956c0125..7e3d50e94 100644 --- a/libc/sysdeps/sh/_mcount.S +++ b/libc/sysdeps/sh/_mcount.S @@ -1,5 +1,5 @@ /* Machine-specific calling sequence for `mcount' profiling function. SuperH - Copyright (C) 2001, 2005 Free Software Foundation, Inc. + Copyright (C) 2001-2012 Free Software Foundation, Inc. Contributed by NIIBE Yutaka This file is part of the GNU C Library. @@ -58,11 +58,20 @@ C_LABEL(_mcount) /* Pop the saved registers. */ lds.l @r15+,pr + cfi_adjust_cfa_offset (-4) + cfi_restore (pr) mov.l @r15+,r7 + cfi_adjust_cfa_offset (-4) + cfi_restore (r7) mov.l @r15+,r6 + cfi_adjust_cfa_offset (-4) + cfi_restore (r6) mov.l @r15+,r5 + cfi_adjust_cfa_offset (-4) + cfi_restore (r5) rts mov.l @r15+,r4 + /* Omit CFI for restore in delay slot. */ .align 2 #ifdef SHARED diff --git a/libc/sysdeps/sh/sh4/fpu/fclrexcpt.c b/libc/sysdeps/sh/sh4/fpu/fclrexcpt.c index c2df162fe..b4b2ead02 100644 --- a/libc/sysdeps/sh/sh4/fpu/fclrexcpt.c +++ b/libc/sysdeps/sh/sh4/fpu/fclrexcpt.c @@ -1,5 +1,5 @@ /* Clear given exceptions in current floating-point environment. - Copyright (C) 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1998-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1998. @@ -23,7 +23,7 @@ int feclearexcept (int excepts) { - int cw; + fpu_control_t cw; /* Mask out unsupported bits/exceptions. */ excepts &= FE_ALL_EXCEPT; diff --git a/libc/sysdeps/sh/sh4/fpu/fedisblxcpt.c b/libc/sysdeps/sh/sh4/fpu/fedisblxcpt.c index 029fcc386..b2938bae6 100644 --- a/libc/sysdeps/sh/sh4/fpu/fedisblxcpt.c +++ b/libc/sysdeps/sh/sh4/fpu/fedisblxcpt.c @@ -23,7 +23,7 @@ int fedisableexcept (int excepts) { - unsigned int temp, old_exc; + fpu_control_t temp, old_exc; /* Get the current control register contents. */ _FPU_GETCW (temp); diff --git a/libc/sysdeps/sh/sh4/fpu/feenablxcpt.c b/libc/sysdeps/sh/sh4/fpu/feenablxcpt.c index 93fa7498e..6d92c12bf 100644 --- a/libc/sysdeps/sh/sh4/fpu/feenablxcpt.c +++ b/libc/sysdeps/sh/sh4/fpu/feenablxcpt.c @@ -23,7 +23,7 @@ int feenableexcept (int excepts) { - unsigned int temp, old_flag; + fpu_control_t temp, old_flag; /* Get current exceptions. */ _FPU_GETCW (temp); diff --git a/libc/sysdeps/sh/sh4/fpu/fegetenv.c b/libc/sysdeps/sh/sh4/fpu/fegetenv.c index 3103316e3..ca7de1628 100644 --- a/libc/sysdeps/sh/sh4/fpu/fegetenv.c +++ b/libc/sysdeps/sh/sh4/fpu/fegetenv.c @@ -22,7 +22,7 @@ int fegetenv (fenv_t *envp) { - unsigned long int temp; + fpu_control_t temp; _FPU_GETCW (temp); /* When read fpscr, this was initialized. We need to rewrite value of temp. */ diff --git a/libc/sysdeps/sh/sh4/fpu/fegetexcept.c b/libc/sysdeps/sh/sh4/fpu/fegetexcept.c index a849a1775..a2faaac33 100644 --- a/libc/sysdeps/sh/sh4/fpu/fegetexcept.c +++ b/libc/sysdeps/sh/sh4/fpu/fegetexcept.c @@ -23,7 +23,7 @@ int fegetexcept (void) { - unsigned int temp; + fpu_control_t temp; /* Get current exceptions. */ _FPU_GETCW (temp); diff --git a/libc/sysdeps/sh/sh4/fpu/fegetround.c b/libc/sysdeps/sh/sh4/fpu/fegetround.c index 9108e9744..736838311 100644 --- a/libc/sysdeps/sh/sh4/fpu/fegetround.c +++ b/libc/sysdeps/sh/sh4/fpu/fegetround.c @@ -1,5 +1,5 @@ /* Return current rounding direction. - Copyright (C) 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1998-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1998. @@ -23,7 +23,7 @@ int fegetround (void) { - int cw; + fpu_control_t cw; /* Get control word. */ _FPU_GETCW (cw); diff --git a/libc/sysdeps/sh/sh4/fpu/feholdexcpt.c b/libc/sysdeps/sh/sh4/fpu/feholdexcpt.c index 2b6b9bdc8..40a58e128 100644 --- a/libc/sysdeps/sh/sh4/fpu/feholdexcpt.c +++ b/libc/sysdeps/sh/sh4/fpu/feholdexcpt.c @@ -1,6 +1,5 @@ /* Store current floating-point environment and clear exceptions. - Copyright (C) 1997, 1998, 1999, 2000, 2005, 2010 - Free Software Foundation, Inc. + Copyright (C) 1997-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 @@ -23,7 +22,7 @@ int feholdexcept (fenv_t *envp) { - unsigned long int temp; + fpu_control_t temp; /* Store the environment. */ _FPU_GETCW (temp); diff --git a/libc/sysdeps/sh/sh4/fpu/fesetenv.c b/libc/sysdeps/sh/sh4/fpu/fesetenv.c index 34d3461fc..55fd1f66b 100644 --- a/libc/sysdeps/sh/sh4/fpu/fesetenv.c +++ b/libc/sysdeps/sh/sh4/fpu/fesetenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment. - Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1997-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 @@ -26,7 +26,7 @@ fesetenv (const fenv_t *envp) _FPU_SETCW (_FPU_DEFAULT); else { - unsigned long int temp = envp->__fpscr; + fpu_control_t temp = envp->__fpscr; _FPU_SETCW (temp); } return 0; diff --git a/libc/sysdeps/sh/sh4/fpu/fesetround.c b/libc/sysdeps/sh/sh4/fpu/fesetround.c index 3269199ea..4edf9c5d8 100644 --- a/libc/sysdeps/sh/sh4/fpu/fesetround.c +++ b/libc/sysdeps/sh/sh4/fpu/fesetround.c @@ -23,7 +23,7 @@ int fesetround (int round) { - unsigned int cw; + fpu_control_t cw; if ((round & ~0x3) != 0) /* ROUND is no valid rounding mode. */ diff --git a/libc/sysdeps/sh/sh4/fpu/feupdateenv.c b/libc/sysdeps/sh/sh4/fpu/feupdateenv.c index 96a697914..41fb8a506 100644 --- a/libc/sysdeps/sh/sh4/fpu/feupdateenv.c +++ b/libc/sysdeps/sh/sh4/fpu/feupdateenv.c @@ -23,7 +23,7 @@ int feupdateenv (const fenv_t *envp) { - unsigned int temp; + fpu_control_t temp; _FPU_GETCW (temp); temp = (temp & FE_ALL_EXCEPT); diff --git a/libc/sysdeps/sh/sh4/fpu/fraiseexcpt.c b/libc/sysdeps/sh/sh4/fpu/fraiseexcpt.c index a555b1088..729e8bf3e 100644 --- a/libc/sysdeps/sh/sh4/fpu/fraiseexcpt.c +++ b/libc/sysdeps/sh/sh4/fpu/fraiseexcpt.c @@ -60,6 +60,14 @@ feraiseexcept (int excepts) __asm__ __volatile__ ("fmul %1, %0" : "+d" (d) : "d" (x)); } + { + /* Restore flag fields. */ + fpu_control_t cw; + _FPU_GETCW (cw); + cw |= (excepts & FE_ALL_EXCEPT); + _FPU_SETCW (cw); + } + return 0; } libm_hidden_def (feraiseexcept) diff --git a/libc/sysdeps/sh/sh4/fpu/fsetexcptflg.c b/libc/sysdeps/sh/sh4/fpu/fsetexcptflg.c index 40cd5ea38..ffed4b16c 100644 --- a/libc/sysdeps/sh/sh4/fpu/fsetexcptflg.c +++ b/libc/sysdeps/sh/sh4/fpu/fsetexcptflg.c @@ -1,5 +1,5 @@ /* Set floating-point environment exception handling. - Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-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 @@ -23,7 +23,7 @@ int fesetexceptflag (const fexcept_t *flagp, int excepts) { - fexcept_t temp; + fpu_control_t temp; /* Get the current environment. */ _FPU_GETCW (temp); diff --git a/libc/sysdeps/sh/sh4/fpu/ftestexcept.c b/libc/sysdeps/sh/sh4/fpu/ftestexcept.c index c2e1772a9..c61af4ce0 100644 --- a/libc/sysdeps/sh/sh4/fpu/ftestexcept.c +++ b/libc/sysdeps/sh/sh4/fpu/ftestexcept.c @@ -1,5 +1,5 @@ /* Test exception in current environment. - Copyright (C) 1997, 1998, 2000, 2010 Free Software Foundation, Inc. + Copyright (C) 1997-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 @@ -22,7 +22,7 @@ int fetestexcept (int excepts) { - fexcept_t temp; + fpu_control_t temp; /* Get current exceptions. */ _FPU_GETCW (temp); diff --git a/libc/sysdeps/sparc/sparc32/soft-fp/q_util.c b/libc/sysdeps/sparc/sparc32/soft-fp/q_util.c index 22f70ba46..c4efc10bf 100644 --- a/libc/sysdeps/sparc/sparc32/soft-fp/q_util.c +++ b/libc/sysdeps/sparc/sparc32/soft-fp/q_util.c @@ -1,7 +1,7 @@ /* Software floating-point emulation. Helper routine for _Q_* routines. Simulate exceptions using double arithmetics. - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek (jj@ultra.linux.cz). @@ -21,36 +21,23 @@ #include "soft-fp.h" -unsigned long long ___Q_numbers [] = { -0x0000000000000000ULL, /* Zero */ -0x0010100000000000ULL, /* Very tiny number */ -0x0010000000000000ULL, /* Minimum normalized number */ -0x7fef000000000000ULL, /* A huge double number */ -}; +unsigned long long ___Q_zero = 0x0000000000000000ULL; -double ___Q_simulate_exceptions(int exceptions) +void ___Q_simulate_exceptions(int exceptions) { - double d, *p = (double *)___Q_numbers; - if (exceptions & FP_EX_INVALID) - d = p[0]/p[0]; - if (exceptions & FP_EX_OVERFLOW) - { - d = p[3] + p[3]; - exceptions &= ~FP_EX_INEXACT; - } - if (exceptions & FP_EX_UNDERFLOW) - { - if (exceptions & FP_EX_INEXACT) - { - d = p[2] * p[2]; - exceptions &= ~FP_EX_INEXACT; - } - else - d = p[1] - p[2]; - } - if (exceptions & FP_EX_DIVZERO) - d = 1.0/p[0]; - if (exceptions & FP_EX_INEXACT) - d = p[3] - p[2]; - return d; + fpu_control_t fcw; + int tem, ou; + + _FPU_GETCW(fcw); + + tem = (fcw >> 23) & 0x1f; + + ou = exceptions & (FP_EX_OVERFLOW | FP_EX_UNDERFLOW); + if (ou & tem) + exceptions &= ~FP_EX_INVALID; + + fcw &= ~0x1f; + fcw |= (exceptions | (exceptions << 5)); + + _FPU_SETCW(fcw); } diff --git a/libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h b/libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h index 8cdc7c267..4314082f7 100644 --- a/libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h +++ b/libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h @@ -184,15 +184,18 @@ #define FP_EX_DIVZERO (1 << 1) #define FP_EX_INEXACT (1 << 0) -#define _FP_DECL_EX fpu_control_t _fcw +#define _FP_DECL_EX \ + fpu_control_t _fcw __attribute__ ((unused)) = (FP_RND_NEAREST << 30) #define FP_INIT_ROUNDMODE \ do { \ _FPU_GETCW(_fcw); \ } while (0) +#define FP_INHIBIT_RESULTS ((_fcw >> 23) & _fex) + /* Simulate exceptions using double arithmetics. */ -extern double ___Q_simulate_exceptions(int exc); +extern void ___Q_simulate_exceptions(int exc); #define FP_HANDLE_EXCEPTIONS \ do { \ @@ -201,11 +204,10 @@ do { \ /* This is the common case, so we do it inline. \ * We need to clear cexc bits if any. \ */ \ - extern unsigned long long ___Q_numbers[]; \ - __asm__ __volatile__("\ - ldd [%0], %%f30\n\ - faddd %%f30, %%f30, %%f30\ - " : : "r" (___Q_numbers) : "f30"); \ + extern unsigned long long ___Q_zero; \ + __asm__ __volatile__("ldd [%0], %%f30\n\t" \ + "faddd %%f30, %%f30, %%f30" \ + : : "r" (&___Q_zero) : "f30"); \ } \ else \ ___Q_simulate_exceptions (_fex); \ diff --git a/libc/sysdeps/sparc/sparc64/soft-fp/Versions b/libc/sysdeps/sparc/sparc64/soft-fp/Versions index 440482752..9e89c3c3e 100644 --- a/libc/sysdeps/sparc/sparc64/soft-fp/Versions +++ b/libc/sysdeps/sparc/sparc64/soft-fp/Versions @@ -3,6 +3,6 @@ libc { _Qp_add; _Qp_cmp; _Qp_cmpe; _Qp_div; _Qp_dtoq; _Qp_feq; _Qp_fge; _Qp_fgt; _Qp_fle; _Qp_flt; _Qp_fne; _Qp_itoq; _Qp_mul; _Qp_neg; _Qp_qtod; _Qp_qtoi; _Qp_qtos; _Qp_qtoui; _Qp_qtoux; _Qp_qtox; _Qp_sqrt; _Qp_stoq; _Qp_sub; - _Qp_uitoq; _Qp_uxtoq; _Qp_xtoq; __Qp_handle_exceptions; + _Qp_uitoq; _Qp_uxtoq; _Qp_xtoq; } } diff --git a/libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c b/libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c index fd3043bb8..358d0e4ec 100644 --- a/libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c +++ b/libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c @@ -1,7 +1,7 @@ /* Software floating-point emulation. Helper routine for _Qp_* routines. Simulate exceptions using double arithmetics. - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek (jj@ultra.linux.cz). @@ -21,36 +21,21 @@ #include "soft-fp.h" -static unsigned long numbers [] = { -0x7fef000000000000UL, /* A huge double number */ -0x0010100000000000UL, /* Very tiny number */ -0x0010000000000000UL, /* Minimum normalized number */ -0x0000000000000000UL, /* Zero */ -}; - -double __Qp_handle_exceptions(int exceptions) +void __Qp_handle_exceptions(int exceptions) { - double d, *p = (double *)numbers; - if (exceptions & FP_EX_INVALID) - d = p[3]/p[3]; - if (exceptions & FP_EX_OVERFLOW) - { - d = p[0] + p[0]; - exceptions &= ~FP_EX_INEXACT; - } - if (exceptions & FP_EX_UNDERFLOW) - { - if (exceptions & FP_EX_INEXACT) - { - d = p[2] * p[2]; - exceptions &= ~FP_EX_INEXACT; - } - else - d = p[1] - p[2]; - } - if (exceptions & FP_EX_DIVZERO) - d = 1.0/p[3]; - if (exceptions & FP_EX_INEXACT) - d = p[0] - p[2]; - return d; + fpu_control_t fcw; + int tem, ou; + + _FPU_GETCW(fcw); + + tem = (fcw >> 23) & 0x1f; + + ou = exceptions & (FP_EX_OVERFLOW | FP_EX_UNDERFLOW); + if (ou & tem) + exceptions &= ~FP_EX_INVALID; + + fcw &= ~0x1f; + fcw |= (exceptions | (exceptions << 5)); + + _FPU_SETCW(fcw); } diff --git a/libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h b/libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h index 7ec804da5..36f92d64f 100644 --- a/libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h +++ b/libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h @@ -92,7 +92,8 @@ do { \ #define FP_EX_DIVZERO (1 << 1) #define FP_EX_INEXACT (1 << 0) -#define _FP_DECL_EX fpu_control_t _fcw +#define _FP_DECL_EX \ + fpu_control_t _fcw __attribute__ ((unused)) = (FP_RND_NEAREST << 30) #define FP_INIT_ROUNDMODE \ do { \ @@ -102,7 +103,7 @@ do { \ #define FP_INHIBIT_RESULTS ((_fcw >> 23) & _fex) /* Simulate exceptions using double arithmetics. */ -extern double __Qp_handle_exceptions(int exc); +extern void __Qp_handle_exceptions(int exc); #define FP_HANDLE_EXCEPTIONS \ do { \ @@ -111,10 +112,9 @@ do { \ /* This is the common case, so we do it inline. \ * We need to clear cexc bits if any. \ */ \ - __asm__ __volatile__("\n" \ -" fzero %%f62\n" \ -" faddd %%f62, %%f62, %%f62\n" \ -" " : : : "f62"); \ + __asm__ __volatile__("fzero %%f62\n\t" \ + "faddd %%f62, %%f62, %%f62" \ + : : : "f62"); \ } \ else \ { \ @@ -136,8 +136,8 @@ do { \ } while (0) #define QP_NO_EXCEPTIONS \ - __asm ("fzero %%f62\n" \ -" faddd %%f62, %%f62, %%f62" : : : "f62") + __asm ("fzero %%f62\n\t" \ + "faddd %%f62, %%f62, %%f62" : : : "f62") #define QP_CLOBBER "memory", "f52", "f54", "f56", "f58", "f60", "f62" #define QP_CLOBBER_CC QP_CLOBBER , "cc" diff --git a/libc/sysdeps/unix/make-syscalls.sh b/libc/sysdeps/unix/make-syscalls.sh index cedce3193..2bc7cc02a 100644 --- a/libc/sysdeps/unix/make-syscalls.sh +++ b/libc/sysdeps/unix/make-syscalls.sh @@ -76,6 +76,7 @@ emit_weak_aliases() *@@*) base=`echo $name | sed 's/@@.*//'` ver=`echo $name | sed 's/.*@@//'` + echo " echo '#ifndef NOT_IN_libc'; \\" if test -z "$vcount" ; then source=$strong vcount=1 @@ -85,10 +86,14 @@ emit_weak_aliases() echo " echo 'strong_alias ($strong, $source)'; \\" fi echo " echo 'default_symbol_version($source, $base, $ver)'; \\" + echo " echo '#else'; \\" + echo " echo 'strong_alias ($strong, $base)'; \\" + echo " echo '#endif'; \\" ;; *@*) base=`echo $name | sed 's/@.*//'` ver=`echo $name | sed 's/.*@//'` + echo " echo '#ifndef NOT_IN_libc'; \\" if test -z "$vcount" ; then source=$strong vcount=1 @@ -98,6 +103,7 @@ emit_weak_aliases() echo " echo 'strong_alias ($strong, $source)'; \\" fi echo " echo 'symbol_version ($source, $base, $ver)'; \\" + echo " echo '#endif'; \\" ;; !*) name=`echo $name | sed 's/.//'` diff --git a/libc/sysdeps/unix/sh/sysdep.S b/libc/sysdeps/unix/sh/sysdep.S index e816575b0..f8025cc70 100644 --- a/libc/sysdeps/unix/sh/sysdep.S +++ b/libc/sysdeps/unix/sh/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000, 2005 Free Software Foundation, Inc. +/* Copyright (C) 1999-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 @@ -41,13 +41,15 @@ skip: sts.l pr, @-r15 cfi_adjust_cfa_offset (4) cfi_rel_offset (pr, 0) - jsr @r1 - mov.l r0, @-r15 + mov.l r0, @-r15 cfi_adjust_cfa_offset (4) + jsr @r1 + nop mov.l @r15+, r1 cfi_adjust_cfa_offset (-4) lds.l @r15+, pr cfi_adjust_cfa_offset (-4) + cfi_restore (pr) mov.l r1, @r0 #endif #else @@ -77,10 +79,15 @@ skip: jsr @r1 nop lds.l @r15+, pr + cfi_adjust_cfa_offset (-4) + cfi_restore (pr) mov.l @r15+, r1 + cfi_adjust_cfa_offset (-4) mov.l r1, @r0 #endif mov.l @r15+, r12 + cfi_adjust_cfa_offset (-4) + cfi_restore (r12) #endif /* And just kick back a -1. */ rts diff --git a/libc/sysdeps/unix/sysv/linux/Makefile b/libc/sysdeps/unix/sysv/linux/Makefile index 70fd137db..21b560790 100644 --- a/libc/sysdeps/unix/sysv/linux/Makefile +++ b/libc/sysdeps/unix/sysv/linux/Makefile @@ -43,25 +43,14 @@ tests += tst-clone # Generate the list of SYS_* macros for the system calls (__NR_* macros). # If there is more than one syscall list for different architecture -# variants, the CPU/Makefile defines syscall-list-variants to be a -# list of names for those variants (e.g. 32bit 64bit), and, for each -# variant, defines syscall-list-$(variant)-options to be compiler -# options to cause to define the desired list of -# syscalls and syscall-list-$(variant)-condition to be the condition -# for those options to use in a C #if condition. -# syscall-list-includes may be defined to a list of headers to include +# variants, the CPU/Makefile defines abi-variants to be a list of names +# for those variants (e.g. 32 64), and, for each variant, defines +# abi-$(variant)-options to be compiler options to cause +# to define the desired list of syscalls and abi-$(variant)-condition to +# be the condition for those options to use in a C #if condition. +# abi-includes may be defined to a list of headers to include # in the generated header, if the default does not suffice. -ifndef syscall-list-variants -syscall-list-variants := default -syscall-list-default-options := -syscall-list-default-condition := -endif - -ifndef syscall-list-includes -syscall-list-includes := bits/wordsize.h -endif - $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/syscall.h $(make-target-directory) { \ @@ -71,31 +60,41 @@ $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/ echo '# error "Never use directly; include instead."'; \ echo '#endif'; \ echo ''; \ - $(foreach h,$(syscall-list-includes), echo '#include <$(h)>';) \ + $(foreach h,$(abi-includes), echo '#include <$(h)>';) \ echo ''; \ - $(foreach v,$(syscall-list-variants),\ + $(if $(abi-variants), \ + $(foreach v,$(abi-variants),\ $(CC) -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \ - -x c $(sysincludes) $< $(syscall-list-$(v)-options) \ + -x c $(sysincludes) $< $(abi-$(v)-options) \ -D_LIBC -dM | \ sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \ LC_ALL=C sort > $(@:.d=.h).new$(v); \ - $(if $(syscall-list-$(v)-condition),\ - echo '#if $(syscall-list-$(v)-condition)';) \ + $(if $(abi-$(v)-condition),\ + echo '#if $(abi-$(v)-condition)';) \ cat $(@:.d=.h).new$(v); \ - $(if $(syscall-list-$(v)-condition),echo '#endif';) \ + $(if $(abi-$(v)-condition),echo '#endif';) \ rm -f $(@:.d=.h).new$(v); \ - ) \ + ), \ + $(CC) -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \ + -x c $(sysincludes) $< \ + -D_LIBC -dM | \ + sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \ + LC_ALL=C sort;) \ } > $(@:.d=.h).new mv -f $(@:.d=.h).new $(@:.d=.h) +ifdef abi-variants ifneq (,$(objpfx)) sed $(sed-remove-objpfx) \ - $(foreach v,$(syscall-list-variants),$(@:.h=.d)-t$(v)) > $(@:.h=.d)-t3 + $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v)) > $(@:.h=.d)-t3 else - cat $(foreach v,$(syscall-list-variants),$(@:.h=.d)-t$(v)) \ + cat $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v)) \ > $(@:.h=.d)-t3 endif - rm -f $(foreach v,$(syscall-list-variants),$(@:.h=.d)-t$(v)) + rm -f $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v)) mv -f $(@:.h=.d)-t3 $(@:.h=.d) +else + mv -f $(@:.h=.d)-t $(@:.h=.d) +endif ifndef no_deps # Get the generated list of dependencies (probably /usr/include/asm/unistd.h). diff --git a/libc/sysdeps/unix/sysv/linux/ftruncate64.c b/libc/sysdeps/unix/sysv/linux/ftruncate64.c index 719f02592..af05a4bbb 100644 --- a/libc/sysdeps/unix/sysv/linux/ftruncate64.c +++ b/libc/sysdeps/unix/sysv/linux/ftruncate64.c @@ -1,5 +1,4 @@ -/* Copyright (C) 1997,1998,1999,2000,2001,2003,2005,2006,2011 - Free Software Foundation, Inc. +/* Copyright (C) 1997-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 @@ -24,53 +23,14 @@ #include #include -#include - -#ifdef __NR_ftruncate64 -#ifndef __ASSUME_TRUNCATE64_SYSCALL -/* The variable is shared between all wrappers around *truncate64 calls. */ -extern int __have_no_truncate64; -#endif - - /* Truncate the file referenced by FD to LENGTH bytes. */ int __ftruncate64 (int fd, off64_t length) { -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if (! __have_no_truncate64) -#endif - { - unsigned int low = length & 0xffffffff; - unsigned int high = length >> 32; -#ifndef __ASSUME_TRUNCATE64_SYSCALL - int saved_errno = errno; -#endif - int result = INLINE_SYSCALL (ftruncate64, 3, fd, - __LONG_LONG_PAIR (high, low)); -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if (result != -1 || errno != ENOSYS) -#endif - return result; - -#ifndef __ASSUME_TRUNCATE64_SYSCALL - __set_errno (saved_errno); - __have_no_truncate64 = 1; -#endif - } - -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if ((off_t) length != length) - { - __set_errno (EINVAL); - return -1; - } - return __ftruncate (fd, (off_t) length); -#endif + unsigned int low = length & 0xffffffff; + unsigned int high = length >> 32; + int result = INLINE_SYSCALL (ftruncate64, 3, fd, + __LONG_LONG_PAIR (high, low)); + return result; } weak_alias (__ftruncate64, ftruncate64) - -#else -/* Use the generic implementation. */ -# include -#endif diff --git a/libc/sysdeps/unix/sysv/linux/i386/Implies b/libc/sysdeps/unix/sysv/linux/i386/Implies new file mode 100644 index 000000000..ccc7eaa8a --- /dev/null +++ b/libc/sysdeps/unix/sysv/linux/i386/Implies @@ -0,0 +1 @@ +unix/sysv/linux/x86 diff --git a/libc/sysdeps/unix/sysv/linux/i386/Makefile b/libc/sysdeps/unix/sysv/linux/i386/Makefile index fc5a524eb..f4585d788 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/Makefile +++ b/libc/sysdeps/unix/sysv/linux/i386/Makefile @@ -1,3 +1,6 @@ +# The default ABI is 32. +default-abi := 32 + ifeq ($(subdir),misc) sysdep_routines += ioperm iopl vm86 call_pselect6 call_fallocate sysdep_headers += sys/elf.h sys/perm.h sys/reg.h sys/vm86.h sys/debugreg.h sys/io.h diff --git a/libc/sysdeps/unix/sysv/linux/kernel-features.h b/libc/sysdeps/unix/sysv/linux/kernel-features.h index 0ea453d99..4d333e81e 100644 --- a/libc/sysdeps/unix/sysv/linux/kernel-features.h +++ b/libc/sysdeps/unix/sysv/linux/kernel-features.h @@ -40,11 +40,6 @@ /* The sendfile syscall was introduced in 2.2.0. */ #define __ASSUME_SENDFILE 1 -/* On x86 the truncate64/ftruncate64 syscalls were introduced in 2.3.31. */ -#ifdef __i386__ -# define __ASSUME_TRUNCATE64_SYSCALL 1 -#endif - /* On x86 the mmap2 syscall was introduced in 2.3.31. */ #ifdef __i386__ # define __ASSUME_MMAP2_SYSCALL 1 @@ -55,10 +50,9 @@ # define __ASSUME_STAT64_SYSCALL 1 #endif -/* On sparc the truncate64/ftruncate64/mmap2/stat64/lstat64/fstat64 - syscalls were introduced in 2.3.35. */ +/* On sparc the mmap2/stat64/lstat64/fstat64 syscalls were introduced + in 2.3.35. */ #if defined __sparc__ && !defined __arch64__ -# define __ASSUME_TRUNCATE64_SYSCALL 1 # define __ASSUME_MMAP2_SYSCALL 1 # define __ASSUME_STAT64_SYSCALL 1 #endif @@ -66,7 +60,6 @@ /* I know for sure that these are in 2.3.35 on powerpc. But PowerPC64 does not support separate 64-bit syscalls, already 64-bit. */ #if defined __powerpc__ && !defined __powerpc64__ -# define __ASSUME_TRUNCATE64_SYSCALL 1 # define __ASSUME_STAT64_SYSCALL 1 #endif @@ -77,9 +70,8 @@ # define __ASSUME_IPC64 1 #endif -/* SH kernels got stat64, mmap2, and truncate64 during 2.4.0-test. */ +/* SH kernels got stat64 and mmap2 during 2.4.0-test. */ #ifdef __sh__ -# define __ASSUME_TRUNCATE64_SYSCALL 1 # define __ASSUME_MMAP2_SYSCALL 1 # define __ASSUME_STAT64_SYSCALL 1 #endif diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/Makefile b/libc/sysdeps/unix/sysv/linux/powerpc/Makefile index 55311a4fc..f6dccd9a3 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/Makefile +++ b/libc/sysdeps/unix/sysv/linux/powerpc/Makefile @@ -1,8 +1,9 @@ -syscall-list-variants := 32bit 64bit -syscall-list-32bit-options := -U__powerpc64__ -syscall-list-32bit-condition := __WORDSIZE == 32 -syscall-list-64bit-options := -D__powerpc64__ -syscall-list-64bit-condition := __WORDSIZE == 64 +abi-variants := 32 64 +abi-32-options := -U__powerpc64__ +abi-32-condition := __WORDSIZE == 32 +abi-64-options := -D__powerpc64__ +abi-64-condition := __WORDSIZE == 64 +abi-64-ld-soname := ld64.so.1 ifeq ($(subdir),rt) librt-routines += rt-sysdep diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c index 0b696635a..494d898b2 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2002,2005,2006,2011 Free Software Foundation, Inc. +/* Copyright (C) 1997-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 @@ -22,56 +22,17 @@ #include #include -#include - -#ifdef __NR_ftruncate64 -#ifndef __ASSUME_TRUNCATE64_SYSCALL -/* The variable is shared between all wrappers around *truncate64 calls. */ -extern int __have_no_truncate64; -#endif - - /* Truncate the file referenced by FD to LENGTH bytes. */ int __ftruncate64 (fd, length) int fd; off64_t length; { -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if (! __have_no_truncate64) -#endif - { -#ifndef __ASSUME_TRUNCATE64_SYSCALL - int saved_errno = errno; -#endif - /* On PPC32 64bit values are aligned in odd/even register pairs. */ - int result = INLINE_SYSCALL (ftruncate64, 4, fd, 0, - (long) (length >> 32), - (long) length); + /* On PPC32 64bit values are aligned in odd/even register pairs. */ + int result = INLINE_SYSCALL (ftruncate64, 4, fd, 0, + (long) (length >> 32), + (long) length); -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if (result != -1 || errno != ENOSYS) -#endif - return result; - -#ifndef __ASSUME_TRUNCATE64_SYSCALL - __set_errno (saved_errno); - __have_no_truncate64 = 1; -#endif - } - -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if ((off_t) length != length) - { - __set_errno (EINVAL); - return -1; - } - return __ftruncate (fd, (off_t) length); -#endif + return result; } weak_alias (__ftruncate64, ftruncate64) - -#else -/* Use the generic implementation. */ -# include -#endif diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c index 316d59c33..c9f66164c 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c @@ -1,5 +1,4 @@ -/* Copyright (C) 1997,1998,1999,2000,2002,2005,2006,2011 - Free Software Foundation, Inc. +/* Copyright (C) 1997-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 @@ -24,55 +23,15 @@ #include #include -#include - -#ifdef __NR_truncate64 -#ifndef __ASSUME_TRUNCATE64_SYSCALL -/* The variable is shared between all wrappers around *truncate64 calls. */ -int __have_no_truncate64; -#endif - - /* Truncate the file referenced by FD to LENGTH bytes. */ int truncate64 (path, length) const char *path; off64_t length; { -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if (! __have_no_truncate64) -#endif - { -#ifndef __ASSUME_TRUNCATE64_SYSCALL - int saved_errno = errno; -#endif - /* On PPC32 64bit values are aligned in odd/even register pairs. */ - int result = INLINE_SYSCALL (truncate64, 4, CHECK_STRING (path), 0, - (long) (length >> 32), - (long) length); - -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if (result != -1 || errno != ENOSYS) -#endif - return result; - -#ifndef __ASSUME_TRUNCATE64_SYSCALL - __set_errno (saved_errno); - __have_no_truncate64 = 1; -#endif - } - -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if ((off_t) length != length) - { - __set_errno (EINVAL); - return -1; - } - return __truncate (path, (off_t) length); -#endif + /* On PPC32 64bit values are aligned in odd/even register pairs. */ + int result = INLINE_SYSCALL (truncate64, 4, CHECK_STRING (path), 0, + (long) (length >> 32), + (long) length); + return result; } - -#else -/* Use the generic implementation. */ -# include -#endif diff --git a/libc/sysdeps/unix/sysv/linux/s390/Makefile b/libc/sysdeps/unix/sysv/linux/s390/Makefile index fb20fb05a..45b192233 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/Makefile +++ b/libc/sysdeps/unix/sysv/linux/s390/Makefile @@ -1,8 +1,9 @@ -syscall-list-variants := 32bit 64bit -syscall-list-32bit-options := -U__s390x__ -syscall-list-32bit-condition := __WORDSIZE == 32 -syscall-list-64bit-options := -D__s390x__ -syscall-list-64bit-condition := __WORDSIZE == 64 +abi-variants := 32 64 +abi-32-options := -U__s390x__ +abi-32-condition := __WORDSIZE == 32 +abi-64-options := -D__s390x__ +abi-64-condition := __WORDSIZE == 64 +abi-64-ld-soname := ld64.so.1 ifeq ($(subdir),rt) librt-routines += rt-sysdep diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/ld.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/ld.abilist index 8fd2ab065..4e2b582f1 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/ld.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/ld.abilist @@ -8,6 +8,7 @@ GLIBC_2.0 realloc F GLIBC_2.1 GLIBC_2.1 A + __libc_stack_end D 0x4 _dl_mcount F GLIBC_2.3 GLIBC_2.3 A diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist index 728550bdf..d56560112 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist @@ -253,9 +253,7 @@ GLIBC_2.0 __xpg_basename F __xstat F _environ D 0x4 - _errno D 0x4 _exit F - _h_errno D 0x4 _libc_intl_domainname D 0x5 _longjmp F _mcleanup F @@ -418,7 +416,6 @@ GLIBC_2.0 erand48 F erand48_r F err F - errno D 0x4 error F error_at_line F error_message_count D 0x4 @@ -644,7 +641,6 @@ GLIBC_2.0 gsignal F gtty F h_errlist D 0x14 - h_errno D 0x4 h_nerr D 0x4 hasmntopt F hcreate F @@ -1694,7 +1690,6 @@ GLIBC_2.10 accept4 F endsgent F fallocate F - fallocate64 F fgetsgent F fgetsgent_r F getsgent F @@ -1719,6 +1714,7 @@ GLIBC_2.11 GLIBC_2.11 A __longjmp_chk F execvpe F + fallocate64 F mkostemps F mkostemps64 F mkstemps F @@ -1733,7 +1729,6 @@ GLIBC_2.12 sys_nerr D 0x4 GLIBC_2.13 GLIBC_2.13 A - __fentry__ F fanotify_init F fanotify_mark F prlimit F @@ -2079,6 +2074,7 @@ GLIBC_2.3.2 strptime_l F GLIBC_2.3.3 GLIBC_2.3.3 A + _sys_siglist D 0x104 gnu_dev_major F gnu_dev_makedev F gnu_dev_minor F @@ -2090,10 +2086,14 @@ GLIBC_2.3.3 inet6_option_space F nftw F nftw64 F + posix_fadvise64 F + posix_fallocate64 F remap_file_pages F sched_getaffinity F sched_setaffinity F semtimedop F + sys_sigabbrev D 0x104 + sys_siglist D 0x104 GLIBC_2.3.4 GLIBC_2.3.4 A __chk_fail F @@ -2127,11 +2127,21 @@ GLIBC_2.3.4 xdr_u_quad_t F GLIBC_2.4 GLIBC_2.4 A + _IO_fprintf F + _IO_printf F + _IO_sprintf F + _IO_sscanf F + _IO_vfprintf F + _IO_vfscanf F + _IO_vsprintf F + __asprintf F __confstr_chk F __fgets_chk F __fgets_unlocked_chk F __fgetws_chk F __fgetws_unlocked_chk F + __finitel F + __fprintf_chk F __fwprintf_chk F __fxstatat F __fxstatat64 F @@ -2141,23 +2151,108 @@ GLIBC_2.4 __gethostname_chk F __getlogin_r_chk F __getwd_chk F + __isinfl F + __isnanl F __mbsnrtowcs_chk F __mbsrtowcs_chk F __mbstowcs_chk F + __nldbl__IO_fprintf F + __nldbl__IO_printf F + __nldbl__IO_sprintf F + __nldbl__IO_sscanf F + __nldbl__IO_vfprintf F + __nldbl__IO_vfscanf F + __nldbl__IO_vsprintf F + __nldbl___asprintf F + __nldbl___fprintf_chk F + __nldbl___fwprintf_chk F + __nldbl___printf_chk F + __nldbl___printf_fp F + __nldbl___snprintf_chk F + __nldbl___sprintf_chk F + __nldbl___strfmon_l F + __nldbl___swprintf_chk F + __nldbl___syslog_chk F + __nldbl___vfprintf_chk F + __nldbl___vfscanf F + __nldbl___vfwprintf_chk F + __nldbl___vprintf_chk F + __nldbl___vsnprintf F + __nldbl___vsnprintf_chk F + __nldbl___vsprintf_chk F + __nldbl___vsscanf F + __nldbl___vstrfmon F + __nldbl___vstrfmon_l F + __nldbl___vswprintf_chk F + __nldbl___vsyslog_chk F + __nldbl___vwprintf_chk F + __nldbl___wprintf_chk F + __nldbl_asprintf F + __nldbl_dprintf F + __nldbl_fprintf F + __nldbl_fscanf F + __nldbl_fwprintf F + __nldbl_fwscanf F + __nldbl_obstack_printf F + __nldbl_obstack_vprintf F + __nldbl_printf F + __nldbl_printf_size F + __nldbl_scanf F + __nldbl_snprintf F + __nldbl_sprintf F + __nldbl_sscanf F + __nldbl_strfmon F + __nldbl_strfmon_l F + __nldbl_swprintf F + __nldbl_swscanf F + __nldbl_syslog F + __nldbl_vasprintf F + __nldbl_vdprintf F + __nldbl_vfprintf F + __nldbl_vfscanf F + __nldbl_vfwprintf F + __nldbl_vfwscanf F + __nldbl_vprintf F + __nldbl_vscanf F + __nldbl_vsnprintf F + __nldbl_vsprintf F + __nldbl_vsscanf F + __nldbl_vswprintf F + __nldbl_vswscanf F + __nldbl_vsyslog F + __nldbl_vwprintf F + __nldbl_vwscanf F + __nldbl_wprintf F + __nldbl_wscanf F __pread64_chk F __pread_chk F + __printf_chk F + __printf_fp F __ptsname_r_chk F __read_chk F __readlink_chk F __realpath_chk F __recv_chk F __recvfrom_chk F + __signbitl F + __snprintf_chk F + __sprintf_chk F __stack_chk_fail F __stpncpy_chk F + __strfmon_l F + __strtold_internal F + __strtold_l F __swprintf_chk F __syslog_chk F __ttyname_r_chk F + __vfprintf_chk F + __vfscanf F __vfwprintf_chk F + __vprintf_chk F + __vsnprintf F + __vsnprintf_chk F + __vsprintf_chk F + __vsscanf F __vswprintf_chk F __vsyslog_chk F __vwprintf_chk F @@ -2170,6 +2265,8 @@ GLIBC_2.4 __wcsncpy_chk F __wcsnrtombs_chk F __wcsrtombs_chk F + __wcstold_internal F + __wcstold_l F __wcstombs_chk F __wctomb_chk F __wmemcpy_chk F @@ -2180,29 +2277,83 @@ GLIBC_2.4 __xmknodat F _sys_errlist D 0x210 _sys_nerr D 0x4 + asprintf F + copysignl F + dprintf F eaccess F faccessat F fchmodat F fchownat F fdopendir F + finitel F + fprintf F + frexpl F + fscanf F futimesat F + fwprintf F + fwscanf F inotify_add_watch F inotify_init F inotify_rm_watch F + isinfl F + isnanl F + ldexpl F linkat F mkdirat F mkfifoat F + modfl F + obstack_printf F + obstack_vprintf F open_wmemstream F openat F openat64 F ppoll F + printf F + printf_size F + qecvt F + qecvt_r F + qfcvt F + qfcvt_r F + qgcvt F readlinkat F renameat F + scalbnl F + scanf F + snprintf F + sprintf F + sscanf F + strfmon F + strfmon_l F + strtold F + strtold_l F + swprintf F + swscanf F symlinkat F sys_errlist D 0x210 sys_nerr D 0x4 + syslog F unlinkat F unshare F + vasprintf F + vdprintf F + vfprintf F + vfscanf F + vfwprintf F + vfwscanf F + vprintf F + vscanf F + vsnprintf F + vsprintf F + vsscanf F + vswprintf F + vswscanf F + vsyslog F + vwprintf F + vwscanf F + wcstold F + wcstold_l F + wprintf F + wscanf F GLIBC_2.5 GLIBC_2.5 A __readlinkat_chk F @@ -2247,6 +2398,18 @@ GLIBC_2.7 __isoc99_vswscanf F __isoc99_vwscanf F __isoc99_wscanf F + __nldbl___isoc99_fscanf F + __nldbl___isoc99_fwscanf F + __nldbl___isoc99_scanf F + __nldbl___isoc99_sscanf F + __nldbl___isoc99_swscanf F + __nldbl___isoc99_vfscanf F + __nldbl___isoc99_vfwscanf F + __nldbl___isoc99_vscanf F + __nldbl___isoc99_vsscanf F + __nldbl___isoc99_vswscanf F + __nldbl___isoc99_vwscanf F + __nldbl___isoc99_wscanf F __open64_2 F __open_2 F __openat64_2 F @@ -2263,6 +2426,12 @@ GLIBC_2.8 GLIBC_2.8 A __asprintf_chk F __dprintf_chk F + __nldbl___asprintf_chk F + __nldbl___dprintf_chk F + __nldbl___obstack_printf_chk F + __nldbl___obstack_vprintf_chk F + __nldbl___vasprintf_chk F + __nldbl___vdprintf_chk F __obstack_printf_chk F __obstack_vprintf_chk F __vasprintf_chk F @@ -2275,5 +2444,20 @@ GLIBC_2.9 GLIBC_2.9 A dup3 F epoll_create1 F + getutent F + getutent_r F + getutid F + getutid_r F + getutline F + getutline_r F + getutmp F + getutmpx F + getutxent F + getutxid F + getutxline F inotify_init1 F pipe2 F + pututline F + pututxline F + updwtmp F + updwtmpx F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist index 770f222aa..ae8af50eb 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist @@ -398,3 +398,107 @@ GLIBC_2.2 fedisableexcept F feenableexcept F fegetexcept F +GLIBC_2.4 + GLIBC_2.4 A + __clog10l F + __finitel F + __fpclassifyl F + __nldbl_nexttowardf F + __signbitl F + acoshl F + acosl F + asinhl F + asinl F + atan2l F + atanhl F + atanl F + cabsl F + cacoshl F + cacosl F + cargl F + casinhl F + casinl F + catanhl F + catanl F + cbrtl F + ccoshl F + ccosl F + ceill F + cexpl F + cimagl F + clog10l F + clogl F + conjl F + copysignl F + coshl F + cosl F + cpowl F + cprojl F + creall F + csinhl F + csinl F + csqrtl F + ctanhl F + ctanl F + dreml F + erfcl F + erfl F + exp10l F + exp2l F + expl F + expm1l F + fabsl F + fdiml F + finitel F + floorl F + fmal F + fmaxl F + fminl F + fmodl F + frexpl F + gammal F + hypotl F + ilogbl F + j0l F + j1l F + jnl F + ldexpl F + lgammal F + lgammal_r F + llrintl F + llroundl F + log10l F + log1pl F + log2l F + logbl F + logl F + lrintl F + lroundl F + modfl F + nanl F + nearbyintl F + nextafterl F + nexttoward F + nexttowardf F + nexttowardl F + pow10l F + powl F + remainderl F + remquol F + rintl F + roundl F + scalbl F + scalblnl F + scalbnl F + significandl F + sincosl F + sinhl F + sinl F + sqrtl F + tanhl F + tanl F + tgammal F + truncl F + y0l F + y1l F + ynl F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libpthread.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libpthread.abilist index 68bd978be..827114f89 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libpthread.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libpthread.abilist @@ -230,6 +230,23 @@ GLIBC_2.3.2 pthread_cond_signal F pthread_cond_timedwait F pthread_cond_wait F +GLIBC_2.3.3 + GLIBC_2.3.3 A + __pthread_cleanup_routine F + __pthread_register_cancel F + __pthread_register_cancel_defer F + __pthread_unregister_cancel F + __pthread_unregister_cancel_restore F + __pthread_unwind_next F + pthread_attr_getaffinity_np F + pthread_attr_setaffinity_np F + pthread_barrierattr_getpshared F + pthread_condattr_getclock F + pthread_condattr_setclock F + pthread_getaffinity_np F + pthread_setaffinity_np F + pthread_timedjoin_np F + pthread_tryjoin_np F GLIBC_2.3.4 GLIBC_2.3.4 A pthread_attr_getaffinity_np F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/librt.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/librt.abilist index 371d135c8..af7df27cb 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/librt.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/librt.abilist @@ -31,13 +31,6 @@ GLIBC_2.2 timer_getoverrun F timer_gettime F timer_settime F -GLIBC_2.3.3 - GLIBC_2.3.3 A - timer_create F - timer_delete F - timer_getoverrun F - timer_gettime F - timer_settime F GLIBC_2.3.4 GLIBC_2.3.4 A mq_close F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libutil.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libutil.abilist index 7422687e3..9dc14a5f8 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libutil.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libutil.abilist @@ -6,3 +6,6 @@ GLIBC_2.0 logout F logwtmp F openpty F +GLIBC_2.9 + GLIBC_2.9 A + login F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/ld.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/ld.abilist index 070dcc48f..5ed0cdad7 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/ld.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/ld.abilist @@ -1,6 +1,7 @@ GLIBC_2.2 GLIBC_2.2 A __libc_memalign F + __libc_stack_end D 0x8 _dl_mcount F _r_debug D 0x28 calloc F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist index 1ca4811ea..f161a51e2 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist @@ -50,7 +50,6 @@ GLIBC_2.12 sys_nerr D 0x4 GLIBC_2.13 GLIBC_2.13 A - __fentry__ F fanotify_init F fanotify_mark F prlimit F @@ -505,10 +504,8 @@ GLIBC_2.2 _dl_mcount_wrapper F _dl_mcount_wrapper_check F _environ D 0x8 - _errno D 0x4 _exit F _flushlbf F - _h_errno D 0x4 _libc_intl_domainname D 0x5 _longjmp F _mcleanup F @@ -701,7 +698,6 @@ GLIBC_2.2 erand48 F erand48_r F err F - errno D 0x4 error F error_at_line F error_message_count D 0x4 @@ -989,7 +985,6 @@ GLIBC_2.2 gsignal F gtty F h_errlist D 0x28 - h_errno D 0x4 h_nerr D 0x4 hasmntopt F hcreate F @@ -1973,6 +1968,7 @@ GLIBC_2.3.2 strptime_l F GLIBC_2.3.3 GLIBC_2.3.3 A + _sys_siglist D 0x208 gnu_dev_major F gnu_dev_makedev F gnu_dev_minor F @@ -1990,6 +1986,8 @@ GLIBC_2.3.3 semtimedop F strtoll_l F strtoull_l F + sys_sigabbrev D 0x208 + sys_siglist D 0x208 GLIBC_2.3.4 GLIBC_2.3.4 A __chk_fail F @@ -2023,11 +2021,21 @@ GLIBC_2.3.4 xdr_u_quad_t F GLIBC_2.4 GLIBC_2.4 A + _IO_fprintf F + _IO_printf F + _IO_sprintf F + _IO_sscanf F + _IO_vfprintf F + _IO_vfscanf F + _IO_vsprintf F + __asprintf F __confstr_chk F __fgets_chk F __fgets_unlocked_chk F __fgetws_chk F __fgetws_unlocked_chk F + __finitel F + __fprintf_chk F __fwprintf_chk F __fxstatat F __fxstatat64 F @@ -2037,23 +2045,108 @@ GLIBC_2.4 __gethostname_chk F __getlogin_r_chk F __getwd_chk F + __isinfl F + __isnanl F __mbsnrtowcs_chk F __mbsrtowcs_chk F __mbstowcs_chk F + __nldbl__IO_fprintf F + __nldbl__IO_printf F + __nldbl__IO_sprintf F + __nldbl__IO_sscanf F + __nldbl__IO_vfprintf F + __nldbl__IO_vfscanf F + __nldbl__IO_vsprintf F + __nldbl___asprintf F + __nldbl___fprintf_chk F + __nldbl___fwprintf_chk F + __nldbl___printf_chk F + __nldbl___printf_fp F + __nldbl___snprintf_chk F + __nldbl___sprintf_chk F + __nldbl___strfmon_l F + __nldbl___swprintf_chk F + __nldbl___syslog_chk F + __nldbl___vfprintf_chk F + __nldbl___vfscanf F + __nldbl___vfwprintf_chk F + __nldbl___vprintf_chk F + __nldbl___vsnprintf F + __nldbl___vsnprintf_chk F + __nldbl___vsprintf_chk F + __nldbl___vsscanf F + __nldbl___vstrfmon F + __nldbl___vstrfmon_l F + __nldbl___vswprintf_chk F + __nldbl___vsyslog_chk F + __nldbl___vwprintf_chk F + __nldbl___wprintf_chk F + __nldbl_asprintf F + __nldbl_dprintf F + __nldbl_fprintf F + __nldbl_fscanf F + __nldbl_fwprintf F + __nldbl_fwscanf F + __nldbl_obstack_printf F + __nldbl_obstack_vprintf F + __nldbl_printf F + __nldbl_printf_size F + __nldbl_scanf F + __nldbl_snprintf F + __nldbl_sprintf F + __nldbl_sscanf F + __nldbl_strfmon F + __nldbl_strfmon_l F + __nldbl_swprintf F + __nldbl_swscanf F + __nldbl_syslog F + __nldbl_vasprintf F + __nldbl_vdprintf F + __nldbl_vfprintf F + __nldbl_vfscanf F + __nldbl_vfwprintf F + __nldbl_vfwscanf F + __nldbl_vprintf F + __nldbl_vscanf F + __nldbl_vsnprintf F + __nldbl_vsprintf F + __nldbl_vsscanf F + __nldbl_vswprintf F + __nldbl_vswscanf F + __nldbl_vsyslog F + __nldbl_vwprintf F + __nldbl_vwscanf F + __nldbl_wprintf F + __nldbl_wscanf F __pread64_chk F __pread_chk F + __printf_chk F + __printf_fp F __ptsname_r_chk F __read_chk F __readlink_chk F __realpath_chk F __recv_chk F __recvfrom_chk F + __signbitl F + __snprintf_chk F + __sprintf_chk F __stack_chk_fail F __stpncpy_chk F + __strfmon_l F + __strtold_internal F + __strtold_l F __swprintf_chk F __syslog_chk F __ttyname_r_chk F + __vfprintf_chk F + __vfscanf F __vfwprintf_chk F + __vprintf_chk F + __vsnprintf F + __vsnprintf_chk F + __vsprintf_chk F + __vsscanf F __vswprintf_chk F __vsyslog_chk F __vwprintf_chk F @@ -2066,6 +2159,8 @@ GLIBC_2.4 __wcsncpy_chk F __wcsnrtombs_chk F __wcsrtombs_chk F + __wcstold_internal F + __wcstold_l F __wcstombs_chk F __wctomb_chk F __wmemcpy_chk F @@ -2076,29 +2171,83 @@ GLIBC_2.4 __xmknodat F _sys_errlist D 0x420 _sys_nerr D 0x4 + asprintf F + copysignl F + dprintf F eaccess F faccessat F fchmodat F fchownat F fdopendir F + finitel F + fprintf F + frexpl F + fscanf F futimesat F + fwprintf F + fwscanf F inotify_add_watch F inotify_init F inotify_rm_watch F + isinfl F + isnanl F + ldexpl F linkat F mkdirat F mkfifoat F + modfl F + obstack_printf F + obstack_vprintf F open_wmemstream F openat F openat64 F ppoll F + printf F + printf_size F + qecvt F + qecvt_r F + qfcvt F + qfcvt_r F + qgcvt F readlinkat F renameat F + scalbnl F + scanf F + snprintf F + sprintf F + sscanf F + strfmon F + strfmon_l F + strtold F + strtold_l F + swprintf F + swscanf F symlinkat F sys_errlist D 0x420 sys_nerr D 0x4 + syslog F unlinkat F unshare F + vasprintf F + vdprintf F + vfprintf F + vfscanf F + vfwprintf F + vfwscanf F + vprintf F + vscanf F + vsnprintf F + vsprintf F + vsscanf F + vswprintf F + vswscanf F + vsyslog F + vwprintf F + vwscanf F + wcstold F + wcstold_l F + wprintf F + wscanf F GLIBC_2.5 GLIBC_2.5 A __readlinkat_chk F @@ -2143,6 +2292,18 @@ GLIBC_2.7 __isoc99_vswscanf F __isoc99_vwscanf F __isoc99_wscanf F + __nldbl___isoc99_fscanf F + __nldbl___isoc99_fwscanf F + __nldbl___isoc99_scanf F + __nldbl___isoc99_sscanf F + __nldbl___isoc99_swscanf F + __nldbl___isoc99_vfscanf F + __nldbl___isoc99_vfwscanf F + __nldbl___isoc99_vscanf F + __nldbl___isoc99_vsscanf F + __nldbl___isoc99_vswscanf F + __nldbl___isoc99_vwscanf F + __nldbl___isoc99_wscanf F __open64_2 F __open_2 F __openat64_2 F @@ -2159,6 +2320,12 @@ GLIBC_2.8 GLIBC_2.8 A __asprintf_chk F __dprintf_chk F + __nldbl___asprintf_chk F + __nldbl___dprintf_chk F + __nldbl___obstack_printf_chk F + __nldbl___obstack_vprintf_chk F + __nldbl___vasprintf_chk F + __nldbl___vdprintf_chk F __obstack_printf_chk F __obstack_vprintf_chk F __vasprintf_chk F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist index 911153b11..acf4d6851 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist @@ -394,3 +394,107 @@ GLIBC_2.2 yn F ynf F ynl F +GLIBC_2.4 + GLIBC_2.4 A + __clog10l F + __finitel F + __fpclassifyl F + __nldbl_nexttowardf F + __signbitl F + acoshl F + acosl F + asinhl F + asinl F + atan2l F + atanhl F + atanl F + cabsl F + cacoshl F + cacosl F + cargl F + casinhl F + casinl F + catanhl F + catanl F + cbrtl F + ccoshl F + ccosl F + ceill F + cexpl F + cimagl F + clog10l F + clogl F + conjl F + copysignl F + coshl F + cosl F + cpowl F + cprojl F + creall F + csinhl F + csinl F + csqrtl F + ctanhl F + ctanl F + dreml F + erfcl F + erfl F + exp10l F + exp2l F + expl F + expm1l F + fabsl F + fdiml F + finitel F + floorl F + fmal F + fmaxl F + fminl F + fmodl F + frexpl F + gammal F + hypotl F + ilogbl F + j0l F + j1l F + jnl F + ldexpl F + lgammal F + lgammal_r F + llrintl F + llroundl F + log10l F + log1pl F + log2l F + logbl F + logl F + lrintl F + lroundl F + modfl F + nanl F + nearbyintl F + nextafterl F + nexttoward F + nexttowardf F + nexttowardl F + pow10l F + powl F + remainderl F + remquol F + rintl F + roundl F + scalbl F + scalblnl F + scalbnl F + significandl F + sincosl F + sinhl F + sinl F + sqrtl F + tanhl F + tanl F + tgammal F + truncl F + y0l F + y1l F + ynl F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist index e367e8f80..596fdd3d7 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist @@ -214,6 +214,23 @@ GLIBC_2.3.2 pthread_cond_signal F pthread_cond_timedwait F pthread_cond_wait F +GLIBC_2.3.3 + GLIBC_2.3.3 A + __pthread_cleanup_routine F + __pthread_register_cancel F + __pthread_register_cancel_defer F + __pthread_unregister_cancel F + __pthread_unregister_cancel_restore F + __pthread_unwind_next F + pthread_attr_getaffinity_np F + pthread_attr_setaffinity_np F + pthread_barrierattr_getpshared F + pthread_condattr_getclock F + pthread_condattr_setclock F + pthread_getaffinity_np F + pthread_setaffinity_np F + pthread_timedjoin_np F + pthread_tryjoin_np F GLIBC_2.3.4 GLIBC_2.3.4 A pthread_attr_getaffinity_np F diff --git a/libc/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S b/libc/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S index abe384ef6..9d672f920 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S +++ b/libc/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005-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 @@ -90,6 +90,7 @@ ENTRY(__setcontext) mov.l @(oR7,r0), r7 mov.l @(oR8,r0), r8 mov.l @r15+, r0 + cfi_adjust_cfa_offset(-4) jmp @r0 mov.l @r15+, r0 diff --git a/libc/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S b/libc/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S index 92c476efe..8227a139e 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S +++ b/libc/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005-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 @@ -123,6 +123,7 @@ ENTRY(__swapcontext) mov.l @(oR7,r0), r7 mov.l @(oR8,r0), r8 mov.l @r15+, r0 + cfi_adjust_cfa_offset(-4) jmp @r0 mov.l @r15+, r0 diff --git a/libc/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S b/libc/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S index a3c0e21e5..161c51d45 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S +++ b/libc/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S @@ -132,6 +132,7 @@ ENTRY(__setcontext) mov.l @(oR7,r0), r7 mov.l @(oR8,r0), r8 mov.l @r15+, r0 + cfi_adjust_cfa_offset(-4) jmp @r0 mov.l @r15+, r0 diff --git a/libc/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S b/libc/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S index 3ff7fe420..24caae5b6 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S +++ b/libc/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S @@ -209,6 +209,7 @@ ENTRY(__swapcontext) mov.l @(oR7,r0), r7 mov.l @(oR8,r0), r8 mov.l @r15+, r0 + cfi_adjust_cfa_offset(-4) jmp @r0 mov.l @r15+, r0 diff --git a/libc/sysdeps/unix/sysv/linux/sparc/Makefile b/libc/sysdeps/unix/sysv/linux/sparc/Makefile index d769c4852..96b783e5b 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/Makefile +++ b/libc/sysdeps/unix/sysv/linux/sparc/Makefile @@ -1,8 +1,8 @@ -syscall-list-variants := 32bit 64bit -syscall-list-32bit-options := -U__sparc_v9__ -U__arch64__ -syscall-list-32bit-condition := __WORDSIZE == 32 -syscall-list-64bit-options := -D__sparc_v9__ -D__arch64__ -syscall-list-64bit-condition := __WORDSIZE == 64 +abi-variants := 32 64 +abi-32-options := -U__sparc_v9__ -U__arch64__ +abi-32-condition := __WORDSIZE == 32 +abi-64-options := -D__sparc_v9__ -D__arch64__ +abi-64-condition := __WORDSIZE == 64 ifeq ($(subdir),rt) librt-routines += rt-sysdep diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist index 2914d1c21..8571fa8da 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist @@ -248,7 +248,6 @@ GLIBC_2.2 _Qp_uitoq F _Qp_uxtoq F _Qp_xtoq F - __Qp_handle_exceptions F __adjtimex F __after_morecore_hook D 0x8 __align_cpy_1 F diff --git a/libc/sysdeps/unix/sysv/linux/truncate64.c b/libc/sysdeps/unix/sysv/linux/truncate64.c index 12ae4b5dd..b31b74d1d 100644 --- a/libc/sysdeps/unix/sysv/linux/truncate64.c +++ b/libc/sysdeps/unix/sysv/linux/truncate64.c @@ -1,5 +1,4 @@ -/* Copyright (C) 1997-2000,2003,2004,2005,2006,2011 - Free Software Foundation, Inc. +/* Copyright (C) 1997-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 @@ -25,51 +24,13 @@ #include #include -#include - -#ifdef __NR_truncate64 -#ifndef __ASSUME_TRUNCATE64_SYSCALL -/* The variable is shared between all wrappers around *truncate64 calls. */ -int __have_no_truncate64; -#endif - /* Truncate the file referenced by FD to LENGTH bytes. */ int truncate64 (const char *path, off64_t length) { -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if (! __have_no_truncate64) -#endif - { - unsigned int low = length & 0xffffffff; - unsigned int high = length >> 32; -#ifndef __ASSUME_TRUNCATE64_SYSCALL - int saved_errno = errno; -#endif - int result = INLINE_SYSCALL (truncate64, 3, CHECK_STRING (path), - __LONG_LONG_PAIR (high, low)); -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if (result != -1 || errno != ENOSYS) -#endif - return result; - -#ifndef __ASSUME_TRUNCATE64_SYSCALL - __set_errno (saved_errno); - __have_no_truncate64 = 1; -#endif - } - -#ifndef __ASSUME_TRUNCATE64_SYSCALL - if ((off_t) length != length) - { - __set_errno (EINVAL); - return -1; - } - return __truncate (path, (off_t) length); -#endif + unsigned int low = length & 0xffffffff; + unsigned int high = length >> 32; + int result = INLINE_SYSCALL (truncate64, 3, CHECK_STRING (path), + __LONG_LONG_PAIR (high, low)); + return result; } - -#else -/* Use the generic implementation. */ -# include -#endif diff --git a/libc/sysdeps/unix/sysv/linux/x86/Makefile b/libc/sysdeps/unix/sysv/linux/x86/Makefile new file mode 100644 index 000000000..cf4a55cf0 --- /dev/null +++ b/libc/sysdeps/unix/sysv/linux/x86/Makefile @@ -0,0 +1,14 @@ +# We don't need any header files. +abi-includes := + +abi-variants := 32 64 x32 + +abi-32-options := -D__i386__ -U__x86_64__ +abi-32-condition := !defined __x86_64__ +abi-32-ld-soname := ld-linux.so.2 +abi-64-options := -U__i386__ -D__x86_64__ -U__ILP32__ -D__LP64__ +abi-64-condition := defined __x86_64__ && defined __LP64__ +abi-64-ld-soname := ld-linux-x86-64.so.2 +abi-x32-options := -U__i386__ -D__x86_64__ -D__ILP32__ -U__LP64__ +abi-x32-condition := defined __x86_64__ && defined __ILP32__ +abi-x32-ld-soname := ld-linux-x32.so.2 diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/64/Makefile b/libc/sysdeps/unix/sysv/linux/x86_64/64/Makefile new file mode 100644 index 000000000..a7b6dc5a5 --- /dev/null +++ b/libc/sysdeps/unix/sysv/linux/x86_64/64/Makefile @@ -0,0 +1,2 @@ +# The default ABI is 64. +default-abi := 64 diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/Implies b/libc/sysdeps/unix/sysv/linux/x86_64/Implies index 8d91c8009..c7a65c938 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/Implies +++ b/libc/sysdeps/unix/sysv/linux/x86_64/Implies @@ -1 +1,2 @@ +unix/sysv/linux/x86 unix/sysv/linux/wordsize-64 diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/Makefile b/libc/sysdeps/unix/sysv/linux/x86_64/Makefile index 59a6b0a8b..dd4ab59c5 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/Makefile +++ b/libc/sysdeps/unix/sysv/linux/x86_64/Makefile @@ -1,9 +1,3 @@ -syscall-list-variants := 32bit 64bit -syscall-list-32bit-options := -D__i386__ -U__x86_64__ -syscall-list-32bit-condition := __WORDSIZE == 32 -syscall-list-64bit-options := -U__i386__ -D__x86_64__ -syscall-list-64bit-condition := __WORDSIZE == 64 - ifeq ($(subdir),misc) sysdep_routines += ioperm iopl sysdep_headers += sys/perm.h sys/reg.h sys/debugreg.h sys/io.h diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/bits/typesizes.h b/libc/sysdeps/unix/sysv/linux/x86_64/bits/typesizes.h index cbad9a3b1..a52a1d3f6 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/bits/typesizes.h +++ b/libc/sysdeps/unix/sysv/linux/x86_64/bits/typesizes.h @@ -41,7 +41,11 @@ #define __INO_T_TYPE __SYSCALL_ULONG_TYPE #define __INO64_T_TYPE __UQUAD_TYPE #define __MODE_T_TYPE __U32_TYPE -#define __NLINK_T_TYPE __SYSCALL_ULONG_TYPE +#ifdef __x86_64__ +# define __NLINK_T_TYPE __SYSCALL_ULONG_TYPE +#else +# define __NLINK_T_TYPE __UWORD_TYPE +#endif #define __OFF_T_TYPE __SYSCALL_SLONG_TYPE #define __OFF64_T_TYPE __SQUAD_TYPE #define __PID_T_TYPE __S32_TYPE diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/x32/Makefile b/libc/sysdeps/unix/sysv/linux/x86_64/x32/Makefile index aa78238a0..ecbdefb2d 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/x32/Makefile +++ b/libc/sysdeps/unix/sysv/linux/x86_64/x32/Makefile @@ -1,3 +1,6 @@ +# The default ABI is x32. +default-abi := x32 + ifeq ($(subdir),misc) sysdep_routines += arch_prctl endif diff --git a/libc/sysdeps/x86_64/64/shlib-versions b/libc/sysdeps/x86_64/64/shlib-versions index c79748734..50dd90840 100644 --- a/libc/sysdeps/x86_64/64/shlib-versions +++ b/libc/sysdeps/x86_64/64/shlib-versions @@ -1,4 +1,3 @@ # Configuration DEFAULT Earliest symbol set # ------------- --------------- ------------------------------ x86_64-.*-linux.* DEFAULT GLIBC_2.2.5 -x86_64-.*-linux.* ld=ld-linux-x86-64.so.2 GLIBC_2.2.5 diff --git a/libc/sysdeps/x86_64/x32/shlib-versions b/libc/sysdeps/x86_64/x32/shlib-versions index d9f63e106..ae3979b12 100644 --- a/libc/sysdeps/x86_64/x32/shlib-versions +++ b/libc/sysdeps/x86_64/x32/shlib-versions @@ -1,7 +1,6 @@ # Configuration DEFAULT Earliest symbol set # ------------- --------------- ------------------------------ x86_64-.*-linux.* DEFAULT GLIBC_2.16 -x86_64-.*-linux.* ld=ld-linux-x32.so.2 GLIBC_2.16 # Configuration ABI Identifier for ABI data files # ------------- ---------- ----------------------------- -- cgit v1.2.3