diff --git a/buildflags.md b/buildflags.md index b565dfe..d20c918 100644 --- a/buildflags.md +++ b/buildflags.md @@ -490,11 +490,10 @@ watermarks are currently disabled on armhpf, and with the `clang` toolchain. If frame pointers are enabled by default (via `%_include_frame_pointers`), -the `-fno-omit-frame-pointer` will be added on all architectures. Additional -flags will be added on specific architectures: +the `-fno-omit-frame-pointer` will be added on all architectures except i686 +and s390x. Additional flags will be added on specific architectures: * `-mno-omit-leaf-frame-pointer` on x86_64 and aarch64 -* `-mbackchain` on s390x ### Architecture-specific compiler flags diff --git a/redhat-rpm-config.spec b/redhat-rpm-config.spec index 70e17c9..67c4247 100644 --- a/redhat-rpm-config.spec +++ b/redhat-rpm-config.spec @@ -4,7 +4,7 @@ # 2) When making changes, increment the version (in baserelease) by 1. # rpmdev-bumpspec and other tools update the macro below, which is used # in Version: to get the desired effect. -%global baserelease 239 +%global baserelease 240 Summary: Red Hat specific rpm configuration files Name: redhat-rpm-config @@ -221,6 +221,9 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/fedora/srpm forge.lua %doc buildflags.md %changelog +* Tue Jan 10 2023 Davide Cavalca - 240-1 +- Do not include frame pointers on i686 and s390x for now + * Wed Jan 4 2023 Davide Cavalca - 239-1 - Enable frame pointers by default - Set arch specific flags for frame pointers support diff --git a/rpmrc b/rpmrc index 6766ff4..9ccea43 100644 --- a/rpmrc +++ b/rpmrc @@ -1,10 +1,10 @@ include: /usr/lib/rpm/rpmrc -optflags: i386 %{__global_compiler_flags} -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection %{_frame_pointers_cflags} -optflags: i486 %{__global_compiler_flags} -m32 -march=i486 -fasynchronous-unwind-tables -fstack-clash-protection %{_frame_pointers_cflags} -optflags: i586 %{__global_compiler_flags} -m32 -march=i586 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection %{_frame_pointers_cflags} -optflags: i686 %{__global_compiler_flags} -m32 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection %{_frame_pointers_cflags} -optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-unwind-tables -fstack-clash-protection %{_frame_pointers_cflags} +optflags: i386 %{__global_compiler_flags} -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection +optflags: i486 %{__global_compiler_flags} -m32 -march=i486 -fasynchronous-unwind-tables -fstack-clash-protection +optflags: i586 %{__global_compiler_flags} -m32 -march=i586 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection +optflags: i686 %{__global_compiler_flags} -m32 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection +optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-unwind-tables -fstack-clash-protection optflags: x86_64 %{__global_compiler_flags} -m64 %{__cflags_arch_x86_64} -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection %{_frame_pointers_cflags} %{_frame_pointers_cflags_x86_64} optflags: ppc64le %{__global_compiler_flags} -m64 %{__cflags_arch_ppc64le} -fasynchronous-unwind-tables -fstack-clash-protection %{_frame_pointers_cflags} @@ -12,7 +12,7 @@ optflags: ppc64le %{__global_compiler_flags} -m64 %{__cflags_arch_ppc64le} -fasy # TODO: Remove armv7hl once f36 goes EOL. optflags: armv7hl %{__global_compiler_flags} -march=armv7-a -mfpu=vfpv3-d16 -mtune=generic-armv7-a -mabi=aapcs-linux -mfloat-abi=hard %{_frame_pointers_cflags} -optflags: s390x %{__global_compiler_flags} -m64 %{__cflags_arch_s390x} -fasynchronous-unwind-tables -fstack-clash-protection %{_frame_pointers_cflags} %{_frame_pointers_cflags_s390x} +optflags: s390x %{__global_compiler_flags} -m64 %{__cflags_arch_s390x} -fasynchronous-unwind-tables -fstack-clash-protection optflags: aarch64 %{__global_compiler_flags} -mbranch-protection=standard -fasynchronous-unwind-tables %[ "%{toolchain}" == "gcc" ? "-fstack-clash-protection" : "" ] %{_frame_pointers_cflags} %{_frame_pointers_cflags_aarch64} diff --git a/tests/include-frame-pointers/runtest.sh b/tests/include-frame-pointers/runtest.sh index 3434684..6e846e2 100755 --- a/tests/include-frame-pointers/runtest.sh +++ b/tests/include-frame-pointers/runtest.sh @@ -23,14 +23,11 @@ validate() { fi } -for arch in aarch64 armv7hl i386 i486 i585 i686 athlon x86_64 ppc64le s390x riscv64; do +for arch in aarch64 armv7hl x86_64 ppc64le riscv64; do case "$arch" in x86_64|aarch64) flags='-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer' ;; - s390x) - flags='-fno-omit-frame-pointer -mbackchain' - ;; *) flags='-fno-omit-frame-pointer' ;; @@ -46,6 +43,15 @@ for arch in aarch64 armv7hl i386 i486 i585 i686 athlon x86_64 ppc64le s390x risc validate "[${arch}] Test that the flags are included by default" done +flags='-fno-omit-frame-pointer' +for arch in i386 i486 i586 i686 athlon s390x; do + rpmeval --target="${arch}-linux" --define='%_include_frame_pointers 1' | grep -qv -- "$flags" + validate "[${arch}] Test that the flags are not included if the macro is defined" + + rpmeval --target="${arch}-linux" | grep -qv -- "$flags" + validate "[${arch}] Test that the flags are not included by default" +done + echo echo "${passed} passed, ${failed} failed"