[llvm-commits] [PATCH] ARM/MC/ELF e_flags fixup - add an ARMMCCodeEmitterBase class?

Jim Grosbach grosbach at apple.com
Fri Feb 4 12:41:23 PST 2011


Thanks! Really great seeing all the progress being made on the ELF side of things. Good stuff.

-Jim

On Feb 4, 2011, at 12:39 PM, Jason Kim wrote:

> On Fri, Feb 4, 2011 at 12:21 PM, Jim Grosbach <grosbach at apple.com> wrote:
>> The MCCodeEmitter shouldn't have any coupling to TargetMachine (including the ARMSubtarget) either. That it currently does is a bug, not a feature.
>> 
>> This seems like it properly belongs in the ARMELFObjectWriter bits, perhaps with some ABI detection (from the Triple, most likely) logic added later if necessary.
> 
> Thanks for the advice, Jim!
> I'll put it in ARMELFObjectWriter as you suggest.
> 
> -jason
> 
>> 
>> -Jim
>> 
>> On Feb 4, 2011, at 12:15 PM, Jason Kim wrote:
>> 
>>> Hi everyone,
>>> 
>>> With some chagrin, I discovered that the existing ARM/GNU tool chain
>>> requires a non-zero ELF e_flags field.
>>> Specifically, a nonzero value between 4 and 5 for the EF_ARM_EABIMASK
>>> 
>>> Without this field, none of the ELF .o files link properly!
>>> 
>>> Adding it in is easy enough to do, but the right place to do this
>>> seems to be within ARMSubtarget, which is problematic.
>>> So the workaround is to add a small ARMMCCodeEmitterBase class to hold
>>> the e_flags value to be emitted.
>>> 
>>> I can just as easily just hack this in within ARMELFObjectWriter, but
>>> this seems to be messier, as I can forsee different values being
>>> emitted depending on which ABI version LLVM should emit code for -
>>> which seems to belong in ARMSubtarget (which is hidden from the MC
>>> backend ...)
>>> 
>>> In any case, some form of this flag value needs to be emitted.
>>> Otherwise none of the ELF .o files will be linkable with existing
>>> tools (!)
>>> 
>>> Is it OK to add in this class? Is there a better place to put this
>>> flag? Should I just hardcode in 5 (which is current, but existing
>>> tools seem to like 4 too.)?
>>> 
>>> Thanks!
>>> 
>>> -jason
>>> <arm-mc-elf-s36-attrs.patch>
>> 
>> 





More information about the llvm-commits mailing list