http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57703
Bug ID: 57703
Summary: Assembler function definition moved to a different
ltrans then call
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: lto
Assignee: unassigned at gcc dot gnu.org
Reporter: marxin.liska at gmail dot com
SandboxSyscall calls SyscallAsm that is an assembler function defined in the
same file: syscall.cc.
dump grep:
grep SyscallAsm *:
out/Release/nacl_helper.ltrans1.047i.inline:call SyscallAsm
out/Release/nacl_helper.ltrans1.047i.inline:call SyscallAsm
out/Release/nacl_helper.ltrans0.s:.type SyscallAsm, @function
out/Release/nacl_helper.ltrans0.s:SyscallAsm:.cfi_startproc
out/Release/nacl_helper.ltrans0.s:9:.size SyscallAsm, 9b-SyscallAsm
out/Release/nacl_helper.ltrans1.s:call SyscallAsm
out/Release/nacl_helper.ltrans1.045i.cp:call SyscallAsm
Linker error:
nacl_helper.ltrans1.ltrans.o: In function `playground2::SandboxSyscall(int,
long, long, long, long, long, long)':
nacl_helper.ltrans1.o:(.text+0x4503): undefined reference to `SyscallAsm'
/home/marxin/gcc-mirror/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/ld:
nacl_helper.ltrans1.ltrans.o: relocation R_X86_64_PC32 against undefined symbol
`SyscallAsm' can not be used when making a shared object; recompile with -fPIC
/home/marxin/gcc-mirror/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/ld: final
link failed: Bad value
collect2: error: ld returned 1 exit status
Dumps link:
https://docs.google.com/file/d/0B0pisUJ80pO1eFltWU9NUUZkaGM/edit?usp=sharing
When compiled with --param lto-partitions=1 no problem is encountered.