[llvm-commits] [llvm] r170105 - in /llvm/trunk: include/llvm/Object/MachO.h lib/Object/MachOObjectFile.cpp tools/llvm-objdump/MachODump.cpp tools/llvm-objdump/llvm-objdump.cpp
Rafael EspĂndola
rafael.espindola at gmail.com
Mon Dec 17 13:29:57 PST 2012
I am really sorry I missed this the first time. Do you guys have the
log of how this was failing? DW_AT_byte_size.ll doesn't seem to do any
checks with the section or segment name...
On 13 December 2012 01:36, Eric Christopher <echristo at gmail.com> wrote:
> Author: echristo
> Date: Thu Dec 13 00:36:18 2012
> New Revision: 170105
>
> URL: http://llvm.org/viewvc/llvm-project?rev=170105&view=rev
> Log:
> Revert "Add a funciton to get the segment name of a section."
>
> This reverts commit r170095 since it appears to be breaking the bots.
>
> Modified:
> llvm/trunk/include/llvm/Object/MachO.h
> llvm/trunk/lib/Object/MachOObjectFile.cpp
> llvm/trunk/tools/llvm-objdump/MachODump.cpp
> llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
>
> Modified: llvm/trunk/include/llvm/Object/MachO.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/MachO.h?rev=170105&r1=170104&r2=170105&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Object/MachO.h (original)
> +++ llvm/trunk/include/llvm/Object/MachO.h Thu Dec 13 00:36:18 2012
> @@ -44,11 +44,6 @@
> 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) {
>
> Modified: llvm/trunk/lib/Object/MachOObjectFile.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/MachOObjectFile.cpp?rev=170105&r1=170104&r2=170105&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Object/MachOObjectFile.cpp (original)
> +++ llvm/trunk/lib/Object/MachOObjectFile.cpp Thu Dec 13 00:36:18 2012
> @@ -473,43 +473,28 @@
> 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<macho::Section64> 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<macho::Section> 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<macho::Section64> Sect;
> - MachOObj->ReadSection64(LCI, Sec.d.b, Sect);
> - Res = parseSegmentOrSectionName(Sect->SegmentName);
> - } else {
> - LoadCommandInfo LCI = MachOObj->getLoadCommandInfo(Sec.d.a);
> - InMemoryStruct<macho::Section> 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;
> }
>
>
> Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=170105&r1=170104&r2=170105&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
> +++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Thu Dec 13 00:36:18 2012
> @@ -334,15 +334,9 @@
> 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);
>
> Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=170105&r1=170104&r2=170105&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
> +++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Thu Dec 13 00:36:18 2012
> @@ -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 @@
> SymbolTable("t", cl::desc("Display the symbol table"));
>
> static cl::opt<bool>
> -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<std::string>
> llvm::TripleName("triple", cl::desc("Target triple to disassemble for, "
> @@ -568,13 +567,6 @@
> else if (Section == o->end_sections())
> outs() << "*UND*";
> else {
> - if (const MachOObjectFile *MachO = dyn_cast<const MachOObjectFile>(o)) {
> - StringRef SegmentName;
> - DataRefImpl DR = Section->getRawDataRefImpl();
> - if (error(MachO->getSectionFinalSegmentName(DR, SegmentName)))
> - SegmentName = "";
> - outs() << SegmentName << ",";
> - }
> StringRef SectionName;
> if (error(Section->getName(SectionName)))
> SectionName = "";
> @@ -648,7 +640,7 @@
> return;
> }
>
> - if (MachOOpt && Disassemble) {
> + if (MachO && Disassemble) {
> DisassembleInputMachO(file);
> return;
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list