https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85345
Bug ID: 85345 Summary: Missing ENDBR in IFUNC resolver Product: gcc Version: 8.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: igor.v.tsimbalist at intel dot com Blocks: 81652 Target Milestone: --- Target: x86_64-*-*, i?86-*-* [hjl@gnu-cet-1 gcc]$ /export/build/gnu/gcc-cet/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc-cet/build-x86_64-linux/gcc/ /export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.target/i386/pr81128.c -fcf-protection -mcet -B/export/build/gnu/gcc-cet/build-x86_64-linux/x86_64-pc-linux-gnu/./libmpx/ -B/export/build/gnu/gcc-cet/build-x86_64-linux/x86_64-pc-linux-gnu/./libmpx/mpxrt -L/export/build/gnu/gcc-cet/build-x86_64-linux/x86_64-pc-linux-gnu/./libmpx/mpxrt/.libs -B/export/build/gnu/gcc-cet/build-x86_64-linux/x86_64-pc-linux-gnu/./libmpx/ -B/export/build/gnu/gcc-cet/build-x86_64-linux/x86_64-pc-linux-gnu/./libmpx/mpxwrap -L/export/build/gnu/gcc-cet/build-x86_64-linux/x86_64-pc-linux-gnu/./libmpx/mpxwrap/.libs -fno-diagnostics-show-caret -fdiagnostics-color=never -O3 -g [hjl@gnu-cet-1 gcc]$ gdb a.out GNU gdb (GDB) Fedora 8.1-11.fc28 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from a.out...done. (gdb) r Starting program: /export/build/gnu/gcc-cet/build-x86_64-linux/gcc/testsuite/gcc/a.out Missing separate debuginfos, use: dnf debuginfo-install glibc-2.27-8.4.fc28.x86_64 Program received signal SIGSEGV, Segmentation fault. resolve_do_it_right_at_runtime () at /export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.target/i386/pr81128.c:33 33 srand (time (NULL)); (gdb) bt #0 resolve_do_it_right_at_runtime () at /export/gnu/import/git/sources/gcc/gcc/testsuite/gcc.target/i386/pr81128.c:33 #1 0x00007ffff7ea01c8 in _dl_relocate_object () from /lib64/ld-linux-x86-64.so.2 #2 0x00007ffff7e9848f in dl_main () from /lib64/ld-linux-x86-64.so.2 #3 0x00007ffff7eada2f in _dl_sysdep_start () from /lib64/ld-linux-x86-64.so.2 #4 0x00007ffff7e961b8 in _dl_start () from /lib64/ld-linux-x86-64.so.2 #5 0x00007ffff7e95108 in _start () from /lib64/ld-linux-x86-64.so.2 #6 0x0000000000000001 in ?? () #7 0x00007fffffffda3c in ?? () #8 0x0000000000000000 in ?? () (gdb) disass Dump of assembler code for function resolve_do_it_right_at_runtime: => 0x0000000000401220 <+0>: sub $0x8,%rsp <<< Missing ENDBR 0x0000000000401224 <+4>: xor %edi,%edi 0x0000000000401226 <+6>: callq 0x4010a0 <time@plt> 0x000000000040122b <+11>: mov %eax,%edi 0x000000000040122d <+13>: callq 0x401090 <srand@plt> 0x0000000000401232 <+18>: callq 0x4010b0 <rand@plt> 0x0000000000401237 <+23>: addl $0x1,0x2e1a(%rip) # 0x404058 <resolver_fn> 0x000000000040123e <+30>: mov $0x401260,%edx 0x0000000000401243 <+35>: test $0x1,%al 0x0000000000401245 <+37>: mov $0x401210,%eax 0x000000000040124a <+42>: cmove %rdx,%rax 0x000000000040124e <+46>: add $0x8,%rsp 0x0000000000401252 <+50>: retq End of assembler dump. (gdb) Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81652 [Bug 81652] [meta-bug] -fcf-protection=full -mcet bugs