diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk index f5bc6c5b77..ebd8e8f017 100644 --- a/package/gcc/gcc-initial/gcc-initial.mk +++ b/package/gcc/gcc-initial/gcc-initial.mk @@ -43,6 +43,13 @@ HOST_GCC_INITIAL_CONF_OPTS = \ HOST_GCC_INITIAL_CONF_ENV = \ $(HOST_GCC_COMMON_CONF_ENV) +# Enable GCC target libs optimizations to optimize out __register_frame +# when needed for some architectures when building with glibc. +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_107728),y) +HOST_GCC_INITIAL_CONF_ENV += CFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CFLAGS) -O1" +HOST_GCC_INITIAL_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS) -O1" +endif + HOST_GCC_INITIAL_MAKE_OPTS = $(HOST_GCC_COMMON_MAKE_OPTS) all-gcc all-target-libgcc HOST_GCC_INITIAL_INSTALL_OPTS = install-gcc install-target-libgcc diff --git a/toolchain/Config.in b/toolchain/Config.in index 3c9d61c66b..cb073950de 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -228,6 +228,18 @@ config BR2_TOOLCHAIN_HAS_GCC_BUG_104028 bool default y if BR2_m68k +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107728 +# https://sourceware.org/bugzilla/show_bug.cgi?id=29621 +config BR2_TOOLCHAIN_HAS_GCC_BUG_107728 + bool + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_OPTIMIZE_0 + default y if BR2_microblazebe || BR2_microblazeel \ + || BR2_mips || BR2_mipsel \ + || BR2_nios2 \ + || BR2_or1k \ + || BR2_sh + config BR2_TOOLCHAIN_HAS_NATIVE_RPC bool