This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
[PATCH] ppc64 libc-start changes
- From: Steve Munroe <sjmunroe at vnet dot ibm dot com>
- To: libc-alpha at sources dot redhat dot com
- Cc: aj at suse dot de, geoffk at geoffk dot org, roland at frob dot com
- Date: Fri, 20 Sep 2002 16:51:34 -0500
- Subject: [PATCH] ppc64 libc-start changes
Hopefully these are the last changes to make libc-start.c common to powerpc2
and powerpc64.
2002-09-20 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/elf/libc-start.c: Stack references must be
double word aligned for powerpc64. Remove unnecessary ElfW(auxv_t)
casts.
>>>>>> ppc64-libc-start.patch
diff -rupPN libc23-cvstip-20020918/sysdeps/powerpc/elf/libc-start.c libc23/sysdeps/powerpc/elf/libc-start.c
--- libc23-cvstip-20020918/sysdeps/powerpc/elf/libc-start.c Mon Sep 2 21:44:56 2002
+++ libc23/sysdeps/powerpc/elf/libc-start.c Fri Sep 20 16:21:59 2002
@@ -104,7 +104,8 @@ BP_SYM (__libc_start_main) (int argc, ch
/* ...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 *__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, ch
++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, ch
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
<<<<<< ppc64-libc-start.patch