[llvm-commits] [llvm] r61484 - in /llvm/trunk: include/llvm/Target/TargetAsmInfo.h lib/CodeGen/AsmPrinter/DwarfWriter.cpp lib/Target/TargetAsmInfo.cpp lib/Target/X86/X86TargetAsmInfo.cpp

Bill Wendling isanbard at gmail.com
Tue Dec 30 03:08:38 PST 2008


On Dec 30, 2008, at 12:03 AM, Duncan Sands wrote:

>> Linux wants the FDE initial location and address range to be forced  
>> to 32-bit.
>> Darwin doesn't. Make this optional for platforms.
>
> linux wants the address 32 bit, because we told it that the address  
> is 32 bit!
> It's the sdata4:
>
>        Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4);
>        Asm->EOL("FDE Encoding (pcrel sdata4)");
>
> As far as I can see, the reason darwin now needs 64 bit on 64 bit  
> platforms
> is because of your change yesterday, in which you told it to use the  
> default
> platform size:
>
>        Asm->EmitInt8(DW_EH_PE_pcrel);
>        Asm->EOL("FDE Encoding (pcrel)");
>
> It makes no sense to introduce a new option Force32BitFDEReference,
> because it determined by the existing option  
> doesFDEEncodingRequireSData4.
>
> In fact, it seems to me that these changes and your FDE change of
> yesterday could all be reverted - I don't see how they can be the real
> cause of the problem you are trying to solve.  Most likely some value
> is being output in a special way on darwin, and was being output as
> 64 bit rather than 32 bit.  Note that 32 bit has the advantage of
> taking up less space while being big enough to hold all values
> produced in this context.  So better to revert your changes and
> correct that place to output a 32 bit value.

The machine I'm using to test these changes conked out on me. I'm not  
near it, though, so I can't test this out just yet. It might be true,  
but nonetheless the linker is becoming pickier about the EH frame  
information we generate.

-bw



More information about the llvm-commits mailing list