summaryrefslogtreecommitdiff
path: root/libc/sysdeps
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-05-31 14:19:26 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2012-05-31 14:19:26 +0000
commit69731ab373b0196a860cee9bed9790c2f9ac43c9 (patch)
tree3c346b226b18b11dacfcf19842e8774607b5b988 /libc/sysdeps
parent978560d2d59061c18105088eefd568c7a5ac3b4b (diff)
Merge changes between r18832 and r18863 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@18864 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/sysdeps')
-rw-r--r--libc/sysdeps/i386/Implies1
-rw-r--r--libc/sysdeps/i386/bits/byteswap.h126
-rw-r--r--libc/sysdeps/i386/bits/endian.h7
-rw-r--r--libc/sysdeps/i386/bits/link.h59
-rw-r--r--libc/sysdeps/i386/bits/linkmap.h6
-rw-r--r--libc/sysdeps/i386/bits/mathdef.h59
-rw-r--r--libc/sysdeps/i386/bits/select.h54
-rw-r--r--libc/sysdeps/i386/bits/setjmp.h31
-rw-r--r--libc/sysdeps/mach/hurd/connect.c6
-rw-r--r--libc/sysdeps/sparc/sparc32/soft-fp/q_util.c49
-rw-r--r--libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h3
-rw-r--r--libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c49
-rw-r--r--libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h3
-rw-r--r--libc/sysdeps/unix/inet/syscalls.list2
-rw-r--r--libc/sysdeps/unix/sysv/linux/connect.S2
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list2
-rw-r--r--libc/sysdeps/unix/sysv/linux/sa_len.c4
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/syscalls.list2
-rw-r--r--libc/sysdeps/x86/bits/byteswap-16.h (renamed from libc/sysdeps/i386/bits/byteswap-16.h)0
-rw-r--r--libc/sysdeps/x86/bits/byteswap.h (renamed from libc/sysdeps/x86_64/bits/byteswap.h)0
-rw-r--r--libc/sysdeps/x86/bits/endian.h (renamed from libc/sysdeps/x86_64/bits/endian.h)2
-rw-r--r--libc/sysdeps/x86/bits/huge_vall.h (renamed from libc/sysdeps/i386/bits/huge_vall.h)0
-rw-r--r--libc/sysdeps/x86/bits/link.h (renamed from libc/sysdeps/x86_64/bits/link.h)0
-rw-r--r--libc/sysdeps/x86/bits/linkmap.h (renamed from libc/sysdeps/x86_64/bits/linkmap.h)0
-rw-r--r--libc/sysdeps/x86/bits/mathdef.h (renamed from libc/sysdeps/x86_64/bits/mathdef.h)0
-rw-r--r--libc/sysdeps/x86/bits/select.h (renamed from libc/sysdeps/x86_64/bits/select.h)0
-rw-r--r--libc/sysdeps/x86/bits/setjmp.h (renamed from libc/sysdeps/x86_64/bits/setjmp.h)0
-rw-r--r--libc/sysdeps/x86/bits/wordsize.h (renamed from libc/sysdeps/x86_64/bits/wordsize.h)0
-rw-r--r--libc/sysdeps/x86/bits/xtitypes.h (renamed from libc/sysdeps/x86_64/bits/xtitypes.h)0
-rw-r--r--libc/sysdeps/x86_64/Implies1
-rw-r--r--libc/sysdeps/x86_64/bits/byteswap-16.h49
31 files changed, 83 insertions, 434 deletions
diff --git a/libc/sysdeps/i386/Implies b/libc/sysdeps/i386/Implies
index 3a32442d6..20b2dffc2 100644
--- a/libc/sysdeps/i386/Implies
+++ b/libc/sysdeps/i386/Implies
@@ -1,3 +1,4 @@
+x86
wordsize-32
ieee754/ldbl-96
ieee754/dbl-64
diff --git a/libc/sysdeps/i386/bits/byteswap.h b/libc/sysdeps/i386/bits/byteswap.h
deleted file mode 100644
index 354281638..000000000
--- a/libc/sysdeps/i386/bits/byteswap.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Macros to swap the order of bytes in integer values.
- 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
-# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
-#endif
-
-#ifndef _BITS_BYTESWAP_H
-#define _BITS_BYTESWAP_H 1
-
-/* Swap bytes in 16 bit value. */
-#define __bswap_constant_16(x) \
- ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
-
-/* Get __bswap_16. */
-#include <bits/byteswap-16.h>
-
-/* Swap bytes in 32 bit value. */
-#define __bswap_constant_32(x) \
- ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
- (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
-
-#ifdef __GNUC__
-# if __GNUC__ >= 2
-/* To swap the bytes in a word the i486 processors and up provide the
- `bswap' opcode. On i386 we have to use three instructions. */
-# if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__ \
- && !defined __pentium4__ && !defined __k8__ && !defined __athlon__ \
- && !defined __k6__ && !defined __nocona__ && !defined __core2__ \
- && !defined __geode__ && !defined __amdfam10__
-# define __bswap_32(x) \
- (__extension__ \
- ({ register unsigned int __v, __x = (x); \
- if (__builtin_constant_p (__x)) \
- __v = __bswap_constant_32 (__x); \
- else \
- __asm__ ("rorw $8, %w0;" \
- "rorl $16, %0;" \
- "rorw $8, %w0" \
- : "=r" (__v) \
- : "0" (__x) \
- : "cc"); \
- __v; }))
-# else
-# define __bswap_32(x) \
- (__extension__ \
- ({ register unsigned int __v, __x = (x); \
- if (__builtin_constant_p (__x)) \
- __v = __bswap_constant_32 (__x); \
- else \
- __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \
- __v; }))
-# endif
-# else
-# define __bswap_32(x) \
- (__extension__ \
- ({ register unsigned int __x = (x); __bswap_constant_32 (__x); }))
-# endif
-#else
-static __inline unsigned int
-__bswap_32 (unsigned int __bsx)
-{
- return __bswap_constant_32 (__bsx);
-}
-#endif
-
-
-#if defined __GNUC__ && __GNUC__ >= 2
-/* Swap bytes in 64 bit value. */
-# define __bswap_constant_64(x) \
- (__extension__ ((((x) & 0xff00000000000000ull) >> 56) \
- | (((x) & 0x00ff000000000000ull) >> 40) \
- | (((x) & 0x0000ff0000000000ull) >> 24) \
- | (((x) & 0x000000ff00000000ull) >> 8) \
- | (((x) & 0x00000000ff000000ull) << 8) \
- | (((x) & 0x0000000000ff0000ull) << 24) \
- | (((x) & 0x000000000000ff00ull) << 40) \
- | (((x) & 0x00000000000000ffull) << 56)))
-
-# define __bswap_64(x) \
- (__extension__ \
- ({ union { __extension__ unsigned long long int __ll; \
- unsigned long int __l[2]; } __w, __r; \
- if (__builtin_constant_p (x)) \
- __r.__ll = __bswap_constant_64 (x); \
- else \
- { \
- __w.__ll = (x); \
- __r.__l[0] = __bswap_32 (__w.__l[1]); \
- __r.__l[1] = __bswap_32 (__w.__l[0]); \
- } \
- __r.__ll; }))
-#elif __GLIBC_HAVE_LONG_LONG
-# define __bswap_constant_64(x) \
- ((((x) & 0xff00000000000000ull) >> 56) \
- | (((x) & 0x00ff000000000000ull) >> 40) \
- | (((x) & 0x0000ff0000000000ull) >> 24) \
- | (((x) & 0x000000ff00000000ull) >> 8) \
- | (((x) & 0x00000000ff000000ull) << 8) \
- | (((x) & 0x0000000000ff0000ull) << 24) \
- | (((x) & 0x000000000000ff00ull) << 40) \
- | (((x) & 0x00000000000000ffull) << 56))
-
-static __inline unsigned long long int
-__bswap_64 (unsigned long long int __bsx)
-{
- return __bswap_constant_64 (__bsx);
-}
-#endif
-
-#endif /* _BITS_BYTESWAP_H */
diff --git a/libc/sysdeps/i386/bits/endian.h b/libc/sysdeps/i386/bits/endian.h
deleted file mode 100644
index 54bd9d14b..000000000
--- a/libc/sysdeps/i386/bits/endian.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* i386 is little-endian. */
-
-#ifndef _ENDIAN_H
-# error "Never use <bits/endian.h> directly; include <endian.h> instead."
-#endif
-
-#define __BYTE_ORDER __LITTLE_ENDIAN
diff --git a/libc/sysdeps/i386/bits/link.h b/libc/sysdeps/i386/bits/link.h
deleted file mode 100644
index 1a6d51a46..000000000
--- a/libc/sysdeps/i386/bits/link.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _LINK_H
-# error "Never include <bits/link.h> directly; use <link.h> instead."
-#endif
-
-
-/* Registers for entry into PLT on IA-32. */
-typedef struct La_i86_regs
-{
- uint32_t lr_edx;
- uint32_t lr_ecx;
- uint32_t lr_eax;
- uint32_t lr_ebp;
- uint32_t lr_esp;
-} La_i86_regs;
-
-/* Return values for calls from PLT on IA-32. */
-typedef struct La_i86_retval
-{
- uint32_t lrv_eax;
- uint32_t lrv_edx;
- long double lrv_st0;
- long double lrv_st1;
-} La_i86_retval;
-
-
-__BEGIN_DECLS
-
-extern Elf32_Addr la_i86_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
- uintptr_t *__refcook,
- uintptr_t *__defcook,
- La_i86_regs *__regs,
- unsigned int *__flags,
- const char *__symname,
- long int *__framesizep);
-extern unsigned int la_i86_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
- uintptr_t *__refcook,
- uintptr_t *__defcook,
- const La_i86_regs *__inregs,
- La_i86_retval *__outregs,
- const char *__symname);
-
-__END_DECLS
diff --git a/libc/sysdeps/i386/bits/linkmap.h b/libc/sysdeps/i386/bits/linkmap.h
deleted file mode 100644
index 978d52621..000000000
--- a/libc/sysdeps/i386/bits/linkmap.h
+++ /dev/null
@@ -1,6 +0,0 @@
-struct link_map_machine
- {
- Elf32_Addr plt; /* Address of .plt + 0x16 */
- Elf32_Addr gotplt; /* Address of .got + 0x0c */
- void *tlsdesc_table; /* Address of TLS descriptor hash table. */
- };
diff --git a/libc/sysdeps/i386/bits/mathdef.h b/libc/sysdeps/i386/bits/mathdef.h
deleted file mode 100644
index efb46def4..000000000
--- a/libc/sysdeps/i386/bits/mathdef.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright (C) 1997, 1998, 1999, 2000, 2004, 2010 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#if !defined _MATH_H && !defined _COMPLEX_H
-# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
-#endif
-
-#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
-# define _MATH_H_MATHDEF 1
-
-# if defined __FLT_EVAL_METHOD__ && __FLT_EVAL_METHOD__ == 0
-/* When using -mfpmath=sse, values are computed with the precission of the
- used type. */
-typedef float float_t; /* `float' expressions are evaluated as `float'. */
-typedef double double_t; /* `double' expressions are evaluated as
- `double'. */
-# else
-/* The ix87 FPUs evaluate all values in the 80 bit floating-point format
- which is also available for the user as `long double'. Therefore we
- define: */
-typedef long double float_t; /* `float' expressions are evaluated as
- `long double'. */
-typedef long double double_t; /* `double' expressions are evaluated as
- `long double'. */
-# endif
-
-/* The values returned by `ilogb' for 0 and NaN respectively. */
-# define FP_ILOGB0 (-2147483647 - 1)
-# define FP_ILOGBNAN (-2147483647 - 1)
-
-/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
- builtins are supported. */
-# if __FP_FAST_FMA
-# define FP_FAST_FMA 1
-# endif
-
-# if __FP_FAST_FMAF
-# define FP_FAST_FMAF 1
-# endif
-
-# if __FP_FAST_FMAL
-# define FP_FAST_FMAL 1
-# endif
-
-#endif /* ISO C99 */
diff --git a/libc/sysdeps/i386/bits/select.h b/libc/sysdeps/i386/bits/select.h
deleted file mode 100644
index 868404763..000000000
--- a/libc/sysdeps/i386/bits/select.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (C) 1997, 1998, 1999, 2001, 2011 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _SYS_SELECT_H
-# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
-#endif
-
-
-#if defined __GNUC__ && __GNUC__ >= 2
-# define __FD_ZERO(fdsp) \
- do { \
- int __d0, __d1; \
- __asm__ __volatile__ ("cld; rep; stosl" \
- : "=c" (__d0), "=D" (__d1) \
- : "a" (0), "0" (sizeof (fd_set) \
- / sizeof (__fd_mask)), \
- "1" (&__FDS_BITS (fdsp)[0]) \
- : "memory"); \
- } while (0)
-
-#else /* ! GNU CC */
-
-/* We don't use `memset' because this would require a prototype and
- the array isn't too big. */
-# define __FD_ZERO(set) \
- do { \
- unsigned int __i; \
- fd_set *__arr = (set); \
- for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
- __FDS_BITS (__arr)[__i] = 0; \
- } while (0)
-
-#endif /* GNU CC */
-
-#define __FD_SET(d, set) \
- ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d)))
-#define __FD_CLR(d, set) \
- ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d)))
-#define __FD_ISSET(d, set) \
- ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
diff --git a/libc/sysdeps/i386/bits/setjmp.h b/libc/sysdeps/i386/bits/setjmp.h
deleted file mode 100644
index dc065ce39..000000000
--- a/libc/sysdeps/i386/bits/setjmp.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 1997,1998,2000,2001,2003,2005,2006
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-/* Define the machine-dependent type `jmp_buf'. Intel 386 version. */
-#ifndef _BITS_SETJMP_H
-#define _BITS_SETJMP_H 1
-
-#if !defined _SETJMP_H && !defined _PTHREAD_H
-# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
-#endif
-
-#ifndef _ASM
-typedef int __jmp_buf[6];
-#endif
-
-#endif /* bits/setjmp.h */
diff --git a/libc/sysdeps/mach/hurd/connect.c b/libc/sysdeps/mach/hurd/connect.c
index 92d3e4c9c..b5c57ccbe 100644
--- a/libc/sysdeps/mach/hurd/connect.c
+++ b/libc/sysdeps/mach/hurd/connect.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992,94,95,96,97,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1992-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,8 +23,6 @@
#include <sys/un.h>
#include <hurd/ifsock.h>
-#undef __connect
-
/* Open a connection on socket FD to peer at ADDR (which LEN bytes long).
For connectionless socket types, just set the default address to send to
and the only address from which to accept transmissions.
@@ -73,5 +71,5 @@ __connect (int fd, __CONST_SOCKADDR_ARG addrarg, socklen_t len)
return err ? __hurd_dfail (fd, err) : 0;
}
-INTDEF(__connect)
+libc_hidden_def (__connect)
weak_alias (__connect, connect)
diff --git a/libc/sysdeps/sparc/sparc32/soft-fp/q_util.c b/libc/sysdeps/sparc/sparc32/soft-fp/q_util.c
index c4efc10bf..47e34c7c5 100644
--- a/libc/sysdeps/sparc/sparc32/soft-fp/q_util.c
+++ b/libc/sysdeps/sparc/sparc32/soft-fp/q_util.c
@@ -19,25 +19,44 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <float.h>
+#include <math.h>
+#include <assert.h>
#include "soft-fp.h"
unsigned long long ___Q_zero = 0x0000000000000000ULL;
void ___Q_simulate_exceptions(int exceptions)
{
- 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);
+ if (exceptions & FP_EX_INVALID)
+ {
+ float f = 0.0;
+ __asm__ __volatile__ ("fdivs %0, %0, %0" : "+f" (f));
+ }
+ if (exceptions & FP_EX_DIVZERO)
+ {
+ float f = 1.0, g = 0.0;
+ __asm__ __volatile__ ("fdivs %0, %1, %0"
+ : "+f" (f)
+ : "f" (g));
+ }
+ if (exceptions & FP_EX_OVERFLOW)
+ {
+ float f = FLT_MAX;
+ __asm__ __volatile__("fmuls %0, %0, %0" : "+f" (f));
+ exceptions &= ~FP_EX_INEXACT;
+ }
+ if (exceptions & FP_EX_UNDERFLOW)
+ {
+ float f = FLT_MIN;
+ __asm__ __volatile__("fmuls %0, %0, %0" : "+f" (f));
+ exceptions &= ~FP_EX_INEXACT;
+ }
+ if (exceptions & FP_EX_INEXACT)
+ {
+ double d = 1.0, e = M_PI;
+ __asm__ __volatile__ ("fdivd %0, %1, %0"
+ : "+f" (d)
+ : "f" (e));
+ }
}
diff --git a/libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h b/libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
index 4314082f7..e60f1cada 100644
--- a/libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
+++ b/libc/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
@@ -1,6 +1,6 @@
/* Machine-dependent software floating-point definitions.
Sparc userland (_Q_*) version.
- Copyright (C) 1997,1998,1999, 2002, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999,2002,2006,2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz) and
@@ -192,6 +192,7 @@ do { \
_FPU_GETCW(_fcw); \
} while (0)
+#define FP_TRAPPING_EXCEPTIONS ((_fcw >> 23) & 0x1f)
#define FP_INHIBIT_RESULTS ((_fcw >> 23) & _fex)
/* Simulate exceptions using double arithmetics. */
diff --git a/libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c b/libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c
index 358d0e4ec..4a1280b07 100644
--- a/libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c
+++ b/libc/sysdeps/sparc/sparc64/soft-fp/qp_util.c
@@ -19,23 +19,42 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <float.h>
+#include <math.h>
+#include <assert.h>
#include "soft-fp.h"
void __Qp_handle_exceptions(int exceptions)
{
- 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);
+ if (exceptions & FP_EX_INVALID)
+ {
+ float f = 0.0;
+ __asm__ __volatile__ ("fdivs %0, %0, %0" : "+f" (f));
+ }
+ if (exceptions & FP_EX_DIVZERO)
+ {
+ float f = 1.0, g = 0.0;
+ __asm__ __volatile__ ("fdivs %0, %1, %0"
+ : "+f" (f)
+ : "f" (g));
+ }
+ if (exceptions & FP_EX_OVERFLOW)
+ {
+ float f = FLT_MAX;
+ __asm__ __volatile__("fmuls %0, %0, %0" : "+f" (f));
+ exceptions &= ~FP_EX_INEXACT;
+ }
+ if (exceptions & FP_EX_UNDERFLOW)
+ {
+ float f = FLT_MIN;
+ __asm__ __volatile__("fmuls %0, %0, %0" : "+f" (f));
+ exceptions &= ~FP_EX_INEXACT;
+ }
+ if (exceptions & FP_EX_INEXACT)
+ {
+ double d = 1.0, e = M_PI;
+ __asm__ __volatile__ ("fdivd %0, %1, %0"
+ : "+f" (d)
+ : "f" (e));
+ }
}
diff --git a/libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h b/libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h
index 36f92d64f..9bd4298c9 100644
--- a/libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h
+++ b/libc/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h
@@ -1,6 +1,6 @@
/* Machine-dependent software floating-point definitions.
Sparc64 userland (_Q_* and _Qp_*) version.
- Copyright (C) 1997, 1998, 1999, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999, 2006, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz) and
@@ -100,6 +100,7 @@ do { \
_FPU_GETCW(_fcw); \
} while (0)
+#define FP_TRAPPING_EXCEPTIONS ((_fcw >> 23) & 0x1f)
#define FP_INHIBIT_RESULTS ((_fcw >> 23) & _fex)
/* Simulate exceptions using double arithmetics. */
diff --git a/libc/sysdeps/unix/inet/syscalls.list b/libc/sysdeps/unix/inet/syscalls.list
index df2f34eea..aafafd1df 100644
--- a/libc/sysdeps/unix/inet/syscalls.list
+++ b/libc/sysdeps/unix/inet/syscalls.list
@@ -2,7 +2,7 @@
accept - accept Ci:iBN __libc_accept accept
bind - bind i:ipi __bind bind
-connect - connect Ci:ipi __libc_connect __connect __connect_internal connect
+connect - connect Ci:ipi __libc_connect __connect connect
gethostid - gethostid i: gethostid
gethostname - gethostname i:bn __gethostname gethostname
getpeername - getpeername i:ibN __getpeername getpeername
diff --git a/libc/sysdeps/unix/sysv/linux/connect.S b/libc/sysdeps/unix/sysv/linux/connect.S
index 7d1fa12b3..21fc4a64c 100644
--- a/libc/sysdeps/unix/sysv/linux/connect.S
+++ b/libc/sysdeps/unix/sysv/linux/connect.S
@@ -3,5 +3,5 @@
#define NARGS 3
#define NEED_CANCELLATION
#include <socket.S>
-strong_alias (__libc_connect, __connect_internal)
weak_alias (__libc_connect, __connect)
+libc_hidden_weak (__connect)
diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list b/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
index 791ab9ba5..b826c5d07 100644
--- a/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
+++ b/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
@@ -18,7 +18,7 @@ semctl - semctl i:iiii __semctl semctl
# proper socket implementations:
accept - accept Ci:iBN __libc_accept __accept accept
bind - bind i:ipi __bind bind
-connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
+connect - connect Ci:ipi __libc_connect __connect connect
getpeername - getpeername i:ipp __getpeername getpeername
getsockname - getsockname i:ipp __getsockname getsockname
getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
diff --git a/libc/sysdeps/unix/sysv/linux/sa_len.c b/libc/sysdeps/unix/sysv/linux/sa_len.c
index fdd721018..9ff87dc6f 100644
--- a/libc/sysdeps/unix/sysv/linux/sa_len.c
+++ b/libc/sysdeps/unix/sysv/linux/sa_len.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2002, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1998-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
@@ -60,4 +60,4 @@ __libc_sa_len (sa_family_t af)
}
return 0;
}
-INTDEF(__libc_sa_len)
+libc_hidden_def (__libc_sa_len)
diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/syscalls.list b/libc/sysdeps/unix/sysv/linux/x86_64/syscalls.list
index ccddb8422..2e4135f50 100644
--- a/libc/sysdeps/unix/sysv/linux/x86_64/syscalls.list
+++ b/libc/sysdeps/unix/sysv/linux/x86_64/syscalls.list
@@ -20,7 +20,7 @@ syscall_clock_gettime EXTRA clock_gettime Ei:ip __syscall_clock_gettime
# proper socket implementations:
accept - accept Ci:iBN __libc_accept __accept accept
bind - bind i:ipi __bind bind
-connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
+connect - connect Ci:ipi __libc_connect __connect connect
getpeername - getpeername i:ipp __getpeername getpeername
getsockname - getsockname i:ipp __getsockname getsockname
getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
diff --git a/libc/sysdeps/i386/bits/byteswap-16.h b/libc/sysdeps/x86/bits/byteswap-16.h
index 584eb86b7..584eb86b7 100644
--- a/libc/sysdeps/i386/bits/byteswap-16.h
+++ b/libc/sysdeps/x86/bits/byteswap-16.h
diff --git a/libc/sysdeps/x86_64/bits/byteswap.h b/libc/sysdeps/x86/bits/byteswap.h
index 417843933..417843933 100644
--- a/libc/sysdeps/x86_64/bits/byteswap.h
+++ b/libc/sysdeps/x86/bits/byteswap.h
diff --git a/libc/sysdeps/x86_64/bits/endian.h b/libc/sysdeps/x86/bits/endian.h
index 2f59eada2..5a56c726f 100644
--- a/libc/sysdeps/x86_64/bits/endian.h
+++ b/libc/sysdeps/x86/bits/endian.h
@@ -1,4 +1,4 @@
-/* x86_64 is little-endian. */
+/* i386/x86_64 are little-endian. */
#ifndef _ENDIAN_H
# error "Never use <bits/endian.h> directly; include <endian.h> instead."
diff --git a/libc/sysdeps/i386/bits/huge_vall.h b/libc/sysdeps/x86/bits/huge_vall.h
index 7e9c24d8a..7e9c24d8a 100644
--- a/libc/sysdeps/i386/bits/huge_vall.h
+++ b/libc/sysdeps/x86/bits/huge_vall.h
diff --git a/libc/sysdeps/x86_64/bits/link.h b/libc/sysdeps/x86/bits/link.h
index fa2091085..fa2091085 100644
--- a/libc/sysdeps/x86_64/bits/link.h
+++ b/libc/sysdeps/x86/bits/link.h
diff --git a/libc/sysdeps/x86_64/bits/linkmap.h b/libc/sysdeps/x86/bits/linkmap.h
index dd0d14087..dd0d14087 100644
--- a/libc/sysdeps/x86_64/bits/linkmap.h
+++ b/libc/sysdeps/x86/bits/linkmap.h
diff --git a/libc/sysdeps/x86_64/bits/mathdef.h b/libc/sysdeps/x86/bits/mathdef.h
index c202ad592..c202ad592 100644
--- a/libc/sysdeps/x86_64/bits/mathdef.h
+++ b/libc/sysdeps/x86/bits/mathdef.h
diff --git a/libc/sysdeps/x86_64/bits/select.h b/libc/sysdeps/x86/bits/select.h
index 439a914bf..439a914bf 100644
--- a/libc/sysdeps/x86_64/bits/select.h
+++ b/libc/sysdeps/x86/bits/select.h
diff --git a/libc/sysdeps/x86_64/bits/setjmp.h b/libc/sysdeps/x86/bits/setjmp.h
index bb6920d44..bb6920d44 100644
--- a/libc/sysdeps/x86_64/bits/setjmp.h
+++ b/libc/sysdeps/x86/bits/setjmp.h
diff --git a/libc/sysdeps/x86_64/bits/wordsize.h b/libc/sysdeps/x86/bits/wordsize.h
index e25af287e..e25af287e 100644
--- a/libc/sysdeps/x86_64/bits/wordsize.h
+++ b/libc/sysdeps/x86/bits/wordsize.h
diff --git a/libc/sysdeps/x86_64/bits/xtitypes.h b/libc/sysdeps/x86/bits/xtitypes.h
index 853c09080..853c09080 100644
--- a/libc/sysdeps/x86_64/bits/xtitypes.h
+++ b/libc/sysdeps/x86/bits/xtitypes.h
diff --git a/libc/sysdeps/x86_64/Implies b/libc/sysdeps/x86_64/Implies
index c8d7d2d91..811c19a8f 100644
--- a/libc/sysdeps/x86_64/Implies
+++ b/libc/sysdeps/x86_64/Implies
@@ -1,3 +1,4 @@
+x86
ieee754/ldbl-96
ieee754/dbl-64/wordsize-64
ieee754/dbl-64
diff --git a/libc/sysdeps/x86_64/bits/byteswap-16.h b/libc/sysdeps/x86_64/bits/byteswap-16.h
deleted file mode 100644
index 584eb86b7..000000000
--- a/libc/sysdeps/x86_64/bits/byteswap-16.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Macros to swap the order of bytes in 16-bit integer values.
- Copyright (C) 2012 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _BITS_BYTESWAP_H
-# error "Never use <bits/byteswap-16.h> directly; include <byteswap.h> instead."
-#endif
-
-#ifdef __GNUC__
-# if __GNUC__ >= 2
-# define __bswap_16(x) \
- (__extension__ \
- ({ register unsigned short int __v, __x = (unsigned short int) (x); \
- if (__builtin_constant_p (__x)) \
- __v = __bswap_constant_16 (__x); \
- else \
- __asm__ ("rorw $8, %w0" \
- : "=r" (__v) \
- : "0" (__x) \
- : "cc"); \
- __v; }))
-# else
-/* This is better than nothing. */
-# define __bswap_16(x) \
- (__extension__ \
- ({ register unsigned short int __x = (unsigned short int) (x); \
- __bswap_constant_16 (__x); }))
-# endif
-#else
-static __inline unsigned short int
-__bswap_16 (unsigned short int __bsx)
-{
- return __bswap_constant_16 (__bsx);
-}
-#endif