On Tue, Feb 26, 2019 at 6:27 AM Tom de Vries <tdevr...@suse.de> wrote: > > On 26-02-19 13:00, Thomas Schwinge wrote: > > Hi Tom! > > > > On Tue, 26 Feb 2019 12:28:34 +0100, Tom de Vries <tdevr...@suse.de> wrote: > >> On 26-02-19 10:40, Thomas Schwinge wrote: > >>> On Mon, 25 Feb 2019 18:11:23 +0100, Tom de Vries <tdevr...@suse.de> wrote: > >>>> On 25-02-19 11:48, Thomas Schwinge wrote: > >>>>> On Fri, 8 Feb 2019 10:42:24 +0100, Tom de Vries <tdevr...@suse.de> > >>>>> wrote: > >>>>>> Add libbacktrace test-case using -flto. > >>>>> > >>>>> I'm seeing this one fail is some configurations, but only in the > >>>>> 'build-gcc/libbacktrace/btest_lto.log' variant: > >>> > >>>> Meaning, compiling libbacktrace using the host compiler, so it would be > >>>> useful to known which compiler that is. > >>>> > >>>> [ I've tried a gcc-4.8 and gcc-6 and gcc-7 as host compiler, and a > >>>> couple of CFLAGS settings (-O2, -O3) to reproduce this, but didn't > >>>> manage. ] > >>> > >>> Years old: > >>> > >>> $ gcc --version > >>> gcc (Sourcery CodeBench 2014.05-45) 4.8.3 20140320 (prerelease) > >>> [...] > >>> $ ld --version > >>> GNU ld (Sourcery CodeBench 2014.05-45) 2.24.51.20140217 > >>> [...] > >>> > >>> (It'll be fine for me if you just declare that unsupported.) > >> > >> I see. The 4.8 I tried is a 4.8.5. > >> > >>>>> test5: unexpected syminfo name got global.2537 expected global > >>>>> PASS: backtrace_full noinline > >>>>> PASS: backtrace_full inline > >>>>> PASS: backtrace_simple noinline > >>>>> PASS: backtrace_simple inline > >>>>> FAIL: backtrace_syminfo variable > >>>>> FAIL btest_lto (exit status: 1) > >>>>> > >>>>> I haven't looked yet which details about these GCC build configurations > >>>>> might be different/important; maybe you've got an idea already? > >>> > >>> I can reproduce this with '-O0' ("unexpected syminfo name got global.2528 > >>> expected global", in that case). With '-O0 -fdump-tree-all > >>> -fdump-ipa-all -save-temps', the 'global.2528' name appears only in > >>> 'btest_lto.ltrans0.000i.cgraph', and 'btest_lto.ltrans0.s': > >>> > >>> ./btest_lto.ltrans0.000i.cgraph: References: global.2528/12 > >>> (addr)state.2526/56 (read)callback_three.2389/64 > >>> (addr)error_callback_three.2384/65 (addr)stderr/20 (read)stderr/20 > >>> (read)stderr/20 (read)global.2528/12 (addr)global.2528/12 (addr)stderr/20 > >>> (read)stderr/20 (read)failures.2527/57 (read)failures.2527/57 > >>> (write)failures.2527/57 (read) > >>> ./btest_lto.ltrans0.000i.cgraph:global.2528/12 (global) @0xf7454118 > >>> ./btest_lto.ltrans0.000i.cgraph:global.2528/12 (global) @0xf7454118 > >>> ./btest_lto.ltrans0.000i.cgraph: References: global.2528/12 > >>> (addr)state.2526/56 (read)callback_three.2389/64 > >>> (addr)error_callback_three.2384/65 (addr)stderr/20 (read)stderr/20 > >>> (read)stderr/20 (read)global.2528/12 (addr)global.2528/12 (addr)stderr/20 > >>> (read)stderr/20 (read)failures.2527/57 (read)failures.2527/57 > >>> (write)failures.2527/57 (read) > >>> ./btest_lto.ltrans0.000i.cgraph:global.2528/12 (global) @0xf7454118 > >>> ./btest_lto.ltrans0.000i.cgraph: References: global.2528/12 > >>> (addr)state.2526/56 (read)callback_three.2389/64 > >>> (addr)error_callback_three.2384/65 (addr)stderr/20 (read)stderr/20 > >>> (read)stderr/20 (read)global.2528/12 (addr)global.2528/12 (addr)stderr/20 > >>> (read)stderr/20 (read)failures.2527/57 (read)failures.2527/57 > >>> (write)failures.2527/57 (read) > >>> ./btest_lto.ltrans0.s: .type global.2528, @object > >>> ./btest_lto.ltrans0.s: .size global.2528, 4 > >>> ./btest_lto.ltrans0.s:global.2528: > >>> ./btest_lto.ltrans0.s: movq $global.2528, -8(%rbp) #, addr > >>> ./btest_lto.ltrans0.s: movl $global.2528, %eax #, global.22 > >>> ./btest_lto.ltrans0.s: movl $global.2528, %ecx #, global.23 > >>> ./btest_lto.ltrans0.s: .quad global.2528 > > > > With '-fdump-rtl-all' added, I see it appear in > > 'btest_lto.ltrans0.166r.expand': > > > > ./btest_lto.ltrans0.166r.expand: (symbol_ref:DI ("global.2528") > > [flags 0x2] <var_decl 0xf7400170 global>)) [...]/libbacktrace/btest.c:399 > > -1 > > ./btest_lto.ltrans0.166r.expand: (symbol_ref:DI ("global.2528") > > [flags 0x2] <var_decl 0xf7400170 global>)) [...]/libbacktrace/btest.c:433 > > -1 > > ./btest_lto.ltrans0.166r.expand: (symbol_ref:DI ("global.2528") > > [flags 0x2] <var_decl 0xf7400170 global>)) [...]/libbacktrace/btest.c:435 > > -1 > > > >> How about: > >> ... > >> - int global; > >> + static int global; > >> ... > >> > >> Does that fix the failure? > > > > No, that gets us "unexpected syminfo name got global.2479.2528 expected > > global". ;-\ > > > > Ian, > > Is this approach OK?
I would drop the #ifdef and just always accept it. if (strncmp (symdata.name, "global") == 0 && (symdata.name[6] == '\0' || symdata.name[6] == '.')) Ian