On 02/18/2015 06:17 AM, Alex Velenko wrote: > By changing behaviour of varasm.c:default_binds_local_p, this patch changes > behaviour of gcc/config/arm/arm.c:arm_function_in_section_p and through it > breaks gcc/config/arm/arm.c:arm_is_long_call_p for weak symbols. > > As a result, I get regression for gcc.target/arm/long-calls-1.c on > arm-none-eabi: > FAIL: gcc.target/arm/long-calls-1.c scan-assembler-not \tbl?\tweak_l1\n > FAIL: gcc.target/arm/long-calls-1.c scan-assembler-not \tbl?\tweak_l3\n > > In https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html there > is a description for -mlong-calls. > > This has to be fixed.
Please file a bug, for tracking purposes. That said, it looks as if arm_function_in_section_p should be using decl_binds_to_current_def_p instead of targetm.binds_local_p. That will properly reject weak symbols within a given module until we receive extra information from LTO indicating when a weak definition turns out to be the prevailing definition. r~