strub: sparc: omit frame in strub_leave [PR112917]

If we allow __strub_leave to allocate a frame on sparc, it will
overlap with a lot of the stack range we're supposed to scrub, because
of the large fixed-size outgoing args and register save area.
Unfortunately, setting up the PIC register seems to prevent the frame
pointer from being omitted.

Since the strub runtime doesn't issue calls or use global variables,
at least on sparc, disabling PIC to compile strub.c seems to do the
right thing.


for  libgcc/ChangeLog

	PR middle-end/112917
	* config.host (sparc, sparc64): Enable...
	* config/sparc/t-sparc: ... this new fragment.
This commit is contained in:
Alexandre Oliva 2023-12-14 03:21:37 -03:00 committed by Alexandre Oliva
parent 672db38c6f
commit 9fa35dbb90
2 changed files with 6 additions and 0 deletions

View File

@ -199,9 +199,11 @@ riscv*-*-*)
;;
sparc64*-*-*)
cpu_type=sparc
tmake_file="${tmake_file} sparc/t-sparc"
;;
sparc*-*-*)
cpu_type=sparc
tmake_file="${tmake_file} sparc/t-sparc"
;;
s390*-*-*)
cpu_type=s390

View File

@ -0,0 +1,4 @@
# This is needed for __strub_leave to omit the frame pointer, without
# which it will allocate a register save area on the stack and leave
# it unscrubbed and most likely unused, because it's a leaf function.
CFLAGS-strub.c += -fno-PIC -fomit-frame-pointer