https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82301
Bug ID: 82301
Summary: [8 regression] Updated test case
g++.dg/ext/attr-ifunc-1.C (and others) in r253041
segfault on powerpc64
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: other
Assignee: unassigned at gcc dot gnu.org
Reporter: seurer at gcc dot gnu.org
Target Milestone: ---
A bunch of test cases were updated at or just before r253041 and they fail on
powerpc64. Just BE, LE works fine.
> 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
They seem to be segfaulting:
(gdb) run
Starting program: /home/seurer/gcc/build/gcc-test2/./attr-ifunc-1.exe
Program received signal SIGSEGV, Segmentation fault.
0x0000000010000680 in Klass::resolver () at
/home/seurer/gcc/gcc-test2/gcc/testsuite/g++.dg/ext/attr-ifunc-1.C:26
26 return &Klass::implementation;
(gdb) where
#0 0x0000000010000680 in Klass::resolver () at
/home/seurer/gcc/gcc-test2/gcc/testsuite/g++.dg/ext/attr-ifunc-1.C:26
#1 0x00003fffb7fc2fb0 in resolve_ifunc (sym_map=0x3fffb7ff1ed0,
map=0x3fffb7ff1ed0, value=<optimized out>) at
../sysdeps/powerpc/powerpc64/dl-machine.h:630
#2 elf_machine_rela (skip_ifunc=<optimized out>, reloc_addr_arg=0x10010e88,
version=<optimized out>, sym=<optimized out>, reloc=0x100003c0,
map=0x3fffb7ff1ed0)
at ../sysdeps/powerpc/powerpc64/dl-machine.h:691
#3 elf_dynamic_do_Rela (skip_ifunc=<optimized out>, lazy=<optimized out>,
nrelative=<optimized out>, relsize=<optimized out>, reladdr=<optimized out>,
map=0x3fffb7ff1ed0) at do-rel.h:137
#4 _dl_relocate_object (scope=0x3fffb7ff2248, reloc_mode=<optimized out>,
consider_profiling=<optimized out>) at dl-reloc.c:259
#5 0x00003fffb7fb73b8 in dl_main (phdr=<optimized out>, phnum=<optimized out>,
user_entry=0x3fffffffea70, auxv=<optimized out>) at rtld.c:2313
#6 0x00003fffb7fd2634 in _dl_sysdep_start (start_argptr=<optimized out>,
dl_main=@0x3fffb7ff0140: 0x3fffb7fb5400 <dl_main>) at ../elf/dl-sysdep.c:244
#7 0x00003fffb7fb3f48 in _dl_start_final (arg=arg@entry=0x3ffffffff150,
info=info@entry=0x3fffffffebd0) at rtld.c:412
#8 0x00003fffb7fb4c28 in _dl_start (arg=0x3ffffffff150) at rtld.c:640
#9 0x00003fffb7fb3c10 in ._start () from /lib64/ld64.so.1
Some of these at least used to be marked as unsupported.