The $(LIBGCC2_CFLAGS) removed in the patch is prehistoric (before first commit in the FSF repo) but was once needed or at least seemed like a good idea; I can't recall which. These days, its major effect is to add "-g", which with the recent dwarf2 changes is lethal, if you're unlucky. With the default CRT_CALL_STATIC_FUNCTION it might add, in a dwarf2 frame info debug section:
.byte 0x4 ;# DW_CFA_advance_loc4 .dword .LCFI4-.LCFI3 where .LCFI4 and .LCFI3 are in different sections due to the switching-sections-with-asm hack. That kind of expression is not supported. There have to be a few unlucky circumstances: the assembler has to not support CFI directives (the gcc configure-test failing) and the stack frame for void call_foo(void) { asm(".section .init"); foo(); asm(".text"); } has to be non-empty; call_foo has to explicitly store its return-address (as with call insns in RISC ISAs). Committed after testing that it works as good as defining CRT_CALL_STATIC_FUNCTION, which would be needed in several flavors due to PIC and ISA variation. PR target/49684 * config/cris/t-elfmulti (CRTSTUFF_T_CFLAGS): Don't include $(LIBGCC2_CFLAGS). Index: config/cris/t-elfmulti =================================================================== --- config/cris/t-elfmulti (revision 175272) +++ config/cris/t-elfmulti (working copy) @@ -1,4 +1,4 @@ -# Copyright (C) 2001, 2007 Free Software Foundation, Inc. +# Copyright (C) 2001, 2007, 2011 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -31,4 +31,4 @@ MULTILIB_MATCHES = \ MULTILIB_EXTRA_OPTS = mbest-lib-options INSTALL_LIBGCC = install-multilib LIBGCC = stmp-multilib -CRTSTUFF_T_CFLAGS = $(LIBGCC2_CFLAGS) -moverride-best-lib-options +CRTSTUFF_T_CFLAGS = -moverride-best-lib-options brgds, H-P