From 8788bd77d68c6429c7f2dcbd22765525555c3cd8 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 13 Jun 2025 11:23:44 -0300 Subject: [PATCH] sparc: Fix sparc32 Fix argument passing to __libc_start_main (BZ 32981) Commit 404526ee2e58f3c075253943ddc9988f4bd6b80c 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]. --- sysdeps/sparc/sparc32/start.S | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sysdeps/sparc/sparc32/start.S b/sysdeps/sparc/sparc32/start.S index cef7c96cac..8393760da6 100644 --- a/sysdeps/sparc/sparc32/start.S +++ b/sysdeps/sparc/sparc32/start.S @@ -35,6 +35,7 @@ #include +#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