about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog17
-rwxr-xr-xconfigure8
-rw-r--r--sysdeps/alpha/dl-machine.h402
-rw-r--r--sysdeps/unix/sysv/linux/getloadavg.c7
4 files changed, 226 insertions, 208 deletions
diff --git a/ChangeLog b/ChangeLog
index 3afb9aba7d..469318be21 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,20 @@
+2001-12-31  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Always use C
+	locale to parse /proc/loadavg.
+
+2001-12-31  Jakub Jelinek  <jakub@redhat.com>
+
+	* elf/dl-conflict.c: Include sys/param.h.
+	(RESOLVE_CONFLICT_FIND_MAP): Cast r_offset to ElfW(Addr).
+	* sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Avoid
+	warning.
+	(TRAMPOLINE_TEMPLATE, RTLD_START): Don't use multi-line string
+	literals to avoid warnings.
+
 2001-12-31  Andreas Jaeger  <aj@suse.de>
 
-	* configure.in: Don't check for gsed since we do not use it
-	anywhere.
+	* configure.in: Don't check for gsed since we do not use it anywhere.
 
 2001-12-25  Dmitry V. Levin  <ldv@alt-linux.org>
 
diff --git a/configure b/configure
index 81e0cc6521..de60d6b4d7 100755
--- a/configure
+++ b/configure
@@ -2277,7 +2277,7 @@ else
 fi
 
 
-for ac_prog in mawk gawk nawk awk
+for ac_prog in gawk mawk nawk awk
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -3455,12 +3455,12 @@ else
 #line 3456 "configure"
 #include "confdefs.h"
 #include <stdio.h>
-main()
+int main()
 {
   FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
+  if (!f) return(1);
   fprintf(f, "%d\n", sizeof(long double));
-  exit(0);
+  return(0);
 }
 EOF
 if { (eval echo configure:3467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h
index c93da661bf..7b6dcec746 100644
--- a/sysdeps/alpha/dl-machine.h
+++ b/sysdeps/alpha/dl-machine.h
@@ -127,7 +127,8 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 	{
 	  unsigned int val = 0xc39ffff7;
 	  unsigned int *slot, *end;
-	  const Elf64_Rela *rela = D_PTR (l, l_info[DT_JMPREL]);
+	  const Elf64_Rela *rela = (const Elf64_Rela *)
+				   D_PTR (l, l_info[DT_JMPREL]);
 	  Elf64_Addr l_addr = l->l_addr;
 
 	  /* br t12,.+4; ldq t12,12(t12); nop; jmp t12,(t12),.+4 */
@@ -156,125 +157,126 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name, IMB)	\
   extern void tramp_name (void);				\
   asm ( "\
-	.globl " #tramp_name "
-	.ent " #tramp_name "
-" #tramp_name ":
-	lda	$sp, -44*8($sp)
-	.frame	$sp, 44*8, $26
-	/* Preserve all integer registers that C normally doesn't.  */
-	stq	$26, 0*8($sp)
-	stq	$0, 1*8($sp)
-	stq	$1, 2*8($sp)
-	stq	$2, 3*8($sp)
-	stq	$3, 4*8($sp)
-	stq	$4, 5*8($sp)
-	stq	$5, 6*8($sp)
-	stq	$6, 7*8($sp)
-	stq	$7, 8*8($sp)
-	stq	$8, 9*8($sp)
-	stq	$16, 10*8($sp)
-	stq	$17, 11*8($sp)
-	stq	$18, 12*8($sp)
-	stq	$19, 13*8($sp)
-	stq	$20, 14*8($sp)
-	stq	$21, 15*8($sp)
-	stq	$22, 16*8($sp)
-	stq	$23, 17*8($sp)
-	stq	$24, 18*8($sp)
-	stq	$25, 19*8($sp)
-	stq	$29, 20*8($sp)
-	stt	$f0, 21*8($sp)
-	stt	$f1, 22*8($sp)
-	stt	$f10, 23*8($sp)
-	stt	$f11, 24*8($sp)
-	stt	$f12, 25*8($sp)
-	stt	$f13, 26*8($sp)
-	stt	$f14, 27*8($sp)
-	stt	$f15, 28*8($sp)
-	stt	$f16, 29*8($sp)
-	stt	$f17, 30*8($sp)
-	stt	$f18, 31*8($sp)
-	stt	$f19, 32*8($sp)
-	stt	$f20, 33*8($sp)
-	stt	$f21, 34*8($sp)
-	stt	$f22, 35*8($sp)
-	stt	$f23, 36*8($sp)
-	stt	$f24, 37*8($sp)
-	stt	$f25, 38*8($sp)
-	stt	$f26, 39*8($sp)
-	stt	$f27, 40*8($sp)
-	stt	$f28, 41*8($sp)
-	stt	$f29, 42*8($sp)
-	stt	$f30, 43*8($sp)
-	.mask	0x27ff01ff, -44*8
-	.fmask	0xfffffc03, -(44-21)*8
-	/* Set up our $gp */
-	br	$gp, .+4
-	ldgp	$gp, 0($gp)
-	.prologue 0
-	/* Set up the arguments for fixup: */
-	/* $16 = link_map out of plt0 */
-	/* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */
-	/* $18 = return address */
-	subq	$28, $27, $17
-	ldq	$16, 8($27)
-	subq	$17, 20, $17
-	mov	$26, $18
-	addq	$17, $17, $17
-	/* Do the fixup */
-	bsr	$26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng
-	/* Move the destination address into position.  */
-	mov	$0, $27
-	/* Restore program registers.  */
-	ldq	$26, 0*8($sp)
-	ldq	$0, 1*8($sp)
-	ldq	$1, 2*8($sp)
-	ldq	$2, 3*8($sp)
-	ldq	$3, 4*8($sp)
-	ldq	$4, 5*8($sp)
-	ldq	$5, 6*8($sp)
-	ldq	$6, 7*8($sp)
-	ldq	$7, 8*8($sp)
-	ldq	$8, 9*8($sp)
-	ldq	$16, 10*8($sp)
-	ldq	$17, 11*8($sp)
-	ldq	$18, 12*8($sp)
-	ldq	$19, 13*8($sp)
-	ldq	$20, 14*8($sp)
-	ldq	$21, 15*8($sp)
-	ldq	$22, 16*8($sp)
-	ldq	$23, 17*8($sp)
-	ldq	$24, 18*8($sp)
-	ldq	$25, 19*8($sp)
-	ldq	$29, 20*8($sp)
-	ldt	$f0, 21*8($sp)
-	ldt	$f1, 22*8($sp)
-	ldt	$f10, 23*8($sp)
-	ldt	$f11, 24*8($sp)
-	ldt	$f12, 25*8($sp)
-	ldt	$f13, 26*8($sp)
-	ldt	$f14, 27*8($sp)
-	ldt	$f15, 28*8($sp)
-	ldt	$f16, 29*8($sp)
-	ldt	$f17, 30*8($sp)
-	ldt	$f18, 31*8($sp)
-	ldt	$f19, 32*8($sp)
-	ldt	$f20, 33*8($sp)
-	ldt	$f21, 34*8($sp)
-	ldt	$f22, 35*8($sp)
-	ldt	$f23, 36*8($sp)
-	ldt	$f24, 37*8($sp)
-	ldt	$f25, 38*8($sp)
-	ldt	$f26, 39*8($sp)
-	ldt	$f27, 40*8($sp)
-	ldt	$f28, 41*8($sp)
-	ldt	$f29, 42*8($sp)
-	ldt	$f30, 43*8($sp)
-	/* Flush the Icache after having modified the .plt code.  */
-	" #IMB "
-	/* Clean up and turn control to the destination */
-	lda	$sp, 44*8($sp)
-	jmp	$31, ($27)
+	.globl " #tramp_name "					\n\
+	.ent " #tramp_name "					\n\
+" #tramp_name ":						\n\
+	lda	$sp, -44*8($sp)					\n\
+	.frame	$sp, 44*8, $26					\n\
+	/* Preserve all integer registers that C normally	\n\
+	   doesn't.  */						\n\
+	stq	$26, 0*8($sp)					\n\
+	stq	$0, 1*8($sp)					\n\
+	stq	$1, 2*8($sp)					\n\
+	stq	$2, 3*8($sp)					\n\
+	stq	$3, 4*8($sp)					\n\
+	stq	$4, 5*8($sp)					\n\
+	stq	$5, 6*8($sp)					\n\
+	stq	$6, 7*8($sp)					\n\
+	stq	$7, 8*8($sp)					\n\
+	stq	$8, 9*8($sp)					\n\
+	stq	$16, 10*8($sp)					\n\
+	stq	$17, 11*8($sp)					\n\
+	stq	$18, 12*8($sp)					\n\
+	stq	$19, 13*8($sp)					\n\
+	stq	$20, 14*8($sp)					\n\
+	stq	$21, 15*8($sp)					\n\
+	stq	$22, 16*8($sp)					\n\
+	stq	$23, 17*8($sp)					\n\
+	stq	$24, 18*8($sp)					\n\
+	stq	$25, 19*8($sp)					\n\
+	stq	$29, 20*8($sp)					\n\
+	stt	$f0, 21*8($sp)					\n\
+	stt	$f1, 22*8($sp)					\n\
+	stt	$f10, 23*8($sp)					\n\
+	stt	$f11, 24*8($sp)					\n\
+	stt	$f12, 25*8($sp)					\n\
+	stt	$f13, 26*8($sp)					\n\
+	stt	$f14, 27*8($sp)					\n\
+	stt	$f15, 28*8($sp)					\n\
+	stt	$f16, 29*8($sp)					\n\
+	stt	$f17, 30*8($sp)					\n\
+	stt	$f18, 31*8($sp)					\n\
+	stt	$f19, 32*8($sp)					\n\
+	stt	$f20, 33*8($sp)					\n\
+	stt	$f21, 34*8($sp)					\n\
+	stt	$f22, 35*8($sp)					\n\
+	stt	$f23, 36*8($sp)					\n\
+	stt	$f24, 37*8($sp)					\n\
+	stt	$f25, 38*8($sp)					\n\
+	stt	$f26, 39*8($sp)					\n\
+	stt	$f27, 40*8($sp)					\n\
+	stt	$f28, 41*8($sp)					\n\
+	stt	$f29, 42*8($sp)					\n\
+	stt	$f30, 43*8($sp)					\n\
+	.mask	0x27ff01ff, -44*8				\n\
+	.fmask	0xfffffc03, -(44-21)*8				\n\
+	/* Set up our $gp */					\n\
+	br	$gp, .+4					\n\
+	ldgp	$gp, 0($gp)					\n\
+	.prologue 0						\n\
+	/* Set up the arguments for fixup: */			\n\
+	/* $16 = link_map out of plt0 */			\n\
+	/* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */\n\
+	/* $18 = return address */				\n\
+	subq	$28, $27, $17					\n\
+	ldq	$16, 8($27)					\n\
+	subq	$17, 20, $17					\n\
+	mov	$26, $18					\n\
+	addq	$17, $17, $17					\n\
+	/* Do the fixup */					\n\
+	bsr	$26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng\n\
+	/* Move the destination address into position.  */	\n\
+	mov	$0, $27						\n\
+	/* Restore program registers.  */			\n\
+	ldq	$26, 0*8($sp)					\n\
+	ldq	$0, 1*8($sp)					\n\
+	ldq	$1, 2*8($sp)					\n\
+	ldq	$2, 3*8($sp)					\n\
+	ldq	$3, 4*8($sp)					\n\
+	ldq	$4, 5*8($sp)					\n\
+	ldq	$5, 6*8($sp)					\n\
+	ldq	$6, 7*8($sp)					\n\
+	ldq	$7, 8*8($sp)					\n\
+	ldq	$8, 9*8($sp)					\n\
+	ldq	$16, 10*8($sp)					\n\
+	ldq	$17, 11*8($sp)					\n\
+	ldq	$18, 12*8($sp)					\n\
+	ldq	$19, 13*8($sp)					\n\
+	ldq	$20, 14*8($sp)					\n\
+	ldq	$21, 15*8($sp)					\n\
+	ldq	$22, 16*8($sp)					\n\
+	ldq	$23, 17*8($sp)					\n\
+	ldq	$24, 18*8($sp)					\n\
+	ldq	$25, 19*8($sp)					\n\
+	ldq	$29, 20*8($sp)					\n\
+	ldt	$f0, 21*8($sp)					\n\
+	ldt	$f1, 22*8($sp)					\n\
+	ldt	$f10, 23*8($sp)					\n\
+	ldt	$f11, 24*8($sp)					\n\
+	ldt	$f12, 25*8($sp)					\n\
+	ldt	$f13, 26*8($sp)					\n\
+	ldt	$f14, 27*8($sp)					\n\
+	ldt	$f15, 28*8($sp)					\n\
+	ldt	$f16, 29*8($sp)					\n\
+	ldt	$f17, 30*8($sp)					\n\
+	ldt	$f18, 31*8($sp)					\n\
+	ldt	$f19, 32*8($sp)					\n\
+	ldt	$f20, 33*8($sp)					\n\
+	ldt	$f21, 34*8($sp)					\n\
+	ldt	$f22, 35*8($sp)					\n\
+	ldt	$f23, 36*8($sp)					\n\
+	ldt	$f24, 37*8($sp)					\n\
+	ldt	$f25, 38*8($sp)					\n\
+	ldt	$f26, 39*8($sp)					\n\
+	ldt	$f27, 40*8($sp)					\n\
+	ldt	$f28, 41*8($sp)					\n\
+	ldt	$f29, 42*8($sp)					\n\
+	ldt	$f30, 43*8($sp)					\n\
+	/* Flush the Icache after having modified the .plt code.  */\n\
+	" #IMB "						\n\
+	/* Clean up and turn control to the destination */	\n\
+	lda	$sp, 44*8($sp)					\n\
+	jmp	$31, ($27)					\n\
 	.end " #tramp_name)
 
 #ifndef PROF
@@ -292,85 +294,87 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
    its return value is the user program's entry point.  */
 
 #define RTLD_START asm ("\
-.text
-	.set at
-	.globl _start
-	.ent _start
-_start:
-	br	$gp, 0f
-0:	ldgp	$gp, 0($gp)
-	.prologue 0
-	/* Pass pointer to argument block to _dl_start.  */
-	mov	$sp, $16
-	bsr	$26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng
-	.end _start
-	/* FALLTHRU */
-	.globl _dl_start_user
-	.ent _dl_start_user
-_dl_start_user:
-	.frame $30,0,$31,0
-	.prologue 0
-	/* Save the user entry point address in s0.  */
-	mov	$0, $9
-	/* Store the highest stack address.  */
-	stq	$30, __libc_stack_end
-	/* See if we were run as a command with the executable file
-	   name as an extra leading argument.  */
-	ldl	$1, _dl_skip_args
-	bne	$1, $fixup_stack
-$fixup_stack_ret:
-	/* The special initializer gets called with the stack just
-	   as the application's entry point will see it; it can
-	   switch stacks if it moves these contents over.  */
-" RTLD_START_SPECIAL_INIT "
-	/* Call _dl_init(_dl_loaded, argc, argv, envp) to run initializers.  */
-	ldq	$16, _dl_loaded
-	ldq	$17, 0($sp)
-	lda	$18, 8($sp)
-	s8addq	$17, 8, $19
-	addq	$19, $18, $19
-	jsr	$26, _dl_init
-	/* Pass our finalizer function to the user in $0. */
-	lda	$0, _dl_fini
-	/* Jump to the user's entry point.  */
-	mov	$9, $27
-	jmp	($9)
-$fixup_stack:
-	/* Adjust the stack pointer to skip _dl_skip_args words.  This
-	   involves copying everything down, since the stack pointer must
-	   always be 16-byte aligned.  */
-	ldq	$2, 0($sp)
-	ldq	$5, _dl_argv
-	subq	$31, $1, $6
-	subq	$2, $1, $2
-	s8addq	$6, $5, $5
-	mov	$sp, $4
-	s8addq	$1, $sp, $3
-	stq	$2, 0($sp)
-	stq	$5, _dl_argv
-	/* Copy down argv.  */
-0:	ldq	$5, 8($3)
-	addq	$4, 8, $4
-	addq	$3, 8, $3
-	stq	$5, 0($4)
-	bne	$5, 0b
-	/* Copy down envp.  */
-1:	ldq	$5, 8($3)
-	addq	$4, 8, $4
-	addq	$3, 8, $3
-	stq	$5, 0($4)
-	bne	$5, 1b
-	/* Copy down auxiliary table.  */
-2:	ldq	$5, 8($3)
-	ldq	$6, 16($3)
-	addq	$4, 16, $4
-	addq	$3, 16, $3
-	stq	$5, -8($4)
-	stq	$6, 0($4)
-	bne	$5, 2b
-	br	$fixup_stack_ret
-	.end _dl_start_user
-	.set noat
+.text								\n\
+	.set at							\n\
+	.globl _start						\n\
+	.ent _start						\n\
+_start:								\n\
+	br	$gp, 0f						\n\
+0:	ldgp	$gp, 0($gp)					\n\
+	.prologue 0						\n\
+	/* Pass pointer to argument block to _dl_start.  */	\n\
+	mov	$sp, $16					\n\
+	bsr	$26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng	\n\
+	.end _start						\n\
+	/* FALLTHRU */						\n\
+	.globl _dl_start_user					\n\
+	.ent _dl_start_user					\n\
+_dl_start_user:							\n\
+	.frame $30,0,$31,0					\n\
+	.prologue 0						\n\
+	/* Save the user entry point address in s0.  */		\n\
+	mov	$0, $9						\n\
+	/* Store the highest stack address.  */			\n\
+	stq	$30, __libc_stack_end				\n\
+	/* See if we were run as a command with the executable	\n\
+	   file name as an extra leading argument.  */		\n\
+	ldl	$1, _dl_skip_args				\n\
+	bne	$1, $fixup_stack				\n\
+$fixup_stack_ret:						\n\
+	/* The special initializer gets called with the stack	\n\
+	   just as the application's entry point will see it;	\n\
+	   it can switch stacks if it moves these contents	\n\
+	   over.  */						\n\
+" RTLD_START_SPECIAL_INIT "					\n\
+	/* Call _dl_init(_dl_loaded, argc, argv, envp) to run	\n\
+	   initializers.  */					\n\
+	ldq	$16, _dl_loaded					\n\
+	ldq	$17, 0($sp)					\n\
+	lda	$18, 8($sp)					\n\
+	s8addq	$17, 8, $19					\n\
+	addq	$19, $18, $19					\n\
+	jsr	$26, _dl_init					\n\
+	/* Pass our finalizer function to the user in $0. */	\n\
+	lda	$0, _dl_fini					\n\
+	/* Jump to the user's entry point.  */			\n\
+	mov	$9, $27						\n\
+	jmp	($9)						\n\
+$fixup_stack:							\n\
+	/* Adjust the stack pointer to skip _dl_skip_args words.\n\
+	   This involves copying everything down, since the	\n\
+	   stack pointer must always be 16-byte aligned.  */	\n\
+	ldq	$2, 0($sp)					\n\
+	ldq	$5, _dl_argv					\n\
+	subq	$31, $1, $6					\n\
+	subq	$2, $1, $2					\n\
+	s8addq	$6, $5, $5					\n\
+	mov	$sp, $4						\n\
+	s8addq	$1, $sp, $3					\n\
+	stq	$2, 0($sp)					\n\
+	stq	$5, _dl_argv					\n\
+	/* Copy down argv.  */					\n\
+0:	ldq	$5, 8($3)					\n\
+	addq	$4, 8, $4					\n\
+	addq	$3, 8, $3					\n\
+	stq	$5, 0($4)					\n\
+	bne	$5, 0b						\n\
+	/* Copy down envp.  */					\n\
+1:	ldq	$5, 8($3)					\n\
+	addq	$4, 8, $4					\n\
+	addq	$3, 8, $3					\n\
+	stq	$5, 0($4)					\n\
+	bne	$5, 1b						\n\
+	/* Copy down auxiliary table.  */			\n\
+2:	ldq	$5, 8($3)					\n\
+	ldq	$6, 16($3)					\n\
+	addq	$4, 16, $4					\n\
+	addq	$3, 16, $3					\n\
+	stq	$5, -8($4)					\n\
+	stq	$6, 0($4)					\n\
+	bne	$5, 2b						\n\
+	br	$fixup_stack_ret				\n\
+	.end _dl_start_user					\n\
+	.set noat						\n\
 .previous");
 
 #ifndef RTLD_START_SPECIAL_INIT
diff --git a/sysdeps/unix/sysv/linux/getloadavg.c b/sysdeps/unix/sysv/linux/getloadavg.c
index 39b143336a..e1a372cd5f 100644
--- a/sysdeps/unix/sysv/linux/getloadavg.c
+++ b/sysdeps/unix/sysv/linux/getloadavg.c
@@ -18,9 +18,10 @@
    02111-1307 USA.  */
 
 #include <errno.h>
-#include <unistd.h>
 #include <fcntl.h>
+#include <locale.h>
 #include <stdlib.h>
+#include <unistd.h>
 
 /* Put the 1 minute, 5 minute and 15 minute load averages
    into the first NELEM elements of LOADAVG.
@@ -53,8 +54,8 @@ getloadavg (double loadavg[], int nelem)
       for (i = 0; i < nelem; ++i)
 	{
 	  char *endp;
-	  loadavg[i] = strtod (p, &endp);
-	  if (!endp || endp == p)
+	  loadavg[i] = __strtod_l (p, &endp, &_nl_C_locobj);
+	  if (endp == NULL || endp == p)
 	    /* This should not happen.  The format of /proc/loadavg
 	       must have changed.  Don't return with what we have,
 	       signal an error.  */