[LLVMdev] exception handling broken on x86-64?

Dale Johannesen dalej at apple.com
Sat Feb 9 14:57:45 PST 2008


On Feb 9, 2008, at 2:48 PM, Anton Korobeynikov wrote:
>> After comparing the generated assembler code with native gcc code I
>> think the generated code is fine, just the exception handler info in
>> the non-code sections is broken/missing.
> It seems, that EH dwarf information emission is disabled in
> X86TargetAsmInfo.cpp. Remove the is64Bit() condition near
> "SupportExceptionHandling = true" line in X86Subtarget::isELF section.
>
> Also, don't forget to add --enable-eh switch to llc invocation.

Just in case it doesn't work the first time:) patch 46029 might be  
helpful.  That made it work on Darwin for me, and it's possible some  
of the changes there are also applicable to Linux.  Compare your .s  
with g++ output.

> You will need to link .S with your native unwinding runtime (so, use  
> g++
> to link, not llvm-g++)

This is not necessary on Darwin, btw, the unwinding stuff Just Worked  
too.




More information about the llvm-dev mailing list