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.