This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/81861] ASan pr64820.c testcase segfaults with LTO and -fstack-protector-strong
- From: "m.ostapenko at samsung dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 16 Aug 2017 13:50:27 +0000
- Subject: [Bug tree-optimization/81861] ASan pr64820.c testcase segfaults with LTO and -fstack-protector-strong
- Auto-submitted: auto-generated
- References: <bug-81861-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81861
--- Comment #3 from Maxim Ostapenko <m.ostapenko at samsung dot com> ---
(In reply to Uroš Bizjak from comment #1)
> You didn't specify compile flags, but using:
>
> -O2 -fstack-protector-strong -fsanitize=address, I get:
Sorry, here they are:
$ /home/max/build/master/gcc/xgcc -B/home/max/build/master/gcc/
/home/max/workspace/downloads/gcc/gcc/testsuite/c-c++-common/asan/pr64820.c
-B/home/max/build/master/x86_64-unknown-linux-gnu/./libsanitizer/
-B/home/max/build/master/x86_64-unknown-linux-gnu/./libsanitizer/asan/
-L/home/max/build/master/x86_64-unknown-linux-gnu/./libsanitizer/asan/.libs
-fsanitize=address -g
-I/home/max/workspace/downloads/gcc/gcc/testsuite/../../libsanitizer/include
-fno-diagnostics-show-caret -fdiagnostics-color=never -O2 -flto
-fuse-linker-plugin -fno-fat-lto-objects -fstack-protector-strong -lm -o
./pr64820.exe
$ /home/max/build/master/gcc/xgcc -v
Using built-in specs.
COLLECT_GCC=/home/max/build/master/gcc/xgcc
Target: x86_64-unknown-linux-gnu
Configured with: /home/max/workspace/downloads/gcc/configure --enable-multilib
--enable-checking --target=x86_64-unknown-linux-gnu
--host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu
--prefix=/home/max/install/master --disable-bootstrap --enable-languages=c,c++
CFLAGS='-g -g3 -O0' CXXFLAGS='-g -g3 -O0' : (reconfigured)
/home/max/workspace/downloads/gcc/configure --enable-multilib --enable-checking
--target=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu
--build=x86_64-unknown-linux-gnu --prefix=/home/max/install/master
--disable-bootstrap CFLAGS='-g -g3 -O0' CXXFLAGS='-g -g3 -O0'
build_alias=x86_64-unknown-linux-gnu host_alias=x86_64-unknown-linux-gnu
target_alias=x86_64-unknown-linux-gnu --enable-languages=c,c++,lto --no-create
--no-recursion : (reconfigured) /home/max/workspace/downloads/gcc/configure
--enable-multilib --enable-checking --target=x86_64-unknown-linux-gnu
--host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu
--prefix=/home/max/install/master --disable-bootstrap CFLAGS='-g -g3 -O0'
CXXFLAGS='-g -g3 -O0' build_alias=x86_64-unknown-linux-gnu
host_alias=x86_64-unknown-linux-gnu target_alias=x86_64-unknown-linux-gnu
--enable-languages=c,c++,lto --no-create --no-recursion : (reconfigured)
/home/max/workspace/downloads/gcc/configure --enable-multilib --enable-checking
--target=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu
--build=x86_64-unknown-linux-gnu --prefix=/home/max/install/master
--disable-bootstrap CFLAGS='-g -g3 -O0' CXXFLAGS='-g -g3 -O0'
build_alias=x86_64-unknown-linux-gnu host_alias=x86_64-unknown-linux-gnu
target_alias=x86_64-unknown-linux-gnu --enable-languages=c,c++,lto --no-create
--no-recursion : (reconfigured) /home/max/workspace/downloads/gcc/configure
--enable-multilib --enable-checking --target=x86_64-unknown-linux-gnu
--host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu
--prefix=/home/max/install/master --disable-bootstrap CFLAGS='-g -g3 -O0'
CXXFLAGS='-g -g3 -O0' build_alias=x86_64-unknown-linux-gnu
host_alias=x86_64-unknown-linux-gnu target_alias=x86_64-unknown-linux-gnu
--enable-languages=c,c++,lto --no-create --no-recursion : (reconfigured)
/home/max/workspace/downloads/gcc/configure --enable-multilib --enable-checking
--target=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu
--build=x86_64-unknown-linux-gnu --prefix=/home/max/install/master
--disable-bootstrap CFLAGS='-g -g3 -O0' CXXFLAGS='-g -g3 -O0'
build_alias=x86_64-unknown-linux-gnu host_alias=x86_64-unknown-linux-gnu
target_alias=x86_64-unknown-linux-gnu --enable-languages=c,c++,lto --no-create
--no-recursion : (reconfigured) /home/max/workspace/downloads/gcc/configure
--enable-multilib --enable-checking --target=x86_64-unknown-linux-gnu
--host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu
--prefix=/home/max/install/master --disable-bootstrap CFLAGS='-g -g3 -O0'
CXXFLAGS='-g -g3 -O0' build_alias=x86_64-unknown-linux-gnu
host_alias=x86_64-unknown-linux-gnu target_alias=x86_64-unknown-linux-gnu
--enable-languages=c,c++,lto --no-create --no-recursion
Thread model: posix
gcc version 8.0.0 20170808 (experimental) (GCC)
>
> 51: c7 82 00 80 ff 7f f1 movl $0xf1f1f1f1,0x7fff8000(%rdx)
> 58: f1 f1 f1
> 5b: c7 82 04 82 ff 7f f3 movl $0xf3f3f3f3,0x7fff8204(%rdx)
> 62: f3 f3 f3
> 65: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
> 6c: 00 00
> 6e: 48 89 84 24 58 10 00 mov %rax,0x1058(%rsp)
> 75: 00
> 76: 31 c0 xor %eax,%eax
>
> The insn in question is:
>
> #(insn:TI 35 19 40 3 (parallel [
> # (set (mem/v/f/c:DI (plus:DI (reg/f:DI 7 sp)
> # (const_int 4184 [0x1058])) [2 D.2177+0 S8 A64])
> # (unspec:DI [
> # (mem/f:DI (const_int 40 [0x28]) [4
> MEM[(<address-space-1> long unsigned int *)40B]+0 S8 A64 AS1])
> # ] UNSPEC_SP_SET))
> # (set (reg:DI 0 ax [97])
> # (const_int 0 [0]))
> # (clobber (reg:CC 17 flags))
> # ]) "pr64820.c":13 1002 {stack_protect_set_di}
> # (expr_list:REG_UNUSED (reg:CC 17 flags)
> # (expr_list:REG_UNUSED (reg:DI 0 ax [97])
> # (nil))))
> movq %fs:40, %rax # 35 stack_protect_set_di [length = 16]
> movq %rax, 4184(%rsp)
> xorl %eax, %eax
>
> Maybe LTO doesn't handle address spaces correctly?