http://llvm.org/bugs/show_bug.cgi?id=3813

           Summary: MachO and ELF Writers/MachineCodeEmitters are hard-coded
                    into LLVMTargetMachine
           Product: libraries
           Version: 2.5
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Common Code Generator Code
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


Currently, the MachO and ELF Writers and MachineCodeEmitters are hard-coded
into LLVMTargetMachine and llc.

In other words, the 'object file generation' capabilities of the Common Code
Generator are not generic.

LLVMTargetMachine::addPassesToEmitFile explicitly checks whether the derived
backend TargetMachine implements one of getMachOWriterInfo or getELFWriterInfo,
and returns a corresponding FileModel enum value.

llc's main function uses the resulting FileModel value to determine which of
the {AddMachOWriter,AddELFWriter} functions to call.

This is limiting for a number of reasons:
1. If a given platform (e.g. x86) may support both MachO and ELF, MachO will be
selected, as it is checked first. This is bad behaviour, it should be up to the
user to decide which object format he wants.
2. Extension of the object file generation capabilities to include new object
file formats is difficult, and requires modifications to LLVM code (not just a
plugin).

I suggest transforming the {getMachOWriterInfo, getELFWriterInfo} functions (on
TargetMachine) into a single (templated?) getObjectFileWriterInfo function.
Additionally a addObjectFileWriter member should be added  to TargetMachine,
taking the place of the static {AddMachOWriter, AddELFWriter} functions.


-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to