[PATCH] Configurable machine type in ELFObjectWriter

I’ve been working on ELF object support for the MicroBlaze backend and found that ELFObjectWriter assumes the x86/x86-64 architecture. Attached is a patch that makes the 16-bit e_machine value in the ELF header configurable by the target backend.

Right now the target backend simply passes the 16-bit value that it would like to use in the ELF header. I have considered a second approach where ArchType would be passed to ELFObjectWriter and decoded into the correct 16-bit value. The way I see, the second approach has the advantage of being similar to the way OSType is currently handled by ELFObjectWriter but has the disadvantage of requiring backends to edit the ELFObjectWriter source file if they want to add ELF support. I suppose that this is no different from editing ADT/Triple.h when you want to add a new ArchType.

If the second approach is more desirable, then I can rework the patch as appropriate.

elf-emachine.patch (5.34 KB)

You can probably delete the FIXME above the Write16(Emachine) line,
since this fixes it. :slight_smile:

Reid

Hello Wesley,

file if they want to add ELF support. I suppose that this is no different
from editing ADT/Triple.h when you want to add a new ArchType.
If the second approach is more desirable, then I can rework the patch as
appropriate.

Well, we already have EM_* stuff, I don't see why one should duplicate it, so
just passing a single uint16_t value looks ok for me. Please commit.

Thanks!