[klibc] [PATCH] update crt0.S on ppc32
Olaf Hering
olh at suse.de
Sun Dec 7 21:08:43 PST 2003
On Sat, Nov 29, H. Peter Anvin wrote:
> Olaf Hering wrote:
> >The _start stuff was changed some time ago, but ppc was not updated.
> >This fixes klibc for me. I'm not sure what to do with the second arg to
> >__libc_init, so I set it to 0..
> >
>
> You need to look at the psABI for the target platform (I don't have the
> one for PPC) to find out how to get the onexit pointer. However, it's
> not a huge deal, as I believe Linux always makes it zero. You want to
> at least put in a comment to that effect, though.
I should have looked earlier at this spec. This patch is required to
not overwrite the argv[0].
The stack is linked and a new function will write its address into the
previous frame. If _start doesnt adjust the stack, __libc_init will
write its address to elfdata+4 which is argv[0].
This patch allocates just one frame to avoid this corruption.
--- klibc-0.89/klibc/arch/ppc/crt0.S 2003-11-29 07:19:08.000000000 +0100
+++ klibc/arch/ppc/crt0.S 2003-12-07 20:48:12.000000000 +0100
@@ -7,7 +7,8 @@
.type _start, at function
.globl _start
_start:
- mr 3,1
+ stwu 1,-16(1)
+ addi 3,1,16
li 4,0
bl __libc_init
I still dont see anything about onexit in the spec.
http://www.linuxbase.org/spec/archLSB/PPC32/spec.html#PROCESSINITIALIZATION
--
USB is for mice, FireWire is for men!
sUse lINUX ag, nÜRNBERG
More information about the klibc
mailing list