From 0f00de40dd53f97ad253fbd159968c53371f888d Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 19 Dec 2012 14:48:05 +0000 Subject: [PATCH] Revert 170545 while I debug the ppc failures. llvm-svn: 170547 --- llvm/include/llvm/Object/MachO.h | 5 ----- llvm/lib/Object/MachOObjectFile.cpp | 35 +++++++++----------------------- llvm/tools/llvm-objdump/MachODump.cpp | 8 +------- llvm/tools/llvm-objdump/llvm-objdump.cpp | 25 ++++------------------- 4 files changed, 15 insertions(+), 58 deletions(-) diff --git a/llvm/include/llvm/Object/MachO.h b/llvm/include/llvm/Object/MachO.h index ed7aabd..da972a2 100644 --- a/llvm/include/llvm/Object/MachO.h +++ b/llvm/include/llvm/Object/MachO.h @@ -44,11 +44,6 @@ public: virtual unsigned getArch() const; virtual StringRef getLoadName() const; - // In a MachO file, sections have a segment name. This is used in the .o - // files. They have a single segment, but this field specifies which segment - // a section should be put in in the final object. - error_code getSectionFinalSegmentName(DataRefImpl Sec, StringRef &Res) const; - MachOObject *getObject() { return MachOObj.get(); } static inline bool classof(const Binary *v) { diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index 3e29b2f..40f5390 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -473,43 +473,28 @@ static bool is64BitLoadCommand(const MachOObject *MachOObj, DataRefImpl DRI) { return false; } -static StringRef parseSegmentOrSectionName(const char *P) { - if (P[15] == 0) - // Null terminated. - return P; - // Not null terminated, so this is a 16 char string. - return StringRef(P, 16); -} - error_code MachOObjectFile::getSectionName(DataRefImpl DRI, StringRef &Result) const { + // FIXME: thread safety. + static char result[34]; if (is64BitLoadCommand(MachOObj.get(), DRI)) { LoadCommandInfo LCI = MachOObj->getLoadCommandInfo(DRI.d.a); InMemoryStruct Sect; MachOObj->ReadSection64(LCI, DRI.d.b, Sect); - Result = parseSegmentOrSectionName(Sect->Name); + + strcpy(result, Sect->SegmentName); + strcat(result, ","); + strcat(result, Sect->Name); } else { LoadCommandInfo LCI = MachOObj->getLoadCommandInfo(DRI.d.a); InMemoryStruct Sect; MachOObj->ReadSection(LCI, DRI.d.b, Sect); - Result = parseSegmentOrSectionName(Sect->Name); - } - return object_error::success; -} -error_code MachOObjectFile::getSectionFinalSegmentName(DataRefImpl Sec, - StringRef &Res) const { - if (is64BitLoadCommand(MachOObj.get(), Sec)) { - LoadCommandInfo LCI = MachOObj->getLoadCommandInfo(Sec.d.a); - InMemoryStruct Sect; - MachOObj->ReadSection64(LCI, Sec.d.b, Sect); - Res = parseSegmentOrSectionName(Sect->SegmentName); - } else { - LoadCommandInfo LCI = MachOObj->getLoadCommandInfo(Sec.d.a); - InMemoryStruct Sect; - MachOObj->ReadSection(LCI, Sec.d.b, Sect); - Res = parseSegmentOrSectionName(Sect->SegmentName); + strcpy(result, Sect->SegmentName); + strcat(result, ","); + strcat(result, Sect->Name); } + Result = StringRef(result); return object_error::success; } diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index c324ff13..3a35038 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -334,15 +334,9 @@ void llvm::DisassembleInputMachO(StringRef Filename) { for (unsigned SectIdx = 0; SectIdx != Sections.size(); SectIdx++) { StringRef SectName; if (Sections[SectIdx].getName(SectName) || - SectName != "__text") + SectName.compare("__TEXT,__text")) continue; // Skip non-text sections - StringRef SegmentName; - DataRefImpl DR = Sections[SectIdx].getRawDataRefImpl(); - if (MachOOF->getSectionFinalSegmentName(DR, SegmentName) || - SegmentName != "__TEXT") - continue; - // Insert the functions from the function starts segment into our map. uint64_t VMAddr; Sections[SectIdx].getAddress(VMAddr); diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 24dc9c9..2838a2a 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -28,7 +28,6 @@ #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/Object/Archive.h" #include "llvm/Object/COFF.h" -#include "llvm/Object/MachO.h" #include "llvm/Object/ObjectFile.h" #include "llvm/Support/Casting.h" #include "llvm/Support/CommandLine.h" @@ -73,9 +72,9 @@ static cl::opt SymbolTable("t", cl::desc("Display the symbol table")); static cl::opt -MachOOpt("macho", cl::desc("Use MachO specific object file parser")); +MachO("macho", cl::desc("Use MachO specific object file parser")); static cl::alias -MachOm("m", cl::desc("Alias for --macho"), cl::aliasopt(MachOOpt)); +MachOm("m", cl::desc("Alias for --macho"), cl::aliasopt(MachO)); cl::opt llvm::TripleName("triple", cl::desc("Target triple to disassemble for, " @@ -242,18 +241,9 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) { // Sort relocations by address. std::sort(Rels.begin(), Rels.end(), RelocAddressLess); - StringRef SegmentName = ""; - if (const MachOObjectFile *MachO = dyn_cast(Obj)) { - DataRefImpl DR = i->getRawDataRefImpl(); - if (error(MachO->getSectionFinalSegmentName(DR, SegmentName))) - break; - } StringRef name; if (error(i->getName(name))) break; - outs() << "Disassembly of section "; - if (!SegmentName.empty()) - outs() << SegmentName << ","; - outs() << name << ':'; + outs() << "Disassembly of section " << name << ':'; // If the section has no symbols just insert a dummy one and disassemble // the whole section. @@ -577,13 +567,6 @@ static void PrintSymbolTable(const ObjectFile *o) { else if (Section == o->end_sections()) outs() << "*UND*"; else { - if (const MachOObjectFile *MachO = dyn_cast(o)) { - StringRef SegmentName; - DataRefImpl DR = Section->getRawDataRefImpl(); - if (error(MachO->getSectionFinalSegmentName(DR, SegmentName))) - SegmentName = ""; - outs() << SegmentName << ","; - } StringRef SectionName; if (error(Section->getName(SectionName))) SectionName = ""; @@ -657,7 +640,7 @@ static void DumpInput(StringRef file) { return; } - if (MachOOpt && Disassemble) { + if (MachO && Disassemble) { DisassembleInputMachO(file); return; } -- 2.7.4