This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug lto/57703] Assembler function definition moved to a different ltrans then call
- From: "marxin.liska at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 18 Mar 2014 16:05:11 +0000
- Subject: [Bug lto/57703] Assembler function definition moved to a different ltrans then call
- Auto-submitted: auto-generated
- References: <bug-57703-4 at http dot gcc dot gnu dot org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57703
--- Comment #4 from Martin LiÅka <marxin.liska at gmail dot com> ---
Hm, it looks that there's an usage of top-level function chromium binary:
/tmp/cckAZyDK.ltrans26.ltrans.o:cckAZyDK.ltrans26.o:function
sandbox::Die::ExitGroup(): error: undefined reference to 'SyscallAsm'
/tmp/cckAZyDK.ltrans26.ltrans.o:cckAZyDK.ltrans26.o:function
sandbox::Die::ExitGroup(): error: undefined reference to 'SyscallAsm'
/tmp/cckAZyDK.ltrans26.ltrans.o:cckAZyDK.ltrans26.o:function
sandbox::Die::SandboxDie(char const*, char const*, int): error: undefined
reference to 'SyscallAsm'
/tmp/cckAZyDK.ltrans26.ltrans.o:cckAZyDK.ltrans26.o:function
sandbox::Trap::SigSys(int, siginfo_t*, void*): error: undefined reference to
'SyscallAsm'
SyscallAsm:
namespace playground2 {
asm volatile(
# 76 "../../sandbox/linux/seccomp-bpf/syscall.cc"
".text\n"
".align 16, 0x90\n"
".type SyscallAsm, @function\n"
"SyscallAsm:.cfi_startproc\n"
"test %rax, %rax\n"
"jge 1f\n"
"call 0f; .cfi_adjust_cfa_offset 8\n"
"0:pop %rax; .cfi_adjust_cfa_offset -8\n"
"addq $2f-0b, %rax\n"
"ret\n"
"1:movq 0(%r12), %rdi\n"
"movq 8(%r12), %rsi\n"
"movq 16(%r12), %rdx\n"
"movq 24(%r12), %r10\n"
"movq 32(%r12), %r8\n"
"movq 40(%r12), %r9\n"
"syscall\n"
"2:ret\n"
".cfi_endproc\n"
"9:.size SyscallAsm, 9b-SyscallAsm\n"
# 172 "../../sandbox/linux/seccomp-bpf/syscall.cc"
);
If it's not supported feature, how could we handle such situation in LTO?
Assembler functions are commong in all kind video/audio codecs which are often
added to firefox/chromium.
Martin