about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/libc-start.c14
-rw-r--r--sysdeps/generic/s_ctan.c16
-rw-r--r--sysdeps/generic/s_ctanf.c17
-rw-r--r--sysdeps/generic/s_ctanh.c16
-rw-r--r--sysdeps/generic/s_ctanhf.c16
-rw-r--r--sysdeps/generic/s_ctanhl.c16
-rw-r--r--sysdeps/generic/s_ctanl.c17
-rw-r--r--sysdeps/hppa/add_n.s12
-rw-r--r--sysdeps/hppa/hppa1.1/udiv_qrnnd.s20
-rw-r--r--sysdeps/hppa/lshift.s20
-rw-r--r--sysdeps/hppa/rshift.s20
-rw-r--r--sysdeps/hppa/setjmp.S22
-rw-r--r--sysdeps/hppa/sub_n.s12
-rw-r--r--sysdeps/hppa/udiv_qrnnd.s10
-rw-r--r--sysdeps/i386/dl-trampoline.S2
-rw-r--r--sysdeps/ia64/dl-trampoline.S4
-rw-r--r--sysdeps/powerpc/elf/libc-start.c1
-rw-r--r--sysdeps/powerpc/powerpc32/dl-trampoline.S2
-rw-r--r--sysdeps/powerpc/powerpc64/dl-trampoline.S45
-rw-r--r--sysdeps/s390/s390-32/dl-trampoline.S5
-rw-r--r--sysdeps/s390/s390-64/dl-trampoline.S2
-rw-r--r--sysdeps/unix/sysv/linux/bits/sched.h4
-rw-r--r--sysdeps/unix/sysv/linux/configure21
-rw-r--r--sysdeps/unix/sysv/linux/configure.in21
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/Makefile2
-rw-r--r--sysdeps/x86_64/dl-trampoline.S3
26 files changed, 191 insertions, 149 deletions
diff --git a/sysdeps/generic/libc-start.c b/sysdeps/generic/libc-start.c
index 3fcadcf19f..194db6b1ec 100644
--- a/sysdeps/generic/libc-start.c
+++ b/sysdeps/generic/libc-start.c
@@ -75,11 +75,7 @@ STATIC int LIBC_START_MAIN (int (*main) (int, char **, char **
 #ifdef LIBC_START_MAIN_AUXVEC_ARG
 			    ElfW(auxv_t) *__unbounded auxvec,
 #endif
-#ifdef INIT_MAIN_ARGS
 			    __typeof (main) init,
-#else
-			    void (*init) (void),
-#endif
 			    void (*fini) (void),
 			    void (*rtld_fini) (void),
 			    void *__unbounded stack_end)
@@ -95,11 +91,7 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
 #ifdef LIBC_START_MAIN_AUXVEC_ARG
 		 ElfW(auxv_t) *__unbounded auxvec,
 #endif
-#ifdef INIT_MAIN_ARGS
 		 __typeof (main) init,
-#else
-		 void (*init) (void),
-#endif
 		 void (*fini) (void),
 		 void (*rtld_fini) (void), void *__unbounded stack_end)
 {
@@ -195,11 +187,7 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
     GLRO(dl_debug_printf) ("\ninitialize program: %s\n\n", argv[0]);
 #endif
   if (init)
-    (*init) (
-#ifdef INIT_MAIN_ARGS
-	     argc, argv, __environ MAIN_AUXVEC_PARAM
-#endif
-	     );
+    (*init) (argc, argv, __environ MAIN_AUXVEC_PARAM);
 
 #ifdef SHARED
   /* Auditing checkpoint: we have a new object.  */
diff --git a/sysdeps/generic/s_ctan.c b/sysdeps/generic/s_ctan.c
index 6a09fe465b..0464ab86d5 100644
--- a/sysdeps/generic/s_ctan.c
+++ b/sysdeps/generic/s_ctan.c
@@ -1,5 +1,5 @@
 /* Complex tangent function for double.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -61,8 +61,18 @@ __ctan (__complex__ double x)
 
       den = cos2rx + __ieee754_cosh (2.0 * __imag__ x);
 
-      __real__ res = sin2rx / den;
-      __imag__ res = __ieee754_sinh (2.0 * __imag__ x) / den;
+      if (den == 0.0)
+	{
+	  __complex__ double ez = __cexp (1.0i * x);
+	  __complex__ double emz = __cexp (-1.0i * x);
+
+	  res = (ez - emz) / (ez + emz) * -1.0i;
+	}
+      else
+	{
+	  __real__ res = sin2rx / den;
+	  __imag__ res = __ieee754_sinh (2.0 * __imag__ x) / den;
+	}
     }
 
   return res;
diff --git a/sysdeps/generic/s_ctanf.c b/sysdeps/generic/s_ctanf.c
index e02971dd44..58d9d13298 100644
--- a/sysdeps/generic/s_ctanf.c
+++ b/sysdeps/generic/s_ctanf.c
@@ -1,5 +1,5 @@
 /* Complex tangent function for float.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -61,8 +61,19 @@ __ctanf (__complex__ float x)
 
       den = cos2rx + __ieee754_coshf (2.0 * __imag__ x);
 
-      __real__ res = sin2rx / den;
-      __imag__ res = __ieee754_sinhf (2.0 * __imag__ x) / den;
+
+      if (den == 0.0)
+	{
+	  __complex__ float ez = __cexpf (1.0i * x);
+	  __complex__ float emz = __cexpf (-1.0i * x);
+
+	  res = (ez - emz) / (ez + emz) * -1.0i;
+	}
+      else
+	{
+	  __real__ res = sin2rx / den;
+	  __imag__ res = __ieee754_sinhf (2.0 * __imag__ x) / den;
+	}
     }
 
   return res;
diff --git a/sysdeps/generic/s_ctanh.c b/sysdeps/generic/s_ctanh.c
index 971cd9040c..fe38dae291 100644
--- a/sysdeps/generic/s_ctanh.c
+++ b/sysdeps/generic/s_ctanh.c
@@ -1,5 +1,5 @@
 /* Complex hyperbole tangent for double.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -61,8 +61,18 @@ __ctanh (__complex__ double x)
 
       den = (__ieee754_cosh (2.0 * __real__ x) + cos2ix);
 
-      __real__ res = __ieee754_sinh (2.0 * __real__ x) / den;
-      __imag__ res = sin2ix / den;
+      if (den == 0.0)
+	{
+	  __complex__ double ez = __cexp (x);
+	  __complex__ double emz = __cexp (-x);
+
+	  res = (ez - emz) / (ez + emz);
+	}
+      else
+	{
+	  __real__ res = __ieee754_sinh (2.0 * __real__ x) / den;
+	  __imag__ res = sin2ix / den;
+	}
     }
 
   return res;
diff --git a/sysdeps/generic/s_ctanhf.c b/sysdeps/generic/s_ctanhf.c
index cfcabab36a..c331dbaabb 100644
--- a/sysdeps/generic/s_ctanhf.c
+++ b/sysdeps/generic/s_ctanhf.c
@@ -1,5 +1,5 @@
 /* Complex hyperbole tangent for float.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -61,8 +61,18 @@ __ctanhf (__complex__ float x)
 
       den = (__ieee754_coshf (2.0 * __real__ x) + cos2ix);
 
-      __real__ res = __ieee754_sinhf (2.0 * __real__ x) / den;
-      __imag__ res = sin2ix / den;
+      if (den == 0.0f)
+	{
+	  __complex__ float ez = __cexpf (x);
+	  __complex__ float emz = __cexpf (-x);
+
+	  res = (ez - emz) / (ez + emz);
+	}
+      else
+	{
+	  __real__ res = __ieee754_sinhf (2.0 * __real__ x) / den;
+	  __imag__ res = sin2ix / den;
+	}
     }
 
   return res;
diff --git a/sysdeps/generic/s_ctanhl.c b/sysdeps/generic/s_ctanhl.c
index 7bf6b39199..77ca8f8717 100644
--- a/sysdeps/generic/s_ctanhl.c
+++ b/sysdeps/generic/s_ctanhl.c
@@ -1,5 +1,5 @@
 /* Complex hyperbole tangent for long double.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -61,8 +61,18 @@ __ctanhl (__complex__ long double x)
 
       den = (__ieee754_coshl (2.0 * __real__ x) + cos2ix);
 
-      __real__ res = __ieee754_sinhl (2.0 * __real__ x) / den;
-      __imag__ res = sin2ix / den;
+      if (den == 0.0L)
+	{
+	  __complex__ long double ez = __cexpl (x);
+	  __complex__ long double emz = __cexpl (-x);
+
+	  res = (ez - emz) / (ez + emz);
+	}
+      else
+	{
+	  __real__ res = __ieee754_sinhl (2.0 * __real__ x) / den;
+	  __imag__ res = sin2ix / den;
+	}
     }
 
   return res;
diff --git a/sysdeps/generic/s_ctanl.c b/sysdeps/generic/s_ctanl.c
index fa153e9b35..89379a5ff9 100644
--- a/sysdeps/generic/s_ctanl.c
+++ b/sysdeps/generic/s_ctanl.c
@@ -1,5 +1,5 @@
 /* Complex tangent function for long double.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -61,8 +61,19 @@ __ctanl (__complex__ long double x)
 
       den = cos2rx + __ieee754_coshl (2.0 * __imag__ x);
 
-      __real__ res = sin2rx / den;
-      __imag__ res = __ieee754_sinhl (2.0 * __imag__ x) / den;
+
+      if (den == 0.0)
+	{
+	  __complex__ long double ez = __cexpl (1.0i * x);
+	  __complex__ long double emz = __cexpl (-1.0i * x);
+
+	  res = (ez - emz) / (ez + emz) * -1.0i;
+	}
+      else
+	{
+	  __real__ res = sin2rx / den;
+	  __imag__ res = __ieee754_sinhl (2.0 * __imag__ x) / den;
+	}
     }
 
   return res;
diff --git a/sysdeps/hppa/add_n.s b/sysdeps/hppa/add_n.s
index aaabd72e20..a396b3471c 100644
--- a/sysdeps/hppa/add_n.s
+++ b/sysdeps/hppa/add_n.s
@@ -38,19 +38,19 @@ __mpn_add_n:
 	.callinfo	frame=0,no_calls
 	.entry
 
-	ldws,ma		4(0,%r25),%r21
-	ldws,ma		4(0,%r24),%r20
+	ldws,ma		4(%r25),%r21
+	ldws,ma		4(%r24),%r20
 
 	addib,=		-1,%r23,L$end	;! check for (SIZE == 1)
 	 add		%r21,%r20,%r28	;! add first limbs ignoring cy
 
-L$loop:	ldws,ma		4(0,%r25),%r21
-	ldws,ma		4(0,%r24),%r20
-	stws,ma		%r28,4(0,%r26)
+L$loop:	ldws,ma		4(%r25),%r21
+	ldws,ma		4(%r24),%r20
+	stws,ma		%r28,4(%r26)
 	addib,<>	-1,%r23,L$loop
 	 addc		%r21,%r20,%r28
 
-L$end:	stws		%r28,0(0,%r26)
+L$end:	stws		%r28,0(%r26)
 	bv		0(%r2)
 	 addc		%r0,%r0,%r28
 
diff --git a/sysdeps/hppa/hppa1.1/udiv_qrnnd.s b/sysdeps/hppa/hppa1.1/udiv_qrnnd.s
index fdc63e59e5..7b83619c7d 100644
--- a/sysdeps/hppa/hppa1.1/udiv_qrnnd.s
+++ b/sysdeps/hppa/hppa1.1/udiv_qrnnd.s
@@ -38,20 +38,20 @@ __udiv_qrnnd:
 	.entry
 	ldo		64(%r30),%r30
 
-	stws		%r25,-16(0,%r30)	;! n_hi
-	stws		%r24,-12(0,%r30)	;! n_lo
+	stws		%r25,-16(%r30)	;! n_hi
+	stws		%r24,-12(%r30)	;! n_lo
 	b,l		L$0,%r1
 	ldo		L$0000-L$0(%r1),%r1
 L$0:
-	fldds		-16(0,%r30),%fr5
-	stws		%r23,-12(0,%r30)
+	fldds		-16(%r30),%fr5
+	stws		%r23,-12(%r30)
 	comib,<=	0,%r25,L$1
 	fcnvxf,dbl,dbl	%fr5,%fr5
-	fldds		0(0,%r1),%fr4
+	fldds		0(%r1),%fr4
 	fadd,dbl	%fr4,%fr5,%fr5
 L$1:	
 	fcpy,sgl	%fr0,%fr6L
-	fldws		-12(0,%r30),%fr6R
+	fldws		-12(%r30),%fr6R
 	fcnvxf,dbl,dbl	%fr6,%fr4
 
 	fdiv,dbl	%fr5,%fr4,%fr5
@@ -60,9 +60,9 @@ L$1:
 	fstws		%fr4R,-16(%r30)
 	xmpyu		%fr4R,%fr6R,%fr6
 	ldws		-16(%r30),%r28
-	fstds		%fr6,-16(0,%r30)
-	ldws		-12(0,%r30),%r21
-	ldws		-16(0,%r30),%r20
+	fstds		%fr6,-16(%r30)
+	ldws		-12(%r30),%r21
+	ldws		-16(%r30),%r20
 	sub		%r24,%r21,%r22
 	subb		%r25,%r20,%r1
 	comib,=		0,%r1,L$2
@@ -72,7 +72,7 @@ L$1:
 	ldo		-1(%r28),%r28
 L$2:	
 	bv		0(%r2)
-	stws		%r22,0(0,%r26)
+	stws		%r22,0(%r26)
 
 	.exit
 	.procend
diff --git a/sysdeps/hppa/lshift.s b/sysdeps/hppa/lshift.s
index 400fbcf6dd..151b283e57 100644
--- a/sysdeps/hppa/lshift.s
+++ b/sysdeps/hppa/lshift.s
@@ -35,32 +35,32 @@ __mpn_lshift:
 
 	sh2add		%r24,%r25,%r25
 	sh2add		%r24,%r26,%r26
-	ldws,mb		-4(0,%r25),%r22
+	ldws,mb		-4(%r25),%r22
 	subi		32,%r23,%r1
 	mtsar		%r1
 	addib,=		-1,%r24,L$0004
 	vshd		%r0,%r22,%r28		;! compute carry out limb
-	ldws,mb		-4(0,%r25),%r29
+	ldws,mb		-4(%r25),%r29
 	addib,=		-1,%r24,L$0002
 	vshd		%r22,%r29,%r20
 
-L$loop:	ldws,mb		-4(0,%r25),%r22
-	stws,mb		%r20,-4(0,%r26)
+L$loop:	ldws,mb		-4(%r25),%r22
+	stws,mb		%r20,-4(%r26)
 	addib,=		-1,%r24,L$0003
 	vshd		%r29,%r22,%r20
-	ldws,mb		-4(0,%r25),%r29
-	stws,mb		%r20,-4(0,%r26)
+	ldws,mb		-4(%r25),%r29
+	stws,mb		%r20,-4(%r26)
 	addib,<>	-1,%r24,L$loop
 	vshd		%r22,%r29,%r20
 
-L$0002:	stws,mb		%r20,-4(0,%r26)
+L$0002:	stws,mb		%r20,-4(%r26)
 	vshd		%r29,%r0,%r20
 	bv		0(%r2)
-	stw		%r20,-4(0,%r26)
-L$0003:	stws,mb		%r20,-4(0,%r26)
+	stw		%r20,-4(%r26)
+L$0003:	stws,mb		%r20,-4(%r26)
 L$0004:	vshd		%r22,%r0,%r20
 	bv		0(%r2)
-	stw		%r20,-4(0,%r26)
+	stw		%r20,-4(%r26)
 
 	.exit
 	.procend
diff --git a/sysdeps/hppa/rshift.s b/sysdeps/hppa/rshift.s
index acb772f523..dff189dc48 100644
--- a/sysdeps/hppa/rshift.s
+++ b/sysdeps/hppa/rshift.s
@@ -33,31 +33,31 @@ __mpn_rshift:
 	.callinfo	frame=64,no_calls
 	.entry
 
-	ldws,ma		4(0,%r25),%r22
+	ldws,ma		4(%r25),%r22
 	mtsar		%r23
 	addib,=		-1,%r24,L$0004
 	vshd		%r22,%r0,%r28		;! compute carry out limb
-	ldws,ma		4(0,%r25),%r29
+	ldws,ma		4(%r25),%r29
 	addib,=		-1,%r24,L$0002
 	vshd		%r29,%r22,%r20
 
-L$loop:	ldws,ma		4(0,%r25),%r22
-	stws,ma		%r20,4(0,%r26)
+L$loop:	ldws,ma		4(%r25),%r22
+	stws,ma		%r20,4(%r26)
 	addib,=		-1,%r24,L$0003
 	vshd		%r22,%r29,%r20
-	ldws,ma		4(0,%r25),%r29
-	stws,ma		%r20,4(0,%r26)
+	ldws,ma		4(%r25),%r29
+	stws,ma		%r20,4(%r26)
 	addib,<>	-1,%r24,L$loop
 	vshd		%r29,%r22,%r20
 
-L$0002:	stws,ma		%r20,4(0,%r26)
+L$0002:	stws,ma		%r20,4(%r26)
 	vshd		%r0,%r29,%r20
 	bv		0(%r2)
-	stw		%r20,0(0,%r26)
-L$0003:	stws,ma		%r20,4(0,%r26)
+	stw		%r20,0(%r26)
+L$0003:	stws,ma		%r20,4(%r26)
 L$0004:	vshd		%r0,%r22,%r20
 	bv		0(%r2)
-	stw		%r20,0(0,%r26)
+	stw		%r20,0(%r26)
 
 	.exit
 	.procend
diff --git a/sysdeps/hppa/setjmp.S b/sysdeps/hppa/setjmp.S
index f10a7a304d..0da34db6f1 100644
--- a/sysdeps/hppa/setjmp.S
+++ b/sysdeps/hppa/setjmp.S
@@ -53,17 +53,17 @@ __sigsetjmp:
 
 	stw	%rp, 80(%r26)
 
-	ldo	88(%r26),%r19
-	fstds,ma %fr12, 8(%r19) /* 88 */
-	fstds,ma %fr13, 8(%r19) /* 96 */
-	fstds,ma %fr14, 8(%r19) /* 104 */
-	fstds,ma %fr15, 8(%r19) /* 112 */
-	fstds,ma %fr16, 8(%r19) /* 120 */
-	fstds,ma %fr17, 8(%r19) /* 128 */
-	fstds,ma %fr18, 8(%r19) /* 136 */
-	fstds,ma %fr19, 8(%r19) /* 144 */
-	fstds,ma %fr20, 8(%r19) /* 152 */
-	fstds	 %fr21, 0(%r19) /* 160 */
+	ldo	88(%r26),%r1
+	fstds,ma %fr12, 8(%r1) /* 88 */
+	fstds,ma %fr13, 8(%r1) /* 96 */
+	fstds,ma %fr14, 8(%r1) /* 104 */
+	fstds,ma %fr15, 8(%r1) /* 112 */
+	fstds,ma %fr16, 8(%r1) /* 120 */
+	fstds,ma %fr17, 8(%r1) /* 128 */
+	fstds,ma %fr18, 8(%r1) /* 136 */
+	fstds,ma %fr19, 8(%r1) /* 144 */
+	fstds,ma %fr20, 8(%r1) /* 152 */
+	fstds	 %fr21, 0(%r1) /* 160 */
 	b __sigjmp_save
 	nop
 	.procend
diff --git a/sysdeps/hppa/sub_n.s b/sysdeps/hppa/sub_n.s
index 34f196826d..7764961a2d 100644
--- a/sysdeps/hppa/sub_n.s
+++ b/sysdeps/hppa/sub_n.s
@@ -38,19 +38,19 @@ __mpn_sub_n:
 	.callinfo	frame=0,no_calls
 	.entry
 
-	ldws,ma		4(0,%r25),%r21
-	ldws,ma		4(0,%r24),%r20
+	ldws,ma		4(%r25),%r21
+	ldws,ma		4(%r24),%r20
 
 	addib,=		-1,%r23,L$end	;! check for (SIZE == 1)
 	 sub		%r21,%r20,%r28	;! subtract first limbs ignoring cy
 
-L$loop:	ldws,ma		4(0,%r25),%r21
-	ldws,ma		4(0,%r24),%r20
-	stws,ma		%r28,4(0,%r26)
+L$loop:	ldws,ma		4(%r25),%r21
+	ldws,ma		4(%r24),%r20
+	stws,ma		%r28,4(%r26)
 	addib,<>	-1,%r23,L$loop
 	 subb		%r21,%r20,%r28
 
-L$end:	stws		%r28,0(0,%r26)
+L$end:	stws		%r28,0(%r26)
 	addc		%r0,%r0,%r28
 	bv		0(%r2)
 	 subi		1,%r28,%r28
diff --git a/sysdeps/hppa/udiv_qrnnd.s b/sysdeps/hppa/udiv_qrnnd.s
index cd2b58ddec..8e9c07a205 100644
--- a/sysdeps/hppa/udiv_qrnnd.s
+++ b/sysdeps/hppa/udiv_qrnnd.s
@@ -38,7 +38,7 @@ __udiv_qrnnd:
 	.callinfo	frame=0,no_calls
 	.entry
 
-	comb,<		%r23,0,L$largedivisor
+	comb,<		%r23,%r0,L$largedivisor
 	 sub		%r0,%r23,%r1		;! clear cy as side-effect
 	ds		%r0,%r1,%r0
 	addc		%r24,%r24,%r24
@@ -107,7 +107,7 @@ __udiv_qrnnd:
 	ds		%r25,%r23,%r25
 	comclr,>=	%r25,%r0,%r0
 	addl		%r25,%r23,%r25
-	stws		%r25,0(0,%r26)
+	stws		%r25,0(%r26)
 	bv		0(%r2)
 	 addc		%r28,%r28,%r28
 
@@ -186,7 +186,7 @@ L$largedivisor:
 	comclr,>=	%r25,%r0,%r0
 	addl		%r25,%r22,%r25
 	sh1addl		%r25,%r20,%r25
-	stws		%r25,0(0,%r26)
+	stws		%r25,0(%r26)
 	bv		0(%r2)
 	 addc		%r24,%r24,%r28
 
@@ -269,7 +269,7 @@ L$odd:	addib,sv,n	1,%r22,L$FF..		;! r22 = (d / 2 + 1)
 	addc		%r0,%r28,%r28
 	sub,<<		%r25,%r23,%r0
 	addl		%r25,%r1,%r25
-	stws		%r25,0(0,%r26)
+	stws		%r25,0(%r26)
 	bv		0(%r2)
 	 addc		%r0,%r28,%r28
 
@@ -278,7 +278,7 @@ L$odd:	addib,sv,n	1,%r22,L$FF..		;! r22 = (d / 2 + 1)
 L$FF..:	add,uv		%r25,%r24,%r24
 	sub,<<		%r24,%r23,%r0
 	ldo		1(%r24),%r24
-	stws		%r24,0(0,%r26)
+	stws		%r24,0(%r26)
 	bv		0(%r2)
 	 addc		%r0,%r25,%r28
 
diff --git a/sysdeps/i386/dl-trampoline.S b/sysdeps/i386/dl-trampoline.S
index 80dd300e86..fd87eb711d 100644
--- a/sysdeps/i386/dl-trampoline.S
+++ b/sysdeps/i386/dl-trampoline.S
@@ -45,6 +45,7 @@ _dl_runtime_resolve:
 	.size _dl_runtime_resolve, .-_dl_runtime_resolve
 
 
+#ifndef PROF
 	.globl _dl_runtime_profile
 	.type _dl_runtime_profile, @function
 	cfi_startproc
@@ -180,3 +181,4 @@ _dl_runtime_profile:
 	ret
 	cfi_endproc
 	.size _dl_runtime_profile, .-_dl_runtime_profile
+#endif
diff --git a/sysdeps/ia64/dl-trampoline.S b/sysdeps/ia64/dl-trampoline.S
index b7969a6cf0..1b31dc7c9c 100644
--- a/sysdeps/ia64/dl-trampoline.S
+++ b/sysdeps/ia64/dl-trampoline.S
@@ -175,7 +175,7 @@ END(_dl_runtime_resolve)
    16byte f13
    16byte f14
    16byte f15
-  
+
   Since stack has to be 16 byte aligned, the stack allocation is in
   16byte increment. Before calling _dl_profile_fixup, the stack will
   look like
@@ -189,6 +189,7 @@ END(_dl_runtime_resolve)
 #define PLTENTER_FRAME_SIZE (4*8 + 8*8 + 8*16 + 2*8 + 16)
 #define PLTEXIT_FRAME_SIZE (PLTENTER_FRAME_SIZE + 4*8 + 8*16)
 
+#ifndef PROF
 ENTRY(_dl_runtime_profile)
 	{ .mii
 	  .prologue
@@ -535,3 +536,4 @@ ENTRY(_dl_runtime_profile)
 	  ;;
 	}
 END(_dl_runtime_profile)
+#endif
diff --git a/sysdeps/powerpc/elf/libc-start.c b/sysdeps/powerpc/elf/libc-start.c
index eed3e06c8a..af67a39a29 100644
--- a/sysdeps/powerpc/elf/libc-start.c
+++ b/sysdeps/powerpc/elf/libc-start.c
@@ -30,7 +30,6 @@ weak_extern (__cache_line_size)
 #define LIBC_START_DISABLE_INLINE
 #define LIBC_START_MAIN_AUXVEC_ARG
 #define MAIN_AUXVEC_ARG
-#define INIT_MAIN_ARGS
 #include <sysdeps/generic/libc-start.c>
 
 
diff --git a/sysdeps/powerpc/powerpc32/dl-trampoline.S b/sysdeps/powerpc/powerpc32/dl-trampoline.S
index ea5ce7b45a..506e8022b9 100644
--- a/sysdeps/powerpc/powerpc32/dl-trampoline.S
+++ b/sysdeps/powerpc/powerpc32/dl-trampoline.S
@@ -66,6 +66,7 @@ _dl_runtime_resolve:
 	bctr
 	.size	 _dl_runtime_resolve,.-_dl_runtime_resolve
 
+#ifndef PROF
 	.align 2
 	.globl _dl_prof_resolve
 	.type _dl_prof_resolve,@function
@@ -172,3 +173,4 @@ _dl_prof_resolve:
 	addi r1,r1,320
 	bctr
 	.size	 _dl_prof_resolve,.-_dl_prof_resolve
+#endif
diff --git a/sysdeps/powerpc/powerpc64/dl-trampoline.S b/sysdeps/powerpc/powerpc64/dl-trampoline.S
index 0c617063c9..c90f961615 100644
--- a/sysdeps/powerpc/powerpc64/dl-trampoline.S
+++ b/sysdeps/powerpc/powerpc64/dl-trampoline.S
@@ -26,7 +26,7 @@
    and r11 contains the link_map (from PLT0+16).  The link_map becomes
    parm1 (r3) and the index (r0) need to be converted to an offset
    (index * 24) in parm2 (r4).  */
-   
+
 EALIGN(_dl_runtime_resolve, 4, 0)
 /* We need to save the registers used to pass parameters, ie. r3 thru
    r10; the registers are saved in a stack frame.  */
@@ -139,8 +139,8 @@ END(_dl_runtime_resolve)
 	 * Parameter save area, Allocated by the call, at least 8 double words
 	  +40    TOC save area
 	  +32    Reserved for linker
-	  +24    Reserved for compiler 
-	  +16    LR save area 
+	  +24    Reserved for compiler
+	  +16    LR save area
 	  +8     CR save area
 	r1+0     stack back chain
 	*/
@@ -169,7 +169,7 @@ END(_dl_runtime_resolve)
    and r11 contains the link_map (from PLT0+16).  The link_map becomes
    parm1 (r3) and the index (r0) needs to be converted to an offset
    (index * 24) in parm2 (r4).  */
-   
+#ifndef PROF
 EALIGN(_dl_profile_resolve, 4, 0)
 /* Spill r30, r31 to preserve the link_map* and reloc_addr, in case we
    need to call _dl_call_pltexit.  */
@@ -215,23 +215,23 @@ EALIGN(_dl_profile_resolve, 4, 0)
 	li	r12,64
 	stvx	v2,0,r10
 	stvx	v3,0,r9
-	
+
 	stvx	v4,r11,r10
 	stvx	v5,r11,r9
 	addi	r11,r11,64
-	
+
 	stvx	v6,r12,r10
 	stvx	v7,r12,r9
 	addi	r12,r12,64
-	
+
 	stvx	v8,r11,r10
 	stvx	v9,r11,r9
 	addi	r11,r11,64
-	
+
 	stvx	v10,r12,r10
 	stvx	v11,r12,r9
 	mfspr	r0,VRSAVE
-	
+
 	stvx	v12,r11,r10
 	stvx	v13,r11,r9
 L(saveFP):
@@ -262,7 +262,7 @@ L(saveFP):
 	nop
 /* Test *framesizep > 0 to see if need to do pltexit processing.  */
 	ld	r0,STACK_FRAME(r1)
-/* Put the registers back.  */	
+/* Put the registers back.  */
 	lwz	r12,VR_VRSAVE(r1)
 	cmpdi	cr1,r0,0
 	cmpdi	cr0,r12,0
@@ -275,22 +275,22 @@ L(saveFP):
 	li	r12,64
 	lvx	v2,0,r10
 	lvx	v3,0,r9
-	
+
 	lvx	v4,r11,r10
 	lvx	v5,r11,r9
 	addi	r11,r11,64
-	
+
 	lvx	v6,r12,r10
 	lvx	v7,r12,r9
 	addi	r12,r12,64
-	
+
 	lvx	v8,r11,r10
 	lvx	v9,r11,r9
 	addi	r11,r11,64
-	
+
 	lvx	v10,r12,r10
 	lvx	v11,r12,r9
-	
+
 	lvx	v12,r11,r10
 	lvx	v13,r11,r9
 L(restoreFXR):
@@ -339,22 +339,22 @@ L(do_pltexit):
 	li	r12,64
 	lvx	v2,0,r10
 	lvx	v3,0,r9
-	
+
 	lvx	v4,r11,r10
 	lvx	v5,r11,r9
 	addi	r11,r11,64
-	
+
 	lvx	v6,r12,r10
 	lvx	v7,r12,r9
 	addi	r12,r12,64
-	
+
 	lvx	v8,r11,r10
 	lvx	v9,r11,r9
 	addi	r11,r11,64
-	
+
 	lvx	v10,r12,r10
 	lvx	v11,r12,r9
-	
+
 	lvx	v12,r11,r10
 	lvx	v13,r11,r9
 L(restoreFXR2):
@@ -393,7 +393,7 @@ L(restoreFXR2):
 	lfd	fp13,FPR_PARMS+96(r1)
 /* Call the target function.  */
 	bctrl
-	ld	r2,40(r1)	
+	ld	r2,40(r1)
 	lwz	r12,VR_VRSAVE(r1)
 /* But return here and store the return values.  */
 	std	r3,INT_RTN(r1)
@@ -413,7 +413,7 @@ L(callpltexit):
 	addi	r6,r1,INT_RTN
 	bl	JUMPTARGET(_dl_call_pltexit)
 	nop
-/* Restore the return values from target function.  */	
+/* Restore the return values from target function.  */
 	lwz	r12,VR_VRSAVE(r1)
 	ld	r3,INT_RTN(r1)
 	ld	r4,INT_RTN+8(r1)
@@ -433,3 +433,4 @@ L(pltexitreturn):
 	ld	r1,0(r1)
 	blr
 END(_dl_profile_resolve)
+#endif
diff --git a/sysdeps/s390/s390-32/dl-trampoline.S b/sysdeps/s390/s390-32/dl-trampoline.S
index 4ee2295b89..fbbbc189db 100644
--- a/sysdeps/s390/s390-32/dl-trampoline.S
+++ b/sysdeps/s390/s390-32/dl-trampoline.S
@@ -64,6 +64,7 @@ _dl_runtime_resolve:
 	.size _dl_runtime_resolve, .-_dl_runtime_resolve
 
 
+#ifndef PROF
 	.globl _dl_runtime_profile
 	.type _dl_runtime_profile, @function
 	cfi_startproc
@@ -124,10 +125,10 @@ _dl_runtime_profile:
 5:	l      %r14,7f-5b(%r1)
 	la     %r4,32(%r12)		# pointer to struct La_s390_32_regs
 	la     %r5,72(%r12)		# pointer to struct La_s390_32_retval
-	basr   %r14,%r1			# call _dl_call_pltexit	
+	basr   %r14,%r1			# call _dl_call_pltexit
 	j      1b
 6:	.long  _dl_profile_fixup - 0b
 7:	.long  _dl_call_pltexit - 5b
 	cfi_endproc
 	.size _dl_runtime_profile, .-_dl_runtime_profile
-
+#endif
diff --git a/sysdeps/s390/s390-64/dl-trampoline.S b/sysdeps/s390/s390-64/dl-trampoline.S
index 215d869803..8093582163 100644
--- a/sysdeps/s390/s390-64/dl-trampoline.S
+++ b/sysdeps/s390/s390-64/dl-trampoline.S
@@ -58,6 +58,7 @@ _dl_runtime_resolve:
 	.size _dl_runtime_resolve, .-_dl_runtime_resolve
 
 
+#ifndef PROF
 	.globl _dl_runtime_profile
 	.type _dl_runtime_profile, @function
 	cfi_startproc
@@ -124,3 +125,4 @@ _dl_runtime_profile:
 	j      0b
 	cfi_endproc
 	.size _dl_runtime_profile, .-_dl_runtime_profile
+#endif
diff --git a/sysdeps/unix/sysv/linux/bits/sched.h b/sysdeps/unix/sysv/linux/bits/sched.h
index 24495e2b34..69462bf61c 100644
--- a/sysdeps/unix/sysv/linux/bits/sched.h
+++ b/sysdeps/unix/sysv/linux/bits/sched.h
@@ -1,6 +1,6 @@
 /* Definitions of constants and data structure for POSIX 1003.1b-1993
    scheduling interface.
-   Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
+   Copyright (C) 1996-1999,2001-2003,2005 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
@@ -69,7 +69,7 @@ __BEGIN_DECLS
 /* Clone current process.  */
 #ifdef __USE_MISC
 extern int clone (int (*__fn) (void *__arg), void *__child_stack,
-		  int __flags, void *__arg) __THROW;
+		  int __flags, void *__arg, ...) __THROW;
 #endif
 
 __END_DECLS
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index 325073c62c..06683089ad 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -261,38 +261,29 @@ case "$prefix" in
   ;;
 esac
 
-# Under Linux the LinuxThreads or NPTL add-on should be available.
+# Under Linux the NPTL add-on should be available.
 case $add_ons in
-  # Only one of the add-ons should be available.
-  *linuxthreads*nptl*|*nptl*linuxthreads*)
-    echo "\
-*** LinuxThreads and NPTL add-ons are both available.  Only one must be used."
-    exit 1
-    ;;
   # It is available.  Good.
-  *linuxthreads*)
-    linuxthreads_missing=
-    ;;
   *nptl*)
-    linuxthreads_missing=
+    nptl_missing=
     ;;
   *)
-    linuxthreads_missing=yes
+    nptl_missing=yes
     ;;
 esac
 
-if test "$linuxthreads_missing"; then
+if test "$nptl_missing"; then
   if test $enable_sanity = yes; then
     echo "\
 *** On GNU/Linux systems it is normal to compile GNU libc with the
-*** \`linuxthreads' add-on.  Without that, the library will be
+*** \`nptl' add-on.  Without that, the library will be
 *** incompatible with normal GNU/Linux systems.
 *** If you really mean to not use this add-on, run configure again
 *** using the extra parameter \`--disable-sanity-checks'."
     exit 1
   else
     echo "\
-*** WARNING: Are you sure you do not want to use the \`linuxthreads'
+*** WARNING: Are you sure you do not want to use the \`nptl'
 *** add-on?"
   fi
 fi
diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in
index 88feb868fe..b90de065af 100644
--- a/sysdeps/unix/sysv/linux/configure.in
+++ b/sysdeps/unix/sysv/linux/configure.in
@@ -196,38 +196,29 @@ case "$prefix" in
   ;;
 esac
 
-# Under Linux the LinuxThreads or NPTL add-on should be available.
+# Under Linux the NPTL add-on should be available.
 case $add_ons in
-  # Only one of the add-ons should be available.
-  *linuxthreads*nptl*|*nptl*linuxthreads*)
-    echo "\
-*** LinuxThreads and NPTL add-ons are both available.  Only one must be used."
-    exit 1
-    ;;
   # It is available.  Good.
-  *linuxthreads*)
-    linuxthreads_missing=
-    ;;
   *nptl*)
-    linuxthreads_missing=
+    nptl_missing=
     ;;
   *)
-    linuxthreads_missing=yes
+    nptl_missing=yes
     ;;
 esac
 
-if test "$linuxthreads_missing"; then
+if test "$nptl_missing"; then
   if test $enable_sanity = yes; then
     echo "\
 *** On GNU/Linux systems it is normal to compile GNU libc with the
-*** \`linuxthreads' add-on.  Without that, the library will be
+*** \`nptl' add-on.  Without that, the library will be
 *** incompatible with normal GNU/Linux systems.
 *** If you really mean to not use this add-on, run configure again
 *** using the extra parameter \`--disable-sanity-checks'."
     exit 1
   else
     echo "\
-*** WARNING: Are you sure you do not want to use the \`linuxthreads'
+*** WARNING: Are you sure you do not want to use the \`nptl'
 *** add-on?"
   fi
 fi
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile b/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile
index 05fd8523b7..e051f54637 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile
@@ -4,7 +4,7 @@ LD += -melf32_sparc
 
 # When I get this to work, this is the right thing
 ifeq ($(subdir),elf)
-CFLAGS-rtld.c += -mv8
+CFLAGS-rtld.c += -mcpu=v8
 #rtld-routines += dl-sysdepsparc
 sysdep-others += lddlibc4
 install-bin += lddlibc4
diff --git a/sysdeps/x86_64/dl-trampoline.S b/sysdeps/x86_64/dl-trampoline.S
index eb46f29cf2..c1686dae10 100644
--- a/sysdeps/x86_64/dl-trampoline.S
+++ b/sysdeps/x86_64/dl-trampoline.S
@@ -56,7 +56,7 @@ _dl_runtime_resolve:
 	.size _dl_runtime_resolve, .-_dl_runtime_resolve
 
 
-
+#ifndef PROF
 	.globl _dl_runtime_profile
 	.type _dl_runtime_profile, @function
 	.align 16
@@ -186,3 +186,4 @@ _dl_runtime_profile:
 	retq
 	cfi_endproc
 	.size _dl_runtime_profile, .-_dl_runtime_profile
+#endif