sparc: Fix sparc32 Fix argument passing to __libc_start_main (BZ 32981)

Commit 404526ee2e changed _start to write
the last argument to __libc_start_main without taking into consideration
that the function did not create a full stack frame, which leads to
overwriting the argv[0].
This commit is contained in:
Adhemerval Zanella 2025-06-13 11:23:44 -03:00
parent 0dbbc44bfd
commit 8788bd77d6
1 changed files with 4 additions and 3 deletions

View File

@ -35,6 +35,7 @@
#include <sysdep.h>
#define FRAME_SIZE 104
.section ".text"
.align 4
@ -48,12 +49,12 @@ _start:
/* Terminate the stack frame, and reserve space for functions to
drop their arguments. */
mov %g0, %fp
sub %sp, 6*4, %sp
sub %sp, FRAME_SIZE, %sp
/* Extract the arguments and environment as encoded on the stack. The
argument info starts after one register window (16 words) past the SP. */
ld [%sp+22*4], %o1
add %sp, 23*4, %o2
ld [%sp+168], %o1
add %sp, 172, %o2
/* Load the addresses of the user entry points. */
#ifndef PIC