[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