summaryrefslogtreecommitdiff
path: root/libc/sysdeps
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-05-30 19:53:28 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-05-30 19:53:28 +0000
commit978560d2d59061c18105088eefd568c7a5ac3b4b (patch)
treefc3006d7a270e49ac3f09c9063f76f521bd52f47 /libc/sysdeps
parent47023889431f41fa4e408ba468096b7040caaa11 (diff)
Merge changes between r18761 and r18832 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@18833 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/sysdeps')
-rw-r--r--libc/sysdeps/powerpc/powerpc32/dl-irel.h1
-rw-r--r--libc/sysdeps/sh/_mcount.S11
-rw-r--r--libc/sysdeps/sh/sh4/fpu/fclrexcpt.c4
-rw-r--r--libc/sysdeps/sh/sh4/fpu/fedisblxcpt.c2
-rw-r--r--libc/sysdeps/sh/sh4/fpu/feenablxcpt.c2
-rw-r--r--libc/sysdeps/sh/sh4/fpu/fegetenv.c2
-rw-r--r--libc/sysdeps/sh/sh4/fpu/fegetexcept.c2
-rw-r--r--libc/sysdeps/sh/sh4/fpu/fegetround.c4
-rw-r--r--libc/sysdeps/sh/sh4/fpu/feholdexcpt.c5
-rw-r--r--libc/sysdeps/sh/sh4/fpu/fesetenv.c4
-rw-r--r--libc/sysdeps/sh/sh4/fpu/fesetround.c2
-rw-r--r--libc/sysdeps/sh/sh4/fpu/feupdateenv.c2
-rw-r--r--libc/sysdeps/sh/sh4/fpu/fraiseexcpt.c8
-rw-r--r--libc/sysdeps/sh/sh4/fpu/fsetexcptflg.c4
-rw-r--r--libc/sysdeps/sh/sh4/fpu/ftestexcept.c4
-rw-r--r--libc/sysdeps/sparc/sparc32/soft-fp/q_util.c49
-rw-r--r--libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h16
-rw-r--r--libc/sysdeps/sparc/sparc64/soft-fp/Versions2
-rw-r--r--libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c49
-rw-r--r--libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h16
-rw-r--r--libc/sysdeps/unix/make-syscalls.sh6
-rw-r--r--libc/sysdeps/unix/sh/sysdep.S13
-rw-r--r--libc/sysdeps/unix/sysv/linux/Makefile53
-rw-r--r--libc/sysdeps/unix/sysv/linux/ftruncate64.c52
-rw-r--r--libc/sysdeps/unix/sysv/linux/i386/Implies1
-rw-r--r--libc/sysdeps/unix/sysv/linux/i386/Makefile3
-rw-r--r--libc/sysdeps/unix/sysv/linux/kernel-features.h14
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/Makefile11
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c51
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c53
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/Makefile11
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/ld.abilist1
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist196
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist104
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libpthread.abilist17
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/librt.abilist7
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libutil.abilist3
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/ld.abilist1
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist177
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist104
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist17
-rw-r--r--libc/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S3
-rw-r--r--libc/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S3
-rw-r--r--libc/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S1
-rw-r--r--libc/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S1
-rw-r--r--libc/sysdeps/unix/sysv/linux/sparc/Makefile10
-rw-r--r--libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist1
-rw-r--r--libc/sysdeps/unix/sysv/linux/truncate64.c51
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86/Makefile14
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/64/Makefile2
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/Implies1
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/Makefile6
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/bits/typesizes.h6
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/x32/Makefile3
-rw-r--r--libc/sysdeps/x86_64/64/shlib-versions1
-rw-r--r--libc/sysdeps/x86_64/x32/shlib-versions1
56 files changed, 820 insertions, 368 deletions
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 <stdio.h>
#include <unistd.h>
+#include <ldsodefs.h>
#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 <gniibe@m17n.org>
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 <aj@arthur.rhein-neckar.de>, 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 <aj@arthur.rhein-neckar.de>, 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 <asm/unistd.h> 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 <asm/unistd.h>
+# 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 <bits/syscall.h> directly; include <sys/syscall.h> 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 <sysdep.h>
#include <sys/syscall.h>
-#include <kernel-features.h>
-
-#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 <misc/ftruncate64.c>
-#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 <sysdep.h>
#include <sys/syscall.h>
-#include <kernel-features.h>
-
-#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 <misc/ftruncate64.c>
-#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 <sys/syscall.h>
#include <bp-checks.h>
-#include <kernel-features.h>
-
-#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 <misc/truncate64.c>
-#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 <sys/syscall.h>
#include <bp-checks.h>
-#include <kernel-features.h>
-
-#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 <misc/truncate64.c>
-#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
# ------------- ---------- -----------------------------