Message ID | 20230731091042.139159-3-akihiko.odaki@daynix.com |
---|---|
State | New |
Headers | show |
Series | Accompany -nostdlib with -fno-stack-protector | expand |
On 31/07/2023 11.10, Akihiko Odaki wrote: > A build of GCC 13.2 will have stack protector enabled by default if it > was configured with --enable-default-ssp option. For such a compiler, > it is necessary to explicitly disable stack protector when linking > without standard libraries. > > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> > --- > tests/tcg/mips/hello-mips.c | 4 ++-- > tests/tcg/Makefile.target | 2 +- > tests/tcg/aarch64/Makefile.target | 2 +- > tests/tcg/arm/Makefile.target | 2 +- > tests/tcg/cris/Makefile.target | 2 +- > tests/tcg/hexagon/Makefile.target | 2 +- > tests/tcg/i386/Makefile.target | 2 +- > tests/tcg/minilib/Makefile.target | 2 +- > tests/tcg/mips/Makefile.target | 2 +- > 9 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/tests/tcg/mips/hello-mips.c b/tests/tcg/mips/hello-mips.c > index 4e1cf501af..0ba5f1bf23 100644 > --- a/tests/tcg/mips/hello-mips.c > +++ b/tests/tcg/mips/hello-mips.c > @@ -5,8 +5,8 @@ > * http://www.linux-mips.org/wiki/MIPSABIHistory > * http://www.linux.com/howtos/Assembly-HOWTO/mips.shtml > * > -* mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -mabi=32 \ > -* -O2 -static -o hello-mips hello-mips.c > +* mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -fno-stack-protector \ > + -mabi=32 -O2 -static -o hello-mips hello-mips.c You've lost the "*" at the beginning of the comment line here. But apart from that nit, the patch looks sane to me. Cc:-ing Alex Bennée ... could pick this patch up? Thomas > * > */ > #define __NR_SYSCALL_BASE 4000 > diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target > index 3d7837d3b8..c43020d990 100644 > --- a/tests/tcg/Makefile.target > +++ b/tests/tcg/Makefile.target > @@ -123,7 +123,7 @@ else > # For softmmu targets we include a different Makefile fragment as the > # build options for bare programs are usually pretty different. They > # are expected to provide their own build recipes. > -EXTRA_CFLAGS += -ffreestanding > +EXTRA_CFLAGS += -ffreestanding -fno-stack-protector > -include $(SRC_PATH)/tests/tcg/minilib/Makefile.target > -include $(SRC_PATH)/tests/tcg/multiarch/system/Makefile.softmmu-target > -include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.softmmu-target > diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target > index 617f821613..55f8609897 100644 > --- a/tests/tcg/aarch64/Makefile.target > +++ b/tests/tcg/aarch64/Makefile.target > @@ -49,7 +49,7 @@ endif > # bti-1 tests the elf notes, so we require special compiler support. > ifneq ($(CROSS_CC_HAS_ARMV8_BTI),) > AARCH64_TESTS += bti-1 bti-3 > -bti-1 bti-3: CFLAGS += -mbranch-protection=standard > +bti-1 bti-3: CFLAGS += -fno-stack-protector -mbranch-protection=standard > bti-1 bti-3: LDFLAGS += -nostdlib > endif > # bti-2 tests PROT_BTI, so no special compiler support required. > diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target > index 0038cef02c..3473f4619e 100644 > --- a/tests/tcg/arm/Makefile.target > +++ b/tests/tcg/arm/Makefile.target > @@ -12,7 +12,7 @@ float_madds: CFLAGS+=-mfpu=neon-vfpv4 > > # Basic Hello World > ARM_TESTS = hello-arm > -hello-arm: CFLAGS+=-marm -ffreestanding > +hello-arm: CFLAGS+=-marm -ffreestanding -fno-stack-protector > hello-arm: LDFLAGS+=-nostdlib > > # IWMXT floating point extensions > diff --git a/tests/tcg/cris/Makefile.target b/tests/tcg/cris/Makefile.target > index 43587d2769..713e2a5b6c 100644 > --- a/tests/tcg/cris/Makefile.target > +++ b/tests/tcg/cris/Makefile.target > @@ -30,7 +30,7 @@ AS = $(CC) -x assembler-with-cpp > LD = $(CC) > > # we rely on GCC inline:ing the stuff we tell it to in many places here. > -CFLAGS = -Winline -Wall -g -O2 -static > +CFLAGS = -Winline -Wall -g -O2 -static -fno-stack-protector > NOSTDFLAGS = -nostartfiles -nostdlib > ASFLAGS += -mcpu=v10 -g -Wa,-I,$(SRC_PATH)/tests/tcg/cris/bare > CRT_FILES = crt.o sys.o > diff --git a/tests/tcg/hexagon/Makefile.target b/tests/tcg/hexagon/Makefile.target > index 87ed2c90b9..f839b2c0d5 100644 > --- a/tests/tcg/hexagon/Makefile.target > +++ b/tests/tcg/hexagon/Makefile.target > @@ -19,7 +19,7 @@ > EXTRA_RUNS = > > CFLAGS += -Wno-incompatible-pointer-types -Wno-undefined-internal > -CFLAGS += -fno-unroll-loops > +CFLAGS += -fno-unroll-loops -fno-stack-protector > > HEX_SRC=$(SRC_PATH)/tests/tcg/hexagon > VPATH += $(HEX_SRC) > diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target > index fdf757c6ce..3dec7c6c42 100644 > --- a/tests/tcg/i386/Makefile.target > +++ b/tests/tcg/i386/Makefile.target > @@ -35,7 +35,7 @@ run-test-aes: QEMU_OPTS += -cpu max > # > # hello-i386 is a barebones app > # > -hello-i386: CFLAGS+=-ffreestanding > +hello-i386: CFLAGS+=-ffreestanding -fno-stack-protector > hello-i386: LDFLAGS+=-nostdlib > > # test-386 includes a couple of additional objects that need to be > diff --git a/tests/tcg/minilib/Makefile.target b/tests/tcg/minilib/Makefile.target > index c821d2806a..af0bf54be9 100644 > --- a/tests/tcg/minilib/Makefile.target > +++ b/tests/tcg/minilib/Makefile.target > @@ -12,7 +12,7 @@ SYSTEM_MINILIB_SRC=$(SRC_PATH)/tests/tcg/minilib > MINILIB_SRCS=$(wildcard $(SYSTEM_MINILIB_SRC)/*.c) > MINILIB_OBJS=$(patsubst $(SYSTEM_MINILIB_SRC)/%.c, %.o, $(MINILIB_SRCS)) > > -MINILIB_CFLAGS+=-nostdlib -ggdb -O0 > +MINILIB_CFLAGS+=-nostdlib -fno-stack-protector -ggdb -O0 > MINILIB_INC=-isystem $(SYSTEM_MINILIB_SRC) > > .PRECIOUS: $(MINILIB_OBJS) > diff --git a/tests/tcg/mips/Makefile.target b/tests/tcg/mips/Makefile.target > index 1a994d5525..5d17c1706e 100644 > --- a/tests/tcg/mips/Makefile.target > +++ b/tests/tcg/mips/Makefile.target > @@ -14,6 +14,6 @@ MIPS_TESTS=hello-mips > > TESTS += $(MIPS_TESTS) > > -hello-mips: CFLAGS+=-mno-abicalls -fno-PIC -mabi=32 > +hello-mips: CFLAGS+=-mno-abicalls -fno-PIC -fno-stack-protector -mabi=32 > hello-mips: LDFLAGS+=-nostdlib > endif
Thomas Huth <thuth@redhat.com> writes: > On 31/07/2023 11.10, Akihiko Odaki wrote: >> A build of GCC 13.2 will have stack protector enabled by default if it >> was configured with --enable-default-ssp option. For such a compiler, >> it is necessary to explicitly disable stack protector when linking >> without standard libraries. >> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> >> --- >> tests/tcg/mips/hello-mips.c | 4 ++-- >> tests/tcg/Makefile.target | 2 +- >> tests/tcg/aarch64/Makefile.target | 2 +- >> tests/tcg/arm/Makefile.target | 2 +- >> tests/tcg/cris/Makefile.target | 2 +- >> tests/tcg/hexagon/Makefile.target | 2 +- >> tests/tcg/i386/Makefile.target | 2 +- >> tests/tcg/minilib/Makefile.target | 2 +- >> tests/tcg/mips/Makefile.target | 2 +- >> 9 files changed, 10 insertions(+), 10 deletions(-) >> diff --git a/tests/tcg/mips/hello-mips.c >> b/tests/tcg/mips/hello-mips.c >> index 4e1cf501af..0ba5f1bf23 100644 >> --- a/tests/tcg/mips/hello-mips.c >> +++ b/tests/tcg/mips/hello-mips.c >> @@ -5,8 +5,8 @@ >> * http://www.linux-mips.org/wiki/MIPSABIHistory >> * http://www.linux.com/howtos/Assembly-HOWTO/mips.shtml >> * >> -* mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -mabi=32 \ >> -* -O2 -static -o hello-mips hello-mips.c >> +* mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -fno-stack-protector \ >> + -mabi=32 -O2 -static -o hello-mips hello-mips.c > > You've lost the "*" at the beginning of the comment line here. > > But apart from that nit, the patch looks sane to me. > > Cc:-ing Alex Bennée ... could pick this patch up? Queued to testing/next with tweak to comment, thanks.
diff --git a/tests/tcg/mips/hello-mips.c b/tests/tcg/mips/hello-mips.c index 4e1cf501af..0ba5f1bf23 100644 --- a/tests/tcg/mips/hello-mips.c +++ b/tests/tcg/mips/hello-mips.c @@ -5,8 +5,8 @@ * http://www.linux-mips.org/wiki/MIPSABIHistory * http://www.linux.com/howtos/Assembly-HOWTO/mips.shtml * -* mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -mabi=32 \ -* -O2 -static -o hello-mips hello-mips.c +* mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -fno-stack-protector \ + -mabi=32 -O2 -static -o hello-mips hello-mips.c * */ #define __NR_SYSCALL_BASE 4000 diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target index 3d7837d3b8..c43020d990 100644 --- a/tests/tcg/Makefile.target +++ b/tests/tcg/Makefile.target @@ -123,7 +123,7 @@ else # For softmmu targets we include a different Makefile fragment as the # build options for bare programs are usually pretty different. They # are expected to provide their own build recipes. -EXTRA_CFLAGS += -ffreestanding +EXTRA_CFLAGS += -ffreestanding -fno-stack-protector -include $(SRC_PATH)/tests/tcg/minilib/Makefile.target -include $(SRC_PATH)/tests/tcg/multiarch/system/Makefile.softmmu-target -include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.softmmu-target diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target index 617f821613..55f8609897 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -49,7 +49,7 @@ endif # bti-1 tests the elf notes, so we require special compiler support. ifneq ($(CROSS_CC_HAS_ARMV8_BTI),) AARCH64_TESTS += bti-1 bti-3 -bti-1 bti-3: CFLAGS += -mbranch-protection=standard +bti-1 bti-3: CFLAGS += -fno-stack-protector -mbranch-protection=standard bti-1 bti-3: LDFLAGS += -nostdlib endif # bti-2 tests PROT_BTI, so no special compiler support required. diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target index 0038cef02c..3473f4619e 100644 --- a/tests/tcg/arm/Makefile.target +++ b/tests/tcg/arm/Makefile.target @@ -12,7 +12,7 @@ float_madds: CFLAGS+=-mfpu=neon-vfpv4 # Basic Hello World ARM_TESTS = hello-arm -hello-arm: CFLAGS+=-marm -ffreestanding +hello-arm: CFLAGS+=-marm -ffreestanding -fno-stack-protector hello-arm: LDFLAGS+=-nostdlib # IWMXT floating point extensions diff --git a/tests/tcg/cris/Makefile.target b/tests/tcg/cris/Makefile.target index 43587d2769..713e2a5b6c 100644 --- a/tests/tcg/cris/Makefile.target +++ b/tests/tcg/cris/Makefile.target @@ -30,7 +30,7 @@ AS = $(CC) -x assembler-with-cpp LD = $(CC) # we rely on GCC inline:ing the stuff we tell it to in many places here. -CFLAGS = -Winline -Wall -g -O2 -static +CFLAGS = -Winline -Wall -g -O2 -static -fno-stack-protector NOSTDFLAGS = -nostartfiles -nostdlib ASFLAGS += -mcpu=v10 -g -Wa,-I,$(SRC_PATH)/tests/tcg/cris/bare CRT_FILES = crt.o sys.o diff --git a/tests/tcg/hexagon/Makefile.target b/tests/tcg/hexagon/Makefile.target index 87ed2c90b9..f839b2c0d5 100644 --- a/tests/tcg/hexagon/Makefile.target +++ b/tests/tcg/hexagon/Makefile.target @@ -19,7 +19,7 @@ EXTRA_RUNS = CFLAGS += -Wno-incompatible-pointer-types -Wno-undefined-internal -CFLAGS += -fno-unroll-loops +CFLAGS += -fno-unroll-loops -fno-stack-protector HEX_SRC=$(SRC_PATH)/tests/tcg/hexagon VPATH += $(HEX_SRC) diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target index fdf757c6ce..3dec7c6c42 100644 --- a/tests/tcg/i386/Makefile.target +++ b/tests/tcg/i386/Makefile.target @@ -35,7 +35,7 @@ run-test-aes: QEMU_OPTS += -cpu max # # hello-i386 is a barebones app # -hello-i386: CFLAGS+=-ffreestanding +hello-i386: CFLAGS+=-ffreestanding -fno-stack-protector hello-i386: LDFLAGS+=-nostdlib # test-386 includes a couple of additional objects that need to be diff --git a/tests/tcg/minilib/Makefile.target b/tests/tcg/minilib/Makefile.target index c821d2806a..af0bf54be9 100644 --- a/tests/tcg/minilib/Makefile.target +++ b/tests/tcg/minilib/Makefile.target @@ -12,7 +12,7 @@ SYSTEM_MINILIB_SRC=$(SRC_PATH)/tests/tcg/minilib MINILIB_SRCS=$(wildcard $(SYSTEM_MINILIB_SRC)/*.c) MINILIB_OBJS=$(patsubst $(SYSTEM_MINILIB_SRC)/%.c, %.o, $(MINILIB_SRCS)) -MINILIB_CFLAGS+=-nostdlib -ggdb -O0 +MINILIB_CFLAGS+=-nostdlib -fno-stack-protector -ggdb -O0 MINILIB_INC=-isystem $(SYSTEM_MINILIB_SRC) .PRECIOUS: $(MINILIB_OBJS) diff --git a/tests/tcg/mips/Makefile.target b/tests/tcg/mips/Makefile.target index 1a994d5525..5d17c1706e 100644 --- a/tests/tcg/mips/Makefile.target +++ b/tests/tcg/mips/Makefile.target @@ -14,6 +14,6 @@ MIPS_TESTS=hello-mips TESTS += $(MIPS_TESTS) -hello-mips: CFLAGS+=-mno-abicalls -fno-PIC -mabi=32 +hello-mips: CFLAGS+=-mno-abicalls -fno-PIC -fno-stack-protector -mabi=32 hello-mips: LDFLAGS+=-nostdlib endif
A build of GCC 13.2 will have stack protector enabled by default if it was configured with --enable-default-ssp option. For such a compiler, it is necessary to explicitly disable stack protector when linking without standard libraries. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> --- tests/tcg/mips/hello-mips.c | 4 ++-- tests/tcg/Makefile.target | 2 +- tests/tcg/aarch64/Makefile.target | 2 +- tests/tcg/arm/Makefile.target | 2 +- tests/tcg/cris/Makefile.target | 2 +- tests/tcg/hexagon/Makefile.target | 2 +- tests/tcg/i386/Makefile.target | 2 +- tests/tcg/minilib/Makefile.target | 2 +- tests/tcg/mips/Makefile.target | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-)