[Bug c/81854] weak alias of an incompatible symbol accepted
tnfchris at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 26 10:21:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81854
Tamar Christina <tnfchris at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |tnfchris at gcc dot gnu.org
--- Comment #14 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
Hi Martin,
the changed tests seem to be failing on arm-none-linux-gnueabihf:
FAIL: g++.dg/ext/attr-ifunc-1.C -std=gnu++11 execution test
FAIL: g++.dg/ext/attr-ifunc-1.C -std=gnu++14 execution test
FAIL: g++.dg/ext/attr-ifunc-1.C -std=gnu++98 execution test
FAIL: g++.dg/ext/attr-ifunc-2.C -std=gnu++11 execution test
FAIL: g++.dg/ext/attr-ifunc-2.C -std=gnu++14 execution test
FAIL: g++.dg/ext/attr-ifunc-2.C -std=gnu++98 execution test
FAIL: g++.dg/ext/attr-ifunc-3.C -std=gnu++11 execution test
FAIL: g++.dg/ext/attr-ifunc-3.C -std=gnu++14 execution test
FAIL: g++.dg/ext/attr-ifunc-3.C -std=gnu++98 execution test
FAIL: g++.dg/ext/attr-ifunc-4.C -std=gnu++11 execution test
FAIL: g++.dg/ext/attr-ifunc-4.C -std=gnu++14 execution test
FAIL: g++.dg/ext/attr-ifunc-4.C -std=gnu++98 execution test
running in gdb I get
Starting program: /home/tnfchris/gcc-fsf/attr-ifunc-1.exe
Program received signal SIGSEGV, Segmentation fault.
0x00010540 in Klass::resolver () at gcc/testsuite/g++.dg/ext/attr-ifunc-1.C:26
26 return &Klass::implementation;
(gdb) bt
#0 0x00010540 in Klass::resolver () at
gcc/testsuite/g++.dg/ext/attr-ifunc-1.C:26
#1 0xf77cfc86 in elf_machine_rel (skip_ifunc=<optimized out>,
reloc_addr_arg=0x2101c, version=<optimized out>, sym=0x101fc, reloc=0x103e0,
map=0xf77f0968) at ../sysdeps/arm/dl-machine.h:523
#2 elf_dynamic_do_Rel (skip_ifunc=<optimized out>, lazy=<optimized out>,
nrelative=<optimized out>, relsize=<optimized out>, reladdr=<optimized out>,
map=0xf77f0968) at do-rel.h:137
#3 _dl_relocate_object (scope=<optimized out>, reloc_mode=<optimized out>,
consider_profiling=<optimized out>, consider_profiling@entry=0) at
dl-reloc.c:258
#4 0xf77ca1f6 in dl_main (phdr=<optimized out>, phnum=<optimized out>,
user_entry=<optimized out>, auxv=<optimized out>) at rtld.c:2185
#5 0xf77d76c8 in _dl_sysdep_start (start_argptr=start_argptr@entry=0xfffef671,
dl_main=0xf77c86e1 <dl_main>) at ../elf/dl-sysdep.c:253
#6 0xf77c8222 in _dl_start_final (arg=0xfffef671) at rtld.c:414
#7 _dl_start (arg=0xfffef671) at rtld.c:520
#8 0xf77c7b50 in _start () from /lib/ld-linux-armhf.so.3
It seems to be segfaulting on the return address
=> 0x10538 <Klass::resolver()>: movw r3, #1317 ; 0x525
0x1053c <Klass::resolver()+4>: movt r3, #1
0x10540 <Klass::resolver()+8>: str r3, [r0, #0]
it goes wrong at the store, since r0 doesn't seem to contain a valid address
(gdb) x $r0
0x37b0d6: Cannot access memory at address 0x37b0d6
Any ideas what's going on here?
More information about the Gcc-bugs
mailing list