[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r22427 - in /fsf/trunk/libc: ./ csu/ debug/ elf/ include/ misc/sys/ ports/ ports/sysdeps/am33/ ports/sysdeps/arm/ ports/sysd...



Author: eglibc
Date: Thu Feb 14 00:01:50 2013
New Revision: 22427

Log:
Import glibc-mainline for 2013-02-14

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/csu/libc-start.c
    fsf/trunk/libc/debug/backtrace.c
    fsf/trunk/libc/elf/dl-runtime.c
    fsf/trunk/libc/include/libc-symbols.h
    fsf/trunk/libc/include/set-hooks.h
    fsf/trunk/libc/misc/sys/cdefs.h
    fsf/trunk/libc/ports/ChangeLog.aarch64
    fsf/trunk/libc/ports/ChangeLog.alpha
    fsf/trunk/libc/ports/ChangeLog.am33
    fsf/trunk/libc/ports/ChangeLog.arm
    fsf/trunk/libc/ports/ChangeLog.mips
    fsf/trunk/libc/ports/sysdeps/am33/dl-machine.h
    fsf/trunk/libc/ports/sysdeps/arm/frame.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sigaction.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/alpha/sigaction.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/am33/brk.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/sigaction.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstat64.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/sigaction.c
    fsf/trunk/libc/stdio-common/vfprintf.c
    fsf/trunk/libc/stdlib/Makefile
    fsf/trunk/libc/string/mempcpy.c
    fsf/trunk/libc/string/strcpy.c
    fsf/trunk/libc/sysdeps/generic/frame.h
    fsf/trunk/libc/sysdeps/gnu/bits/msq.h
    fsf/trunk/libc/sysdeps/i386/dl-machine.h
    fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpa.c
    fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpexp.c
    fsf/trunk/libc/sysdeps/powerpc/powerpc32/backtrace.c
    fsf/trunk/libc/sysdeps/powerpc/powerpc64/backtrace.c
    fsf/trunk/libc/sysdeps/sparc/backtrace.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/aio_sigqueue.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/fxstat.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/fxstatat.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/gai_sigqueue.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/brk.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fxstat.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fxstatat.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/lxstat.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/msgctl.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/setrlimit.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/shmctl.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sigaction.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/xstat.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/llseek.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/lxstat.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/mmap64.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/msgctl.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/msgrcv.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/libc-start.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/ptrace.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/semctl.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/shmat.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/shmctl.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/shmdt.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sigaction.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sigqueue.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sysctl.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/xstat.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Thu Feb 14 00:01:50 2013
@@ -1,3 +1,105 @@
+2013-02-13  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #13550]
+	* misc/sys/cdefs.h [!__BOUNDED_POINTERS__]: Remove conditional
+	code.
+	* csu/libc-start.c (LIBC_START_MAIN): Do not use __unbounded in
+	prototype or function definition.  Rename ubp_* variables and
+	parameters.  Remove argv definitions conditional on
+	[__BOUNDED_POINTERS__].
+	* debug/backtrace.c (__backtrace): Do not use __unbounded.
+	* elf/dl-runtime.c (_dl_fixup): Likewise.
+	* include/set-hooks.h (RUN_HOOK): Likewise.
+	* stdio-common/vfprintf.c (JUMP): Do not use __unbounded in either
+	definition.
+	* string/strcpy.c (strcpy): Do not use __unbounded.
+	* sysdeps/generic/frame.h (struct layout): Likewise.
+	* sysdeps/gnu/bits/msq.h (struct msqid_ds): Likewise.
+	* sysdeps/i386/dl-machine.h (_dl_fixup): Likewise.
+	* sysdeps/powerpc/powerpc32/backtrace.c (struct layout): Likewise.
+	* sysdeps/powerpc/powerpc64/backtrace.c (struct layout): Likewise.
+	* sysdeps/sparc/backtrace.c (struct layout): Likewise.
+	(__backtrace): Likewise.
+	* sysdeps/unix/sysv/linux/aio_sigqueue.c (__aio_sigqueue): Do not
+	use __ptrvalue.
+	* sysdeps/unix/sysv/linux/fxstat.c (__fxstat): Likewise.
+	* sysdeps/unix/sysv/linux/fxstatat.c (__fxstatat): Likewise.
+	* sysdeps/unix/sysv/linux/gai_sigqueue.c (__gai_sigqueue):
+	Likewise.
+	* sysdeps/unix/sysv/linux/i386/brk.c (__brk): Likewise.
+	* sysdeps/unix/sysv/linux/i386/fxstat.c (__fxstat): Likewise.
+	* sysdeps/unix/sysv/linux/i386/fxstatat.c (__fxstatat): Likewise.
+	* sysdeps/unix/sysv/linux/i386/lxstat.c (__lxstat): Likewise.
+	* sysdeps/unix/sysv/linux/i386/msgctl.c (struct __old_msqid_ds):
+	Do not use __unbounded.
+	* sysdeps/unix/sysv/linux/i386/setrlimit.c (__new_setrlimit):
+	Rename __unboundedrlimits parameter to rlimits in prototype.
+	* sysdeps/unix/sysv/linux/i386/shmctl.c (struct __old_shmid_ds):
+	Do not use __unbounded.
+	* sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): Do
+	not use __ptrvalue.
+	* sysdeps/unix/sysv/linux/i386/xstat.c (__xstat): Likewise.
+	* sysdeps/unix/sysv/linux/llseek.c (__llseek): Likewise.
+	* sysdeps/unix/sysv/linux/lxstat.c (__lxstat): Likewise.
+	* sysdeps/unix/sysv/linux/mmap64.c (__mmap64): Do not use
+	__ptrvalue or __unbounded.
+	(__mmap64) [__BOUNDED_POINTERS__]: Remove conditional code.
+	* sysdeps/unix/sysv/linux/msgctl.c (struct __old_msqid_ds): Do not
+	use __unbounded.
+	(__new_msgctl): Do not use __ptrvalue.
+	* sysdeps/unix/sysv/linux/msgrcv.c (struct ipc_kludge): Do not use
+	__unbounded.
+	(__libc_msgrcv): Do not use __ptrvalue.
+	* sysdeps/unix/sysv/linux/powerpc/libc-start.c (struct
+	startup_info): Do not use __unbounded.
+	(__libc_start_main): Likewise.  Rename ubp_* variables and
+	parameters.  Remove argv definitions conditional on
+	[__BOUNDED_POINTERS__].
+	* sysdeps/unix/sysv/linux/ptrace.c (ptrace): Do not use
+	__ptrvalue.
+	* sysdeps/unix/sysv/linux/semctl.c (struct __old_semid_ds): Do not
+	use __unbounded.
+	* sysdeps/unix/sysv/linux/shmat.c (shmat): Do not use __unbounded
+	or __ptrvalue.
+	* sysdeps/unix/sysv/linux/shmctl.c (struct __old_shmid_ds): Do not
+	use __unbounded.
+	(__new_shmctl): Do not use __ptrvalue.
+	* sysdeps/unix/sysv/linux/shmdt.c (shmdt): Likewise.
+	* sysdeps/unix/sysv/linux/sigaction.c (__libc_sigaction):
+	Likewise.
+	* sysdeps/unix/sysv/linux/sigqueue.c (__sigqueue): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
+	(__libc_sigaction): Likewise.
+	* sysdeps/unix/sysv/linux/sysctl.c (__sysctl): Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/sigaction.c (__libc_sigaction):
+	Likewise.
+	* sysdeps/unix/sysv/linux/xstat.c (__xstat): Likewise.
+
+2013-02-13   OndÃÂej BÃÂlka  <neleai@xxxxxxxxx>
+
+	* stdlib/Makefile (headers): Add bits/stdlib-bsearch.h.
+
+	* string/mempcpy.c: Implement by calling memcpy.
+
+2013-02-13  Siddhesh Poyarekar  <siddhesh@xxxxxxxxxx>
+
+	* sysdeps/ieee754/dbl-64/mpexp.c (__mpexp): Remove NFA.
+
+	* sysdeps/ieee754/dbl-64/mpexp.c (__mpexp): Faster polynomial
+	evaluation.
+
+	* sysdeps/ieee754/dbl-64/mpa.c (__mul): Don't bother with zero
+	values in the mantissa.
+
+	* sysdeps/ieee754/dbl-64/mpa.c (add_magnitudes): Use ZK to
+	minimize writes to Z.
+	(sub_magnitudes): Simplify code a bit.
+
+2013-02-12  Roland McGrath  <roland@xxxxxxxxxxxxx>
+
+	* include/libc-symbols.h (stub_warning): Remove "warning: " prefix
+	from the message.  The linker prefixes all warnings with that already.
+
 2013-02-12  Andreas Schwab  <schwab@xxxxxxx>
 
 	[BZ #15078]

Modified: fsf/trunk/libc/csu/libc-start.c
==============================================================================
--- fsf/trunk/libc/csu/libc-start.c (original)
+++ fsf/trunk/libc/csu/libc-start.c Thu Feb 14 00:01:50 2013
@@ -101,14 +101,14 @@
 STATIC int LIBC_START_MAIN (int (*main) (int, char **, char **
 					 MAIN_AUXVEC_DECL),
 			    int argc,
-			    char *__unbounded *__unbounded ubp_av,
+			    char **argv,
 #ifdef LIBC_START_MAIN_AUXVEC_ARG
-			    ElfW(auxv_t) *__unbounded auxvec,
+			    ElfW(auxv_t) *auxvec,
 #endif
 			    __typeof (main) init,
 			    void (*fini) (void),
 			    void (*rtld_fini) (void),
-			    void *__unbounded stack_end)
+			    void *stack_end)
      __attribute__ ((noreturn));
 
 
@@ -117,29 +117,23 @@
    finalizers were called in more than one place.  */
 STATIC int
 LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
-		 int argc, char *__unbounded *__unbounded ubp_av,
+		 int argc, char **argv,
 #ifdef LIBC_START_MAIN_AUXVEC_ARG
-		 ElfW(auxv_t) *__unbounded auxvec,
+		 ElfW(auxv_t) *auxvec,
 #endif
 		 __typeof (main) init,
 		 void (*fini) (void),
-		 void (*rtld_fini) (void), void *__unbounded stack_end)
+		 void (*rtld_fini) (void), void *stack_end)
 {
-#if __BOUNDED_POINTERS__
-  char **argv;
-#else
-# define argv ubp_av
-#endif
-
   /* Result of the 'main' function.  */
   int result;
 
   __libc_multiple_libcs = &_dl_starting_up && !_dl_starting_up;
 
 #ifndef SHARED
-  char *__unbounded *__unbounded ubp_ev = &ubp_av[argc + 1];
-
-  __environ = ubp_ev;
+  char **ev = &argv[argc + 1];
+
+  __environ = ev;
 
   /* Store the lowest stack address.  This is done in ld.so if this is
      the code for the DSO.  */
@@ -149,12 +143,12 @@
   /* First process the auxiliary vector since we need to find the
      program header to locate an eventually present PT_TLS entry.  */
 #  ifndef LIBC_START_MAIN_AUXVEC_ARG
-  ElfW(auxv_t) *__unbounded auxvec;
+  ElfW(auxv_t) *auxvec;
   {
-    char *__unbounded *__unbounded evp = ubp_ev;
+    char **evp = ev;
     while (*evp++ != NULL)
       ;
-    auxvec = (ElfW(auxv_t) *__unbounded) evp;
+    auxvec = (ElfW(auxv_t) *) evp;
   }
 #  endif
   _dl_aux_init (auxvec);

Modified: fsf/trunk/libc/debug/backtrace.c
==============================================================================
--- fsf/trunk/libc/debug/backtrace.c (original)
+++ fsf/trunk/libc/debug/backtrace.c Thu Feb 14 00:01:50 2013
@@ -63,8 +63,8 @@
      int size;
 {
   struct layout *current;
-  void *__unbounded top_frame;
-  void *__unbounded top_stack;
+  void *top_frame;
+  void *top_stack;
   int cnt = 0;
 
   top_frame = FIRST_FRAME_POINTER;

Modified: fsf/trunk/libc/elf/dl-runtime.c
==============================================================================
--- fsf/trunk/libc/elf/dl-runtime.c (original)
+++ fsf/trunk/libc/elf/dl-runtime.c Thu Feb 14 00:01:50 2013
@@ -62,9 +62,7 @@
 # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
 	   ELF_MACHINE_RUNTIME_FIXUP_ARGS,
 # endif
-	   /* GKM FIXME: Fix trampoline to pass bounds so we can do
-	      without the `__unbounded' qualifier.  */
-	   struct link_map *__unbounded l, ElfW(Word) reloc_arg)
+	   struct link_map *l, ElfW(Word) reloc_arg)
 {
   const ElfW(Sym) *const symtab
     = (const void *) D_PTR (l, l_info[DT_SYMTAB]);

Modified: fsf/trunk/libc/include/libc-symbols.h
==============================================================================
--- fsf/trunk/libc/include/libc-symbols.h (original)
+++ fsf/trunk/libc/include/libc-symbols.h Thu Feb 14 00:01:50 2013
@@ -228,8 +228,7 @@
 /* A canned warning for sysdeps/stub functions.  */
 #define	stub_warning(name) \
   __make_section_unallocated (".gnu.glibc-stub." #name) \
-  link_warning (name, \
-		"warning: " #name " is not implemented and will always fail")
+  link_warning (name, #name " is not implemented and will always fail")
 
 /* Warning for linking functions calling dlopen into static binaries.  */
 #ifdef SHARED

Modified: fsf/trunk/libc/include/set-hooks.h
==============================================================================
--- fsf/trunk/libc/include/set-hooks.h (original)
+++ fsf/trunk/libc/include/set-hooks.h Thu Feb 14 00:01:50 2013
@@ -41,7 +41,7 @@
 
 # define RUN_HOOK(NAME, ARGS)						      \
 do {									      \
-  void *const *__unbounded ptr;						      \
+  void *const *ptr;						      \
   for (ptr = (void *const *) symbol_set_first_element (NAME);		      \
        ! symbol_set_end_p (NAME, ptr); ++ptr)				      \
     (*(__##NAME##_hook_function_t *) *ptr) ARGS;			      \

Modified: fsf/trunk/libc/misc/sys/cdefs.h
==============================================================================
--- fsf/trunk/libc/misc/sys/cdefs.h (original)
+++ fsf/trunk/libc/misc/sys/cdefs.h Thu Feb 14 00:01:50 2013
@@ -125,14 +125,6 @@
 # define __BEGIN_NAMESPACE_C99
 # define __END_NAMESPACE_C99
 # define __USING_NAMESPACE_C99(name)
-#endif
-
-
-/* Support for bounded pointers.  */
-#ifndef __BOUNDED_POINTERS__
-# define __bounded	/* nothing */
-# define __unbounded	/* nothing */
-# define __ptrvalue	/* nothing */
 #endif
 
 

Modified: fsf/trunk/libc/ports/ChangeLog.aarch64
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.aarch64 (original)
+++ fsf/trunk/libc/ports/ChangeLog.aarch64 Thu Feb 14 00:01:50 2013
@@ -1,3 +1,9 @@
+2013-02-13  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #13550]
+	* sysdeps/unix/sysv/linux/aarch64/sigaction.c (__libc_sigaction):
+	Do not use __ptrvalue.
+
 2013-02-08  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	[BZ #13550]

Modified: fsf/trunk/libc/ports/ChangeLog.alpha
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.alpha (original)
+++ fsf/trunk/libc/ports/ChangeLog.alpha Thu Feb 14 00:01:50 2013
@@ -1,3 +1,9 @@
+2013-02-13  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #13550]
+	* sysdeps/unix/sysv/linux/alpha/sigaction.c
+	(__syscall_rt_sigaction): Do not use __unbounded in prototype.
+
 2013-02-08  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	[BZ #13550]

Modified: fsf/trunk/libc/ports/ChangeLog.am33
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.am33 (original)
+++ fsf/trunk/libc/ports/ChangeLog.am33 Thu Feb 14 00:01:50 2013
@@ -1,3 +1,10 @@
+2013-02-13  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #13550]
+	* sysdeps/am33/dl-machine.h (fixup): Do not use __unbounded.
+	* sysdeps/unix/sysv/linux/am33/brk.c (__brk): Do not use
+	__ptrvalue.
+
 2013-01-02  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* All files with FSF copyright notices: Update copyright dates

Modified: fsf/trunk/libc/ports/ChangeLog.arm
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.arm (original)
+++ fsf/trunk/libc/ports/ChangeLog.arm Thu Feb 14 00:01:50 2013
@@ -1,3 +1,10 @@
+2013-02-13  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #13550]
+	* sysdeps/arm/frame.h (struct layout): Do not use __unbounded.
+	* sysdeps/unix/sysv/linux/arm/sigaction.c (__libc_sigaction): Do
+	not use __ptrvalue.
+
 2013-02-08  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	[BZ #13550]

Modified: fsf/trunk/libc/ports/ChangeLog.mips
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.mips (original)
+++ fsf/trunk/libc/ports/ChangeLog.mips Thu Feb 14 00:01:50 2013
@@ -1,3 +1,17 @@
+2013-02-13  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #13550]
+	* sysdeps/unix/sysv/linux/mips/mips64/fxstat64.c (__fxstat64): Do
+	not use __ptrvalue.
+	* sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c (__fxstatat64):
+	Likewise.
+	* sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c (__lxstat64):
+	Likewise.
+	* sysdeps/unix/sysv/linux/mips/mips64/xstat64.c (__xstat64):
+	Likewise.
+	* sysdeps/unix/sysv/linux/mips/sigaction.c (__libc_sigaction):
+	Likewise.
+
 2013-02-11  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/mips/include/sys/asm.h: New file.

Modified: fsf/trunk/libc/ports/sysdeps/am33/dl-machine.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/am33/dl-machine.h (original)
+++ fsf/trunk/libc/ports/sysdeps/am33/dl-machine.h Thu Feb 14 00:01:50 2013
@@ -62,9 +62,7 @@
 
    We cannot use this scheme for profiling because the _mcount call
    destroys the passed register information.  */
-/* GKM FIXME: Fix trampoline to pass bounds so we can do
-   without the `__unbounded' qualifier.  */
-static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset)
+static ElfW(Addr) fixup (struct link_map *l, ElfW(Word) reloc_offset)
      __attribute__ ((unused));
 static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset,
 				 ElfW(Addr) retaddr)

Modified: fsf/trunk/libc/ports/sysdeps/arm/frame.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/arm/frame.h (original)
+++ fsf/trunk/libc/ports/sysdeps/arm/frame.h Thu Feb 14 00:01:50 2013
@@ -19,9 +19,9 @@
 /* This is the APCS stack backtrace structure.  */
 struct layout
 {
-  struct layout *__unbounded next;
-  void *__unbounded sp;
-  void *__unbounded return_address;
+  struct layout *next;
+  void *sp;
+  void *return_address;
 };
 
 #define FIRST_FRAME_POINTER ADVANCE_STACK_FRAME (__builtin_frame_address (0))

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sigaction.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sigaction.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/aarch64/sigaction.c Thu Feb 14 00:01:50 2013
@@ -51,8 +51,8 @@
     }
 
   result = INLINE_SYSCALL (rt_sigaction, 4, sig,
-			   act ? __ptrvalue (&kact) : NULL,
-			   oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
+			   act ? &kact : NULL,
+			   oact ? &koact : NULL, _NSIG / 8);
   if (result >= 0 || errno != ENOSYS)
     {
       if (oact && result >= 0)

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/alpha/sigaction.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/alpha/sigaction.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/alpha/sigaction.c Thu Feb 14 00:01:50 2013
@@ -32,7 +32,7 @@
          : INLINE_SYSCALL1(name, nr, args))
 
 struct kernel_sigaction;
-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
-				   struct kernel_sigaction *__unbounded, size_t);
+extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *,
+				   struct kernel_sigaction *, size_t);
 
 #include <sysdeps/unix/sysv/linux/sigaction.c>

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/am33/brk.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/am33/brk.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/am33/brk.c Thu Feb 14 00:01:50 2013
@@ -30,7 +30,7 @@
 {
   void *newbrk;
 
-  newbrk = INLINE_SYSCALL (brk, 1, __ptrvalue (addr));
+  newbrk = INLINE_SYSCALL (brk, 1, addr);
 
   __curbrk = newbrk;
 

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/sigaction.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/sigaction.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/sigaction.c Thu Feb 14 00:01:50 2013
@@ -83,8 +83,8 @@
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.  */
   result = INLINE_SYSCALL (rt_sigaction, 4, sig,
-			   act ? __ptrvalue (&kact) : NULL,
-			   oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
+			   act ? &kact : NULL,
+			   oact ? &koact : NULL, _NSIG / 8);
 
   if (oact && result >= 0)
     {

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstat64.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstat64.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstat64.c Thu Feb 14 00:01:50 2013
@@ -34,7 +34,7 @@
   int result;
   struct kernel_stat kbuf;
 
-  result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
+  result = INLINE_SYSCALL (fstat, 2, fd, &kbuf);
   if (result == 0)
     result = __xstat64_conv (vers, &kbuf, buf);
 

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c Thu Feb 14 00:01:50 2013
@@ -95,9 +95,9 @@
     }
 
   if (flag & AT_SYMLINK_NOFOLLOW)
-    result = INTERNAL_SYSCALL (lstat, err, 2, file, __ptrvalue (&kst));
+    result = INTERNAL_SYSCALL (lstat, err, 2, file, &kst);
   else
-    result = INTERNAL_SYSCALL (stat, err, 2, file, __ptrvalue (&kst));
+    result = INTERNAL_SYSCALL (stat, err, 2, file, &kst);
 
   if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
     return __xstat64_conv (vers, &kst, st);

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c Thu Feb 14 00:01:50 2013
@@ -33,7 +33,7 @@
   int result;
   struct kernel_stat kbuf;
 
-  result = INLINE_SYSCALL (lstat, 2, name, __ptrvalue (&kbuf));
+  result = INLINE_SYSCALL (lstat, 2, name, &kbuf);
   if (result == 0)
     result = __xstat64_conv (vers, &kbuf, buf);
 

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c Thu Feb 14 00:01:50 2013
@@ -34,7 +34,7 @@
   int result;
   struct kernel_stat kbuf;
 
-  result = INLINE_SYSCALL (stat, 2, name, __ptrvalue (&kbuf));
+  result = INLINE_SYSCALL (stat, 2, name, &kbuf);
   if (result == 0)
     result = __xstat64_conv (vers, &kbuf, buf);
 

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/sigaction.c
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/sigaction.c (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/sigaction.c Thu Feb 14 00:01:50 2013
@@ -71,8 +71,8 @@
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.	*/
   result = INLINE_SYSCALL (rt_sigaction, 4, sig,
-			   act ? __ptrvalue (&kact) : NULL,
-			   oact ? __ptrvalue (&koact) : NULL,
+			   act ? &kact : NULL,
+			   oact ? &koact : NULL,
 			   sizeof (kernel_sigset_t));
 
   if (oact && result >= 0)

Modified: fsf/trunk/libc/stdio-common/vfprintf.c
==============================================================================
--- fsf/trunk/libc/stdio-common/vfprintf.c (original)
+++ fsf/trunk/libc/stdio-common/vfprintf.c Thu Feb 14 00:01:50 2013
@@ -302,7 +302,7 @@
       do								      \
 	{								      \
 	  int offset;							      \
-	  void *__unbounded ptr;					      \
+	  void *ptr;							      \
 	  spec = (ChExpr);						      \
 	  offset = NOT_IN_JUMP_RANGE (spec) ? REF (form_unknown)	      \
 	    : table[CHAR_CLASS (spec)];					      \
@@ -315,7 +315,7 @@
 # define JUMP(ChExpr, table)						      \
       do								      \
 	{								      \
-	  const void *__unbounded ptr;					      \
+	  const void *ptr;						      \
 	  spec = (ChExpr);						      \
 	  ptr = NOT_IN_JUMP_RANGE (spec) ? REF (form_unknown)		      \
 	    : table[CHAR_CLASS (spec)];					      \

Modified: fsf/trunk/libc/stdlib/Makefile
==============================================================================
--- fsf/trunk/libc/stdlib/Makefile (original)
+++ fsf/trunk/libc/stdlib/Makefile Thu Feb 14 00:01:50 2013
@@ -25,7 +25,8 @@
 	   inttypes.h stdint.h bits/wordsize.h				      \
 	   errno.h sys/errno.h bits/errno.h				      \
 	   ucontext.h sys/ucontext.h					      \
-	   alloca.h fmtmsg.h
+	   alloca.h fmtmsg.h						      \
+	   bits/stdlib-bsearch.h
 
 routines	:=							      \
 	atof atoi atol atoll						      \

Modified: fsf/trunk/libc/string/mempcpy.c
==============================================================================
--- fsf/trunk/libc/string/mempcpy.c (original)
+++ fsf/trunk/libc/string/mempcpy.c Thu Feb 14 00:01:50 2013
@@ -20,48 +20,14 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <string.h>
-#include <memcopy.h>
-#include <pagecopy.h>
 
 #undef mempcpy
 #undef __mempcpy
 
 void *
-__mempcpy (dstpp, srcpp, len)
-     void *dstpp;
-     const void *srcpp;
-     size_t len;
+__mempcpy (void *dest, const void *src, size_t len)
 {
-  unsigned long int dstp = (long int) dstpp;
-  unsigned long int srcp = (long int) srcpp;
-
-  /* Copy from the beginning to the end.  */
-
-  /* If there not too few bytes to copy, use word copy.  */
-  if (len >= OP_T_THRES)
-    {
-      /* Copy just a few bytes to make DSTP aligned.  */
-      len -= (-dstp) % OPSIZ;
-      BYTE_COPY_FWD (dstp, srcp, (-dstp) % OPSIZ);
-
-      /* Copy whole pages from SRCP to DSTP by virtual address manipulation,
-	 as much as possible.  */
-
-      PAGE_COPY_FWD_MAYBE (dstp, srcp, len, len);
-
-      /* Copy from SRCP to DSTP taking advantage of the known alignment of
-	 DSTP.  Number of bytes remaining is put in the third argument,
-	 i.e. in LEN.  This number may vary from machine to machine.  */
-
-      WORD_COPY_FWD (dstp, srcp, len, len);
-
-      /* Fall out and copy the tail.  */
-    }
-
-  /* There are just a few bytes to copy.  Use byte memory operations.  */
-  BYTE_COPY_FWD (dstp, srcp, len);
-
-  return (void *) dstp;
+  return memcpy (dest, src, len) + len;
 }
 libc_hidden_def (__mempcpy)
 weak_alias (__mempcpy, mempcpy)

Modified: fsf/trunk/libc/string/strcpy.c
==============================================================================
--- fsf/trunk/libc/string/strcpy.c (original)
+++ fsf/trunk/libc/string/strcpy.c Thu Feb 14 00:01:50 2013
@@ -28,7 +28,7 @@
      const char *src;
 {
   char c;
-  char *__unbounded s = (char *__unbounded) src;
+  char *s = (char *) src;
   const ptrdiff_t off = dest - s - 1;
 
   do

Modified: fsf/trunk/libc/sysdeps/generic/frame.h
==============================================================================
--- fsf/trunk/libc/sysdeps/generic/frame.h (original)
+++ fsf/trunk/libc/sysdeps/generic/frame.h Thu Feb 14 00:01:50 2013
@@ -18,6 +18,6 @@
 
 struct layout
 {
-  void *__unbounded next;
-  void *__unbounded return_address;
+  void *next;
+  void *return_address;
 };

Modified: fsf/trunk/libc/sysdeps/gnu/bits/msq.h
==============================================================================
--- fsf/trunk/libc/sysdeps/gnu/bits/msq.h (original)
+++ fsf/trunk/libc/sysdeps/gnu/bits/msq.h Thu Feb 14 00:01:50 2013
@@ -38,13 +38,13 @@
 struct msqid_ds
 {
   struct ipc_perm msg_perm;	/* structure describing operation permission */
-  struct msg *__unbounded __msg_first; /* pointer to first message on queue */
-  struct msg *__unbounded __msg_last; /* pointer to last message on queue */
+  struct msg *__msg_first;	/* pointer to first message on queue */
+  struct msg *__msg_last;	/* pointer to last message on queue */
   __time_t msg_stime;		/* time of last msgsnd command */
   __time_t msg_rtime;		/* time of last msgrcv command */
   __time_t msg_ctime;		/* time of last change */
-  struct wait_queue *__unbounded __wwait; /* ??? */
-  struct wait_queue *__unbounded __rwait; /* ??? */
+  struct wait_queue *__wwait;	/* ??? */
+  struct wait_queue *__rwait;	/* ??? */
   unsigned short int __msg_cbytes;/* current number of bytes on queue */
   msgqnum_t msg_qnum;		/* number of messages currently on queue */
   msglen_t msg_qbytes;		/* max number of bytes allowed on queue */

Modified: fsf/trunk/libc/sysdeps/i386/dl-machine.h
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/dl-machine.h (original)
+++ fsf/trunk/libc/sysdeps/i386/dl-machine.h Thu Feb 14 00:01:50 2013
@@ -151,11 +151,9 @@
 
    We cannot use this scheme for profiling because the _mcount call
    destroys the passed register information.  */
-/* GKM FIXME: Fix trampoline to pass bounds so we can do
-   without the `__unbounded' qualifier.  */
 #define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), stdcall, unused))
 
-extern ElfW(Addr) _dl_fixup (struct link_map *__unbounded l,
+extern ElfW(Addr) _dl_fixup (struct link_map *l,
 			     ElfW(Word) reloc_offset)
      ARCH_FIXUP_ATTRIBUTE;
 extern ElfW(Addr) _dl_profile_fixup (struct link_map *l,

Modified: fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpa.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpa.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpa.c Thu Feb 14 00:01:50 2013
@@ -370,6 +370,7 @@
 add_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p)
 {
   int i, j, k;
+  double zk;
 
   EZ = EX;
 
@@ -377,45 +378,54 @@
   j = p + EY - EX;
   k = p + 1;
 
-  if (j < 1)
+  if (__glibc_unlikely (j < 1))
     {
       __cpy (x, z, p);
       return;
     }
-  else
-    Z[k] = ZERO;
+
+  zk = ZERO;
 
   for (; j > 0; i--, j--)
     {
-      Z[k] += X[i] + Y[j];
-      if (Z[k] >= RADIX)
-	{
-	  Z[k] -= RADIX;
-	  Z[--k] = ONE;
-	}
-      else
-	Z[--k] = ZERO;
+      zk += X[i] + Y[j];
+      if (zk >= RADIX)
+	{
+	  Z[k--] = zk - RADIX;
+	  zk = ONE;
+	}
+      else
+        {
+	  Z[k--] = zk;
+	  zk = ZERO;
+	}
     }
 
   for (; i > 0; i--)
     {
-      Z[k] += X[i];
-      if (Z[k] >= RADIX)
-	{
-	  Z[k] -= RADIX;
-	  Z[--k] = ONE;
-	}
-      else
-	Z[--k] = ZERO;
-    }
-
-  if (Z[1] == ZERO)
+      zk += X[i];
+      if (zk >= RADIX)
+	{
+	  Z[k--] = zk - RADIX;
+	  zk = ONE;
+	}
+      else
+        {
+	  Z[k--] = zk;
+	  zk = ZERO;
+	}
+    }
+
+  if (zk == ZERO)
     {
       for (i = 1; i <= p; i++)
 	Z[i] = Z[i + 1];
     }
   else
-    EZ += ONE;
+    {
+      Z[1] = zk;
+      EZ += ONE;
+    }
 }
 
 /* Subtract the magnitudes of *X and *Y assuming that abs (*x) > abs (*y) > 0.
@@ -427,65 +437,63 @@
 sub_magnitudes (const mp_no *x, const mp_no *y, mp_no *z, int p)
 {
   int i, j, k;
+  double zk;
 
   EZ = EX;
-
-  if (EX == EY)
-    {
-      i = j = k = p;
-      Z[k] = Z[k + 1] = ZERO;
-    }
-  else
-    {
-      j = EX - EY;
-      if (j > p)
-	{
-	  __cpy (x, z, p);
-	  return;
-	}
-      else
-	{
-	  i = p;
-	  j = p + 1 - j;
-	  k = p;
-	  if (Y[j] > ZERO)
-	    {
-	      Z[k + 1] = RADIX - Y[j--];
-	      Z[k] = MONE;
-	    }
-	  else
-	    {
-	      Z[k + 1] = ZERO;
-	      Z[k] = ZERO;
-	      j--;
-	    }
-	}
-    }
-
+  i = p;
+  j = p + EY - EX;
+  k = p;
+
+  /* Y is too small compared to X, copy X over to the result.  */
+  if (__glibc_unlikely (j < 1))
+    {
+      __cpy (x, z, p);
+      return;
+    }
+
+  /* The relevant least significant digit in Y is non-zero, so we factor it in
+     to enhance accuracy.  */
+  if (j < p && Y[j + 1] > ZERO)
+    {
+      Z[k + 1] = RADIX - Y[j + 1];
+      zk = MONE;
+    }
+  else
+    zk = Z[k + 1] = ZERO;
+
+  /* Subtract and borrow.  */
   for (; j > 0; i--, j--)
     {
-      Z[k] += (X[i] - Y[j]);
-      if (Z[k] < ZERO)
-	{
-	  Z[k] += RADIX;
-	  Z[--k] = MONE;
-	}
-      else
-	Z[--k] = ZERO;
-    }
-
+      zk += (X[i] - Y[j]);
+      if (zk < ZERO)
+	{
+	  Z[k--] = zk + RADIX;
+	  zk = MONE;
+	}
+      else
+        {
+	  Z[k--] = zk;
+	  zk = ZERO;
+	}
+    }
+
+  /* We're done with digits from Y, so it's just digits in X.  */
   for (; i > 0; i--)
     {
-      Z[k] += X[i];
-      if (Z[k] < ZERO)
-	{
-	  Z[k] += RADIX;
-	  Z[--k] = MONE;
-	}
-      else
-	Z[--k] = ZERO;
-    }
-
+      zk += X[i];
+      if (zk < ZERO)
+	{
+	  Z[k--] = zk + RADIX;
+	  zk = MONE;
+	}
+      else
+        {
+	  Z[k--] = zk;
+	  zk = ZERO;
+	}
+    }
+
+  /* Normalize.  */
   for (i = 1; Z[i] == ZERO; i++);
   EZ = EZ - i + 1;
   for (k = 1; i <= p + 1;)
@@ -602,7 +610,7 @@
 SECTION
 __mul (const mp_no *x, const mp_no *y, mp_no *z, int p)
 {
-  int i, j, k, k2;
+  int i, j, k, ip, ip2;
   double u, zk;
 
   /* Is z=0?  */
@@ -612,11 +620,51 @@
       return;
     }
 
-  /* Multiply, add and carry.  */
-  k2 = (__glibc_unlikely (p < 3)) ? p + p : p + 3;
-  zk = Z[k2] = ZERO;
-
-  for (k = k2; k > p; k--)
+  /* We need not iterate through all X's and Y's since it's pointless to
+     multiply zeroes.  Here, both are zero...  */
+  for (ip2 = p; ip2 > 0; ip2--)
+    if (X[ip2] != ZERO || Y[ip2] != ZERO)
+      break;
+
+  /* ... and here, at least one of them is still zero.  */
+  for (ip = ip2; ip > 0; ip--)
+    if (X[ip] * Y[ip] != ZERO)
+      break;
+
+  /* The product looks like this for p = 3 (as an example):
+
+
+				a1    a2    a3
+		 x		b1    b2    b3
+		 -----------------------------
+			     a1*b3 a2*b3 a3*b3
+		       a1*b2 a2*b2 a3*b2
+		 a1*b1 a2*b1 a3*b1
+
+     So our K needs to ideally be P*2, but we're limiting ourselves to P + 3
+     for P >= 3.  We compute the above digits in two parts; the last P-1
+     digits and then the first P digits.  The last P-1 digits are a sum of
+     products of the input digits from P to P-k where K is 0 for the least
+     significant digit and increases as we go towards the left.  The product
+     term is of the form X[k]*X[P-k] as can be seen in the above example.
+
+     The first P digits are also a sum of products with the same product term,
+     except that the sum is from 1 to k.  This is also evident from the above
+     example.
+
+     Another thing that becomes evident is that only the most significant
+     ip+ip2 digits of the result are non-zero, where ip and ip2 are the
+     'internal precision' of the input numbers, i.e. digits after ip and ip2
+     are all ZERO.  */
+
+  k = (__glibc_unlikely (p < 3)) ? p + p : p + 3;
+
+  while (k > ip + ip2 + 1)
+    Z[k--] = ZERO;
+
+  zk = Z[k] = ZERO;
+
+  while (k > p)
     {
       for (i = k - p, j = p; i < p + 1; i++, j--)
 	zk += X[i] * Y[j];
@@ -624,10 +672,11 @@
       u = (zk + CUTTER) - CUTTER;
       if (u > zk)
 	u -= RADIX;
-      Z[k] = zk - u;
+      Z[k--] = zk - u;
       zk = u * RADIXI;
     }
 
+  /* The real deal.  */
   while (k > 1)
     {
       for (i = 1, j = k - 1; i < k; i++, j--)
@@ -636,9 +685,8 @@
       u = (zk + CUTTER) - CUTTER;
       if (u > zk)
 	u -= RADIX;
-      Z[k] = zk - u;
+      Z[k--] = zk - u;
       zk = u * RADIXI;
-      k--;
     }
   Z[k] = zk;
 

Modified: fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpexp.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpexp.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/dbl-64/mpexp.c Thu Feb 14 00:01:50 2013
@@ -49,6 +49,7 @@
       0, 0, 0, 0, 3, 3, 4, 4, 5, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6,
       6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8
     };
+
   static const int m1p[33] =
     {
       0, 0, 0, 0,
@@ -71,16 +72,7 @@
       {0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 39, 43, 47, 51, 55, 59, 63},
       {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 47, 50, 54}
     };
-  mp_no mpk =
-    {
-      0,
-      {
-	0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
-	0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
-	0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
-      }
-    };
-  mp_no mps, mpak, mpt1, mpt2;
+  mp_no mps, mpk, mpt1, mpt2;
 
   /* Choose m,n and compute a=2**(-m).  */
   n = np[p];
@@ -115,24 +107,39 @@
 	  break;
     }
 
-  /* Compute s=x*2**(-m). Put result in mps.  */
+  /* Compute s=x*2**(-m). Put result in mps.  This is the range-reduced input
+     that we will use to compute e^s.  For the final result, simply raise it
+     to 2^m.  */
   __pow_mp (-m, &mpt1, p);
   __mul (x, &mpt1, &mps, p);
 
-  /* Evaluate the polynomial. Put result in mpt2.  */
-  mpk.e = 1;
-  mpk.d[0] = ONE;
-  mpk.d[1] = n;
-  __dvd (&mps, &mpk, &mpt1, p);
-  __add (&mpone, &mpt1, &mpak, p);
-  for (k = n - 1; k > 1; k--)
+  /* Compute the Taylor series for e^s:
+
+         1 + x/1! + x^2/2! + x^3/3! ...
+
+     for N iterations.  We compute this as:
+
+         e^x = 1 + (x * n!/1! + x^2 * n!/2! + x^3 * n!/3!) / n!
+             = 1 + (x * (n!/1! + x * (n!/2! + x * (n!/3! + x ...)))) / n!
+
+     k! is computed on the fly as KF and at the end of the polynomial loop, KF
+     is n!, which can be used directly.  */
+  __cpy (&mps, &mpt2, p);
+
+  double kf = 1.0;
+
+  /* Evaluate the rest.  The result will be in mpt2.  */
+  for (k = n - 1; k > 0; k--)
     {
-      __mul (&mps, &mpak, &mpt1, p);
-      mpk.d[1] = k;
-      __dvd (&mpt1, &mpk, &mpt2, p);
-      __add (&mpone, &mpt2, &mpak, p);
+      /* n! / k! = n * (n - 1) ... * (n - k + 1) */
+      kf *= k + 1;
+
+      __dbl_mp (kf, &mpk, p);
+      __add (&mpt2, &mpk, &mpt1, p);
+      __mul (&mps, &mpt1, &mpt2, p);
     }
-  __mul (&mps, &mpak, &mpt1, p);
+  __dbl_mp (kf, &mpk, p);
+  __dvd (&mpt2, &mpk, &mpt1, p);
   __add (&mpone, &mpt1, &mpt2, p);
 
   /* Raise polynomial value to the power of 2**m. Put result in y.  */

Modified: fsf/trunk/libc/sysdeps/powerpc/powerpc32/backtrace.c
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/powerpc32/backtrace.c (original)
+++ fsf/trunk/libc/sysdeps/powerpc/powerpc32/backtrace.c Thu Feb 14 00:01:50 2013
@@ -31,8 +31,8 @@
 */
 struct layout
 {
-  struct layout *__unbounded next;
-  void *__unbounded return_address;
+  struct layout *next;
+  void *return_address;
 };
 
 int

Modified: fsf/trunk/libc/sysdeps/powerpc/powerpc64/backtrace.c
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/powerpc64/backtrace.c (original)
+++ fsf/trunk/libc/sysdeps/powerpc/powerpc64/backtrace.c Thu Feb 14 00:01:50 2013
@@ -33,9 +33,9 @@
 */
 struct layout
 {
-  struct layout *__unbounded next;
+  struct layout *next;
   long condition_register;
-  void *__unbounded return_address;
+  void *return_address;
 };
 
 int

Modified: fsf/trunk/libc/sysdeps/sparc/backtrace.c
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/backtrace.c (original)
+++ fsf/trunk/libc/sysdeps/sparc/backtrace.c Thu Feb 14 00:01:50 2013
@@ -30,7 +30,7 @@
   unsigned long locals[8];
   unsigned long ins[6];
   unsigned long next;
-  void *__unbounded return_address;
+  void *return_address;
 };
 
 struct trace_arg
@@ -127,9 +127,9 @@
 
       asm volatile ("mov %%fp, %0" : "=r"(fp));
       asm volatile ("mov %%i7, %0" : "=r"(i7));
-      current = (struct layout *__unbounded) (fp + BACKTRACE_STACK_BIAS);
+      current = (struct layout *) (fp + BACKTRACE_STACK_BIAS);
 
-      array[0] = (void *__unbounded) i7;
+      array[0] = (void *) i7;
 
       if (size == 1)
 	return 1;
@@ -140,8 +140,7 @@
 	  array[count] = current->return_address;
 	  if (!current->next)
 	    break;
-	  current = (struct layout *__unbounded) (current->next
-						  + BACKTRACE_STACK_BIAS);
+	  current = (struct layout *) (current->next + BACKTRACE_STACK_BIAS);
 	}
     }
   else

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/aio_sigqueue.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/aio_sigqueue.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/aio_sigqueue.c Thu Feb 14 00:01:50 2013
@@ -47,8 +47,7 @@
   info.si_uid = getuid ();
   info.si_value = val;
 
-  return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid,
-			 sig, __ptrvalue (&info));
+  return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
 }
 #else
 # include <rt/aio_sigqueue.c>

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/fxstat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/fxstat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/fxstat.c Thu Feb 14 00:01:50 2013
@@ -45,7 +45,7 @@
   struct kernel_stat kbuf;
   int result;
 
-  result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
+  result = INLINE_SYSCALL (fstat, 2, fd, &kbuf);
   if (result == 0)
     result = __xstat_conv (vers, &kbuf, buf);
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/fxstatat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/fxstatat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/fxstatat.c Thu Feb 14 00:01:50 2013
@@ -125,9 +125,9 @@
     }
 #else
   if (flag & AT_SYMLINK_NOFOLLOW)
-    result = INTERNAL_SYSCALL (lstat, err, 2, file, __ptrvalue (&kst));
+    result = INTERNAL_SYSCALL (lstat, err, 2, file, &kst);
   else
-    result = INTERNAL_SYSCALL (stat, err, 2, file, __ptrvalue (&kst));
+    result = INTERNAL_SYSCALL (stat, err, 2, file, &kst);
 
   if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
     return __xstat_conv (vers, &kst, st);

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/gai_sigqueue.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/gai_sigqueue.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/gai_sigqueue.c Thu Feb 14 00:01:50 2013
@@ -47,8 +47,7 @@
   info.si_uid = __getuid ();
   info.si_value = val;
 
-  return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid,
-			 sig, __ptrvalue (&info));
+  return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
 }
 #else
 # include <resolv/gai_sigqueue.c>

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/brk.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/brk.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/brk.c Thu Feb 14 00:01:50 2013
@@ -31,11 +31,10 @@
 int
 __brk (void *addr)
 {
-  void *__unbounded newbrk;
+  void *newbrk;
 
   INTERNAL_SYSCALL_DECL (err);
-  newbrk = (void *__unbounded) INTERNAL_SYSCALL (brk, err, 1,
-						 __ptrvalue (addr));
+  newbrk = (void *) INTERNAL_SYSCALL (brk, err, 1, addr);
 
   __curbrk = newbrk;
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fxstat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fxstat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fxstat.c Thu Feb 14 00:01:50 2013
@@ -44,7 +44,7 @@
   {
     struct stat64 buf64;
 
-    result = INLINE_SYSCALL (fstat64, 2, fd, __ptrvalue (&buf64));
+    result = INLINE_SYSCALL (fstat64, 2, fd, &buf64);
     if (result == 0)
       result = __xstat32_conv (vers, &buf64, buf);
     return result;

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fxstatat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fxstatat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fxstatat.c Thu Feb 14 00:01:50 2013
@@ -110,9 +110,9 @@
     }
 
   if (flag & AT_SYMLINK_NOFOLLOW)
-    result = INTERNAL_SYSCALL (lstat64, err, 2, file, __ptrvalue (&st64));
+    result = INTERNAL_SYSCALL (lstat64, err, 2, file, &st64);
   else
-    result = INTERNAL_SYSCALL (stat64, err, 2, file, __ptrvalue (&st64));
+    result = INTERNAL_SYSCALL (stat64, err, 2, file, &st64);
   if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
     return __xstat32_conv (vers, &st64, st);
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/lxstat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/lxstat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/lxstat.c Thu Feb 14 00:01:50 2013
@@ -45,7 +45,7 @@
   {
     struct stat64 buf64;
 
-    result = INLINE_SYSCALL (lstat64, 2, name, __ptrvalue (&buf64));
+    result = INLINE_SYSCALL (lstat64, 2, name, &buf64);
     if (result == 0)
       result = __xstat32_conv (vers, &buf64, buf);
     return result;

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/msgctl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/msgctl.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/msgctl.c Thu Feb 14 00:01:50 2013
@@ -29,13 +29,13 @@
 struct __old_msqid_ds
 {
   struct __old_ipc_perm msg_perm;	/* structure describing operation permission */
-  struct msg *__unbounded __msg_first;	/* pointer to first message on queue */
-  struct msg *__unbounded __msg_last;	/* pointer to last message on queue */
+  struct msg *__msg_first;		/* pointer to first message on queue */
+  struct msg *__msg_last;		/* pointer to last message on queue */
   __time_t msg_stime;			/* time of last msgsnd command */
   __time_t msg_rtime;			/* time of last msgrcv command */
   __time_t msg_ctime;			/* time of last change */
-  struct wait_queue *__unbounded __wwait; /* ??? */
-  struct wait_queue *__unbounded __rwait; /* ??? */
+  struct wait_queue *__wwait;		/* ??? */
+  struct wait_queue *__rwait;		/* ??? */
   unsigned short int __msg_cbytes;	/* current number of bytes on queue */
   unsigned short int msg_qnum;		/* number of messages currently on queue */
   unsigned short int msg_qbytes;	/* max number of bytes allowed on queue */

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/setrlimit.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/setrlimit.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/setrlimit.c Thu Feb 14 00:01:50 2013
@@ -24,7 +24,7 @@
 #include <shlib-compat.h>
 
 extern int __new_setrlimit (enum __rlimit_resource resource,
-			    const struct rlimit *__unboundedrlimits);
+			    const struct rlimit *rlimits);
 
 /* Consider moving to syscalls.list.  */
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/shmctl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/shmctl.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/shmctl.c Thu Feb 14 00:01:50 2013
@@ -38,8 +38,8 @@
   __ipc_pid_t shm_lpid;			/* pid of last shmop */
   unsigned short int shm_nattch;	/* number of current attaches */
   unsigned short int __shm_npages;	/* size of segment (pages) */
-  unsigned long int *__unbounded __shm_pages; /* array of ptrs to frames -> SHMMAX */
-  struct vm_area_struct *__unbounded __attaches; /* descriptors for attaches */
+  unsigned long int *__shm_pages;	/* array of ptrs to frames -> SHMMAX */
+  struct vm_area_struct *__attaches;	/* descriptors for attaches */
 };
 
 struct __old_shminfo

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sigaction.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sigaction.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sigaction.c Thu Feb 14 00:01:50 2013
@@ -72,8 +72,8 @@
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.  */
   result = INLINE_SYSCALL (rt_sigaction, 4,
-			   sig, act ? __ptrvalue (&kact) : NULL,
-			   oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
+			   sig, act ? &kact : NULL,
+			   oact ? &koact : NULL, _NSIG / 8);
 
   if (oact && result >= 0)
     {

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/xstat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/xstat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/xstat.c Thu Feb 14 00:01:50 2013
@@ -45,7 +45,7 @@
   {
     struct stat64 buf64;
 
-    result = INLINE_SYSCALL (stat64, 2, name, __ptrvalue (&buf64));
+    result = INLINE_SYSCALL (stat64, 2, name, &buf64);
     if (result == 0)
       result = __xstat32_conv (vers, &buf64, buf);
     return result;

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/llseek.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/llseek.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/llseek.c Thu Feb 14 00:01:50 2013
@@ -32,7 +32,7 @@
 
   return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
 				   (off_t) (offset & 0xffffffff),
-				   __ptrvalue (&retval), whence) ?: retval);
+				   &retval, whence) ?: retval);
 }
 weak_alias (__llseek, llseek)
 strong_alias (__llseek, __libc_lseek64)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/lxstat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/lxstat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/lxstat.c Thu Feb 14 00:01:50 2013
@@ -44,7 +44,7 @@
   struct kernel_stat kbuf;
   int result;
 
-  result = INLINE_SYSCALL (lstat, 2, name, __ptrvalue (&kbuf));
+  result = INLINE_SYSCALL (lstat, 2, name, &kbuf);
   if (result == 0)
     result = __xstat_conv (vers, &kbuf, buf);
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/mmap64.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/mmap64.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/mmap64.c Thu Feb 14 00:01:50 2013
@@ -53,14 +53,10 @@
       return MAP_FAILED;
     }
   void *result;
-  __ptrvalue (result) = (void *__unbounded)
-    INLINE_SYSCALL (mmap2, 6, __ptrvalue (addr),
+  result = (void *)
+    INLINE_SYSCALL (mmap2, 6, addr,
 		    len, prot, flags, fd,
 		    (off_t) (offset >> MMAP2_PAGE_SHIFT));
-#if __BOUNDED_POINTERS__
-  __ptrlow (result) = __ptrvalue (result);
-  __ptrhigh (result) = __ptrvalue (result) + len;
-#endif
   return result;
 }
 weak_alias (__mmap64, mmap64)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/msgctl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/msgctl.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/msgctl.c Thu Feb 14 00:01:50 2013
@@ -30,13 +30,13 @@
 struct __old_msqid_ds
 {
   struct __old_ipc_perm msg_perm;	/* structure describing operation permission */
-  struct msg *__unbounded __msg_first;	/* pointer to first message on queue */
-  struct msg *__unbounded __msg_last;	/* pointer to last message on queue */
+  struct msg *__msg_first;		/* pointer to first message on queue */
+  struct msg *__msg_last;		/* pointer to last message on queue */
   __time_t msg_stime;			/* time of last msgsnd command */
   __time_t msg_rtime;			/* time of last msgrcv command */
   __time_t msg_ctime;			/* time of last change */
-  struct wait_queue *__unbounded __wwait; /* ??? */
-  struct wait_queue *__unbounded __rwait; /* ??? */
+  struct wait_queue *__wwait;		/* ??? */
+  struct wait_queue *__rwait;		/* ??? */
   unsigned short int __msg_cbytes;	/* current number of bytes on queue */
   unsigned short int msg_qnum;		/* number of messages currently on queue */
   unsigned short int msg_qbytes;	/* max number of bytes allowed on queue */
@@ -103,8 +103,7 @@
 	    return -1;
 	  }
       }
-    result = INLINE_SYSCALL (ipc, 5, IPCOP_msgctl,
-			     msqid, cmd, 0, __ptrvalue (&old));
+    result = INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, &old);
     if (result != -1 && cmd != IPC_SET)
       {
 	memset(buf, 0, sizeof(*buf));

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/msgrcv.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/msgrcv.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/msgrcv.c Thu Feb 14 00:01:50 2013
@@ -27,7 +27,7 @@
    arguments to a system call.  */
 struct ipc_kludge
   {
-    void *__unbounded msgp;
+    void *msgp;
     long int msgtyp;
   };
 
@@ -48,13 +48,12 @@
   tmp.msgtyp = msgtyp;
 
   if (SINGLE_THREAD_P)
-    return INLINE_SYSCALL (ipc, 5, IPCOP_msgrcv, msqid, msgsz, msgflg,
-			   __ptrvalue (&tmp));
+    return INLINE_SYSCALL (ipc, 5, IPCOP_msgrcv, msqid, msgsz, msgflg, &tmp);
 
   int oldtype = LIBC_CANCEL_ASYNC ();
 
   ssize_t result = INLINE_SYSCALL (ipc, 5, IPCOP_msgrcv, msqid, msgsz, msgflg,
-				   __ptrvalue (&tmp));
+				   &tmp);
 
    LIBC_CANCEL_RESET (oldtype);
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/libc-start.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/libc-start.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/libc-start.c Thu Feb 14 00:01:50 2013
@@ -33,7 +33,7 @@
 
 struct startup_info
   {
-    void *__unbounded sda_base;
+    void *sda_base;
     int (*main) (int, char **, char **, void *);
     int (*init) (int, char **, char **, void *);
     void (*fini) (void);
@@ -42,34 +42,28 @@
 int
 /* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the
    BPs in the arglist of startup_info.main and startup_info.init. */
-  BP_SYM (__libc_start_main) (int argc, char *__unbounded *__unbounded ubp_av,
-			      char *__unbounded *__unbounded ubp_ev,
-			      ElfW (auxv_t) * __unbounded auxvec,
+  BP_SYM (__libc_start_main) (int argc, char **argv,
+			      char **ev,
+			      ElfW (auxv_t) * auxvec,
 			      void (*rtld_fini) (void),
-			      struct startup_info *__unbounded stinfo,
-			      char *__unbounded *__unbounded stack_on_entry)
+			      struct startup_info *stinfo,
+			      char **stack_on_entry)
 {
-#if __BOUNDED_POINTERS__
-  char **argv;
-#else
-# define argv ubp_av
-#endif
-
   /* the PPC SVR4 ABI says that the top thing on the stack will
      be a NULL pointer, so if not we assume that we're being called
      as a statically-linked program by Linux...  */
   if (*stack_on_entry != NULL)
     {
-      char *__unbounded * __unbounded temp;
+      char **temp;
       /* ...in which case, we have argc as the top thing on the
          stack, followed by argv (NULL-terminated), envp (likewise),
          and the auxilary vector.  */
       /* 32/64-bit agnostic load from stack */
-      argc = *(long int *__unbounded) stack_on_entry;
-      ubp_av = stack_on_entry + 1;
-      ubp_ev = ubp_av + argc + 1;
+      argc = *(long int *) stack_on_entry;
+      argv = stack_on_entry + 1;
+      ev = argv + argc + 1;
 #ifdef HAVE_AUX_VECTOR
-      temp = ubp_ev;
+      temp = ev;
       while (*temp != NULL)
 	++temp;
       auxvec = (ElfW (auxv_t) *)++ temp;
@@ -86,7 +80,7 @@
 	break;
       }
 
-  return generic_start_main (stinfo->main, argc, ubp_av, auxvec,
+  return generic_start_main (stinfo->main, argc, argv, auxvec,
 			     stinfo->init, stinfo->fini, rtld_fini,
 			     stack_on_entry);
 }

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/ptrace.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/ptrace.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/ptrace.c Thu Feb 14 00:01:50 2013
@@ -42,8 +42,7 @@
   if (request > 0 && request < 4)
     data = &ret;
 
-  res = INLINE_SYSCALL (ptrace, 4, request, pid,
-			__ptrvalue (addr), __ptrvalue (data));
+  res = INLINE_SYSCALL (ptrace, 4, request, pid, addr, data);
   if (res >= 0 && request > 0 && request < 4)
     {
       __set_errno (0);

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/semctl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/semctl.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/semctl.c Thu Feb 14 00:01:50 2013
@@ -33,10 +33,10 @@
   struct __old_ipc_perm sem_perm;	/* operation permission struct */
   __time_t sem_otime;			/* last semop() time */
   __time_t sem_ctime;			/* last time changed by semctl() */
-  struct sem *__unbounded __sembase;	/* ptr to first semaphore in array */
-  struct sem_queue *__unbounded __sem_pending; /* pending operations */
-  struct sem_queue *__unbounded __sem_pending_last; /* last pending operation */
-  struct sem_undo *__unbounded __undo;	/* ondo requests on this array */
+  struct sem *__sembase;		/* ptr to first semaphore in array */
+  struct sem_queue *__sem_pending;	/* pending operations */
+  struct sem_queue *__sem_pending_last; /* last pending operation */
+  struct sem_undo *__undo;		/* ondo requests on this array */
   unsigned short int sem_nsems;		/* number of semaphores in set */
 };
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/shmat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/shmat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/shmat.c Thu Feb 14 00:01:50 2013
@@ -36,7 +36,7 @@
 {
   INTERNAL_SYSCALL_DECL(err);
   unsigned long resultvar;
-  void *__unbounded raddr;
+  void *raddr;
 
 #if __BOUNDED_POINTERS__
   size_t length = ~0;
@@ -49,8 +49,8 @@
 
   resultvar = INTERNAL_SYSCALL (ipc, err, 5, IPCOP_shmat,
 				shmid, shmflg,
-				(long int) __ptrvalue (&raddr),
-				__ptrvalue ((void *) shmaddr));
+				(long int) &raddr,
+				(void *) shmaddr);
   if (INTERNAL_SYSCALL_ERROR_P (resultvar, err))
     {
       __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, err));

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/shmctl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/shmctl.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/shmctl.c Thu Feb 14 00:01:50 2013
@@ -39,8 +39,8 @@
   __ipc_pid_t shm_lpid;			/* pid of last shmop */
   unsigned short int shm_nattch;	/* number of current attaches */
   unsigned short int __shm_npages;	/* size of segment (pages) */
-  unsigned long int *__unbounded __shm_pages; /* array of ptrs to frames -> SHMMAX */
-  struct vm_area_struct *__unbounded __attaches; /* descriptors for attaches */
+  unsigned long int *__shm_pages;	/* array of ptrs to frames -> SHMMAX */
+  struct vm_area_struct *__attaches;	/* descriptors for attaches */
 };
 
 struct __old_shminfo
@@ -115,8 +115,7 @@
 	    return -1;
 	  }
       }
-    result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0,
-			     __ptrvalue (&old.ds));
+    result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, &old.ds);
     if (result != -1 && (cmd == SHM_STAT || cmd == IPC_STAT))
       {
 	memset(buf, 0, sizeof(*buf));

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/shmdt.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/shmdt.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/shmdt.c Thu Feb 14 00:01:50 2013
@@ -30,5 +30,5 @@
 shmdt (shmaddr)
      const void *shmaddr;
 {
-  return INLINE_SYSCALL (ipc, 5, IPCOP_shmdt, 0, 0, 0, __ptrvalue ((void *) shmaddr));
+  return INLINE_SYSCALL (ipc, 5, IPCOP_shmdt, 0, 0, 0, (void *) shmaddr);
 }

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/sigaction.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sigaction.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sigaction.c Thu Feb 14 00:01:50 2013
@@ -55,8 +55,8 @@
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.  */
   result = INLINE_SYSCALL (rt_sigaction, 4, sig,
-			   act ? __ptrvalue (&kact) : NULL,
-			   oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
+			   act ? &kact : NULL,
+			   oact ? &koact : NULL, _NSIG / 8);
 
   if (oact && result >= 0)
     {

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/sigqueue.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sigqueue.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sigqueue.c Thu Feb 14 00:01:50 2013
@@ -43,7 +43,7 @@
   info.si_uid = __getuid ();
   info.si_value = val;
 
-  return INLINE_SYSCALL (rt_sigqueueinfo, 3, pid, sig, __ptrvalue (&info));
+  return INLINE_SYSCALL (rt_sigqueueinfo, 3, pid, sig, &info);
 }
 weak_alias (__sigqueue, sigqueue)
 #else

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c Thu Feb 14 00:01:50 2013
@@ -48,8 +48,8 @@
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.  */
   ret = INLINE_SYSCALL (rt_sigaction, 5, sig,
-			act ? __ptrvalue (&kact) : 0,
-			oact ? __ptrvalue (&koact) : 0, stub, _NSIG / 8);
+			act ? &kact : 0,
+			oact ? &koact : 0, stub, _NSIG / 8);
 
   if (oact && ret >= 0)
     {

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/sysctl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sysctl.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sysctl.c Thu Feb 14 00:01:50 2013
@@ -37,7 +37,7 @@
     .newlen = newlen
   };
 
-  return INLINE_SYSCALL (_sysctl, 1, __ptrvalue (&args));
+  return INLINE_SYSCALL (_sysctl, 1, &args);
 }
 libc_hidden_def (__sysctl)
 weak_alias (__sysctl, sysctl)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c Thu Feb 14 00:01:50 2013
@@ -62,8 +62,8 @@
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.  */
   result = INLINE_SYSCALL (rt_sigaction, 4,
-			   sig, act ? __ptrvalue (&kact) : NULL,
-			   oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
+			   sig, act ? &kact : NULL,
+			   oact ? &koact : NULL, _NSIG / 8);
   if (oact && result >= 0)
     {
       oact->sa_handler = koact.k_sa_handler;

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/xstat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/xstat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/xstat.c Thu Feb 14 00:01:50 2013
@@ -44,7 +44,7 @@
   struct kernel_stat kbuf;
   int result;
 
-  result = INLINE_SYSCALL (stat, 2, name, __ptrvalue (&kbuf));
+  result = INLINE_SYSCALL (stat, 2, name, &kbuf);
   if (result == 0)
     result = __xstat_conv (vers, &kbuf, buf);
 

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits