about summary refs log tree commit diff
path: root/sysdeps/powerpc/elf/libc-start.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-09-20 21:39:29 +0000
committerRoland McGrath <roland@gnu.org>2002-09-20 21:39:29 +0000
commit1010f17b925bdd26f313e64084bc82f57be9ab03 (patch)
tree2b9fe9ce8da41af109603532949b4d826c5ed0cf /sysdeps/powerpc/elf/libc-start.c
parent9db6ee8d2fa48ade4451c0de80980b7f242c0f17 (diff)
downloadglibc-1010f17b925bdd26f313e64084bc82f57be9ab03.tar.gz
glibc-1010f17b925bdd26f313e64084bc82f57be9ab03.tar.xz
glibc-1010f17b925bdd26f313e64084bc82f57be9ab03.zip
* sysdeps/powerpc/elf/libc-start.c: Use long in place of int for argc
	load, so as to work on both 32-bit and 64-bit.  Remove unnecessary
	casts.  Align __libc_stack_end to 8 bytes.

2002-09-20  Roland McGrath  <roland@redhat.com>

	* sysdeps/powerpc/fpu/s_lrint.c: Use strong_alias/weak_alias macros
	instead of asm for lrintf, __lrintf aliases.

	* sysdeps/powerpc/fpu/s_lrint.c (__lrint): Change union long array to
	int array for 32-/64-bit compatibility.
	From Steven Munroe  <sjmunroe@us.ibm.com>.
Diffstat (limited to 'sysdeps/powerpc/elf/libc-start.c')
-rw-r--r--sysdeps/powerpc/elf/libc-start.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sysdeps/powerpc/elf/libc-start.c b/sysdeps/powerpc/elf/libc-start.c
index 9450fab68d..6751b9ea06 100644
--- a/sysdeps/powerpc/elf/libc-start.c
+++ b/sysdeps/powerpc/elf/libc-start.c
@@ -104,7 +104,8 @@ BP_SYM (__libc_start_main) (int argc, char *__unbounded *__unbounded ubp_av,
       /* ...in which case, we have argc as the top thing on the
 	 stack, followed by argv (NULL-terminated), envp (likewise),
 	 and the auxilary vector.  */
-      argc = *(int *__unbounded) stack_on_entry;
+      /* 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;
 #ifdef HAVE_AUX_VECTOR
@@ -113,9 +114,8 @@ BP_SYM (__libc_start_main) (int argc, char *__unbounded *__unbounded ubp_av,
         ++temp;
       auxvec = (ElfW(auxv_t) *)++temp;
 
-
 # ifndef SHARED
-      _dl_aux_init ((ElfW(auxv_t) *) auxvec);
+      _dl_aux_init (auxvec);
 # endif
 #endif
       rtld_fini = NULL;
@@ -124,11 +124,12 @@ BP_SYM (__libc_start_main) (int argc, char *__unbounded *__unbounded ubp_av,
   INIT_ARGV_and_ENVIRON;
 
   /* Initialize the __cache_line_size variable from the aux vector.  */
-  __aux_init_cache((ElfW(auxv_t) *) auxvec);
+  __aux_init_cache(auxvec);
 
   /* Store something that has some relationship to the end of the
-     stack, for backtraces.  This variable should be thread-specific.  */
-  __libc_stack_end = stack_on_entry + 4;
+     stack, for backtraces.  This variable should be thread-specific.
+     Use +8 so it works for both 32- and 64-bit.  */
+  __libc_stack_end = stack_on_entry + 8;
 
 #ifndef SHARED
   /* Initialize the thread library at least a bit since the libgcc