Currently it's not possible during elf generation to set eflags properly.
While it's possible to create an override for the virtual function
WriteEflags, the information needed is that from the
TargetSubtargetInfo (or classes derived from that like MipsSubTarget)
but all there is there is the basic machine type (i.e. MIPS, ARM, x86)
and endian.
This causes all the direct object emitters to put some fixed default
into eflags.
Eflags contains detailed information about the subflavor of
architecture, ABI, other.
One side effect of this problem is the objdump will not disassemble
instructions in a .o that it things are not part of the specific subflavor.
This is where I noticed the problem originally.
There are various comments to this effect but they are not totally accurate.
// FIXME: get the real EABI Version from the Triple.
void ARMELFObjectWriter::WriteEFlags() {
Write32(ELF::EF_ARM_EABIMASK & DefaultEABIVersion);
}
The Triple is in general not enough.
Any ideas no how to fix this?
I have some but it will touch several architectures.