At Jim Grosbach's request detemplate Object/MachO.h.

We are still able to handle mixed endian objects by swapping one struct at a
time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179778 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2013-04-18 18:08:55 +00:00
parent 77327fd652
commit fd7aa38e30
11 changed files with 2053 additions and 1769 deletions

View File

@ -191,14 +191,6 @@ bool llvm::RelocAddressLess(RelocationRef a, RelocationRef b) {
return a_addr < b_addr;
}
StringRef
getSectionFinalSegmentName(const MachOObjectFileBase *MachO, DataRefImpl DR) {
if (const MachOObjectFileLE *O = dyn_cast<MachOObjectFileLE>(MachO))
return O->getSectionFinalSegmentName(DR);
const MachOObjectFileBE *O = dyn_cast<MachOObjectFileBE>(MachO);
return O->getSectionFinalSegmentName(DR);
}
static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
const Target *TheTarget = getTarget(Obj);
// getTarget() will have already issued a diagnostic if necessary, so
@ -263,10 +255,10 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
std::sort(Rels.begin(), Rels.end(), RelocAddressLess);
StringRef SegmentName = "";
if (const MachOObjectFileBase *MachO =
dyn_cast<const MachOObjectFileBase>(Obj)) {
if (const MachOObjectFile *MachO =
dyn_cast<const MachOObjectFile>(Obj)) {
DataRefImpl DR = i->getRawDataRefImpl();
SegmentName = getSectionFinalSegmentName(MachO, DR);
SegmentName = MachO->getSectionFinalSegmentName(DR);
}
StringRef name;
if (error(i->getName(name))) break;
@ -608,10 +600,10 @@ static void PrintSymbolTable(const ObjectFile *o) {
else if (Section == o->end_sections())
outs() << "*UND*";
else {
if (const MachOObjectFileBase *MachO =
dyn_cast<const MachOObjectFileBase>(o)) {
if (const MachOObjectFile *MachO =
dyn_cast<const MachOObjectFile>(o)) {
DataRefImpl DR = Section->getRawDataRefImpl();
StringRef SegmentName = getSectionFinalSegmentName(MachO, DR);
StringRef SegmentName = MachO->getSectionFinalSegmentName(DR);
outs() << SegmentName << ",";
}
StringRef SectionName;