This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug bootstrap/55289] darwin bootstrap fails due to missing libsanitizer/interception/mach_override directory and files
- From: "glider at google dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 14 Nov 2012 16:13:47 +0000
- Subject: [Bug bootstrap/55289] darwin bootstrap fails due to missing libsanitizer/interception/mach_override directory and files
- Auto-submitted: auto-generated
- References: <bug-55289-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55289
Alexander Potapenko <glider at google dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |glider at google dot com
--- Comment #28 from Alexander Potapenko <glider at google dot com> 2012-11-14 16:13:47 UTC ---
===========================================================
t.o: file format mach-o-x86-64
Disassembly of section .text:
0000000000000000 <_foo>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 90 nop
5: 90 nop
6: 90 nop
7: 90 nop
8: 48 8d 05 11 4f 0b 00 lea 0xb4f11(%rip),%rax # b4f20
<_foo.eh+0xb4ee8>
f: 53 push %rbx
10: 48 8d 5f e0 lea -0x20(%rdi),%rbx
14: 48 89 77 90 mov %rsi,-0x70(%rdi)
18: 5d pop %rbp
19: c3 retq
===========================================================
mach_override must be choking on the lea instruction.
The easiest way to handle it is to add "48 8d 05 00 00 00 00" to the list of
instructions and mark it as "lea $imm(%rip),%rax". You can also dive into the
opcodes a bit and mask the bits that select the destination register.
I'll take a look at mach_override.c code to suggest the actual patch.