diff options
author | Roland McGrath <roland@gnu.org> | 2002-09-20 21:39:29 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-09-20 21:39:29 +0000 |
commit | 1010f17b925bdd26f313e64084bc82f57be9ab03 (patch) | |
tree | 2b9fe9ce8da41af109603532949b4d826c5ed0cf /sysdeps/powerpc/elf/libc-start.c | |
parent | 9db6ee8d2fa48ade4451c0de80980b7f242c0f17 (diff) | |
download | glibc-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.c | 13 |
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 |