[llvm] r269865 - Revert "[obj2yaml] [yaml2obj] Support MachO section and section_64

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Tue May 17 16:38:23 PDT 2016


Author: zturner
Date: Tue May 17 18:38:22 2016
New Revision: 269865

URL: http://llvm.org/viewvc/llvm-project?rev=269865&view=rev
Log:
Revert "[obj2yaml] [yaml2obj] Support MachO section and section_64
structs"

This reverts commits r269845, r269846, and r269850 as they
introduce a crash in obj2yaml when trying to do a roundtrip.

Removed:
    llvm/trunk/test/ObjectYAML/MachO/sections.yaml
Modified:
    llvm/trunk/include/llvm/ObjectYAML/MachOYAML.h
    llvm/trunk/lib/ObjectYAML/MachOYAML.cpp
    llvm/trunk/test/ObjectYAML/MachO/load_commands.yaml
    llvm/trunk/tools/obj2yaml/macho2yaml.cpp
    llvm/trunk/tools/yaml2obj/yaml2macho.cpp

Modified: llvm/trunk/include/llvm/ObjectYAML/MachOYAML.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ObjectYAML/MachOYAML.h?rev=269865&r1=269864&r2=269865&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ObjectYAML/MachOYAML.h (original)
+++ llvm/trunk/include/llvm/ObjectYAML/MachOYAML.h Tue May 17 18:38:22 2016
@@ -22,21 +22,6 @@
 namespace llvm {
 namespace MachOYAML {
 
-struct Section {
-  char sectname[16];
-  char segname[16];
-  llvm::yaml::Hex64 addr;
-  uint64_t size;
-  llvm::yaml::Hex32 offset;
-  uint32_t align;
-  llvm::yaml::Hex32 reloff;
-  uint32_t nreloc;
-  llvm::yaml::Hex32 flags;
-  llvm::yaml::Hex32 reserved1;
-  llvm::yaml::Hex32 reserved2;
-  llvm::yaml::Hex32 reserved3;
-};
-
 struct FileHeader {
   llvm::yaml::Hex32 magic;
   llvm::yaml::Hex32 cputype;
@@ -51,20 +36,17 @@ struct FileHeader {
 struct LoadCommand {
   virtual ~LoadCommand();
   llvm::MachO::macho_load_command Data;
-  std::vector<Section> Sections;
 };
 
 struct Object {
   FileHeader Header;
   std::vector<LoadCommand> LoadCommands;
-  std::vector<Section> Sections;
 };
 
 } // namespace llvm::MachOYAML
 } // namespace llvm
 
 LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::MachOYAML::LoadCommand)
-LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::MachOYAML::Section)
 
 namespace llvm {
 namespace yaml {
@@ -81,10 +63,6 @@ template <> struct MappingTraits<MachOYA
   static void mapping(IO &IO, MachOYAML::LoadCommand &LoadCommand);
 };
 
-template <> struct MappingTraits<MachOYAML::Section> {
-  static void mapping(IO &IO, MachOYAML::Section &Section);
-};
-
 #define HANDLE_LOAD_COMMAND(LCName, LCValue, LCStruct)                         \
   io.enumCase(value, #LCName, MachO::LCName);
 

Modified: llvm/trunk/lib/ObjectYAML/MachOYAML.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/MachOYAML.cpp?rev=269865&r1=269864&r2=269865&view=diff
==============================================================================
--- llvm/trunk/lib/ObjectYAML/MachOYAML.cpp (original)
+++ llvm/trunk/lib/ObjectYAML/MachOYAML.cpp Tue May 17 18:38:22 2016
@@ -110,42 +110,20 @@ void MappingTraits<MachOYAML::LoadComman
   switch (LoadCommand.Data.load_command_data.cmd) {
 #include "llvm/Support/MachO.def"
   }
-  if (LoadCommand.Data.load_command_data.cmd == MachO::LC_SEGMENT ||
-      LoadCommand.Data.load_command_data.cmd == MachO::LC_SEGMENT_64) {
-    IO.mapOptional("Sections", LoadCommand.Sections);
-  }
 }
 
 void MappingTraits<MachO::dyld_info_command>::mapping(
     IO &IO, MachO::dyld_info_command &LoadCommand) {
   IO.mapRequired("rebase_off", LoadCommand.rebase_off);
   IO.mapRequired("rebase_size", LoadCommand.rebase_size);
-  IO.mapRequired("bind_off", LoadCommand.bind_off);
-  IO.mapRequired("bind_size", LoadCommand.bind_size);
+  IO.mapRequired("bind_off", LoadCommand.bind_size);
   IO.mapRequired("weak_bind_off", LoadCommand.weak_bind_off);
   IO.mapRequired("weak_bind_size", LoadCommand.weak_bind_size);
-  IO.mapRequired("lazy_bind_off", LoadCommand.lazy_bind_off);
-  IO.mapRequired("lazy_bind_size", LoadCommand.lazy_bind_size);
+  IO.mapRequired("lazy_bind_off", LoadCommand.lazy_bind_size);
   IO.mapRequired("export_off", LoadCommand.export_off);
   IO.mapRequired("export_size", LoadCommand.export_size);
 }
 
-void MappingTraits<MachOYAML::Section>::mapping(IO &IO,
-                                                MachOYAML::Section &Section) {
-  IO.mapRequired("sectname", Section.sectname);
-  IO.mapRequired("segname", Section.segname);
-  IO.mapRequired("addr", Section.addr);
-  IO.mapRequired("size", Section.size);
-  IO.mapRequired("offset", Section.offset);
-  IO.mapRequired("align", Section.align);
-  IO.mapRequired("reloff", Section.reloff);
-  IO.mapRequired("nreloc", Section.nreloc);
-  IO.mapRequired("flags", Section.flags);
-  IO.mapRequired("reserved1", Section.reserved1);
-  IO.mapRequired("reserved2", Section.reserved2);
-  IO.mapOptional("reserved3", Section.reserved3);
-}
-
 void MappingTraits<MachO::dylib>::mapping(IO &IO, MachO::dylib &DylibStruct) {
   IO.mapRequired("name", DylibStruct.name);
   IO.mapRequired("timestamp", DylibStruct.timestamp);

Modified: llvm/trunk/test/ObjectYAML/MachO/load_commands.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ObjectYAML/MachO/load_commands.yaml?rev=269865&r1=269864&r2=269865&view=diff
==============================================================================
--- llvm/trunk/test/ObjectYAML/MachO/load_commands.yaml (original)
+++ llvm/trunk/test/ObjectYAML/MachO/load_commands.yaml Tue May 17 18:38:22 2016
@@ -59,12 +59,10 @@ LoadCommands:
     cmdsize:         48
     rebase_off:      12288
     rebase_size:     8
-    bind_off:        12296
-    bind_size:       96
+    bind_off:        96
     weak_bind_off:   0
     weak_bind_size:  0
-    lazy_bind_off:   12392
-    lazy_bind_size:  624
+    lazy_bind_off:   624
     export_off:      13016
     export_size:     48
   - cmd:             LC_SYMTAB
@@ -186,12 +184,10 @@ LoadCommands:
 #CHECK:     cmdsize:         48
 #CHECK:     rebase_off:      12288
 #CHECK:     rebase_size:     8
-#CHECK:     bind_off:        12296
-#CHECK:     bind_size:       96
+#CHECK:     bind_off:        96
 #CHECK:     weak_bind_off:   0
 #CHECK:     weak_bind_size:  0
-#CHECK:     lazy_bind_off:   12392
-#CHECK:     lazy_bind_size:  624
+#CHECK:     lazy_bind_off:   624
 #CHECK:     export_off:      13016
 #CHECK:     export_size:     48
 #CHECK:   - cmd:             LC_SYMTAB

Removed: llvm/trunk/test/ObjectYAML/MachO/sections.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ObjectYAML/MachO/sections.yaml?rev=269864&view=auto
==============================================================================
--- llvm/trunk/test/ObjectYAML/MachO/sections.yaml (original)
+++ llvm/trunk/test/ObjectYAML/MachO/sections.yaml (removed)
@@ -1,284 +0,0 @@
-# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
-
---- !mach-o
-FileHeader:      
-  magic:           0xFEEDFACF
-  cputype:         0x01000007
-  cpusubtype:      0x80000003
-  filetype:        0x00000002
-  ncmds:           16
-  sizeofcmds:      1408
-  flags:           0x00218085
-  reserved:        0x00000000
-LoadCommands:    
-  - cmd:             LC_SEGMENT_64
-    cmdsize:         72
-    segname:         __PAGEZERO
-    vmaddr:          0
-    vmsize:          4294967296
-    fileoff:         0
-    filesize:        0
-    maxprot:         0
-    initprot:        0
-    nsects:          0
-    flags:           0
-  - cmd:             LC_SEGMENT_64
-    cmdsize:         552
-    segname:         __TEXT
-    vmaddr:          4294967296
-    vmsize:          8192
-    fileoff:         0
-    filesize:        8192
-    maxprot:         7
-    initprot:        5
-    nsects:          6
-    flags:           0
-    Sections:        
-      - sectname:        __text
-        segname:         __TEXT
-        addr:            0x0000000100001160
-        size:            3099
-        offset:          0x00001160
-        align:           4
-        reloff:          0x00000000
-        nreloc:          0
-        flags:           0x80000400
-        reserved1:       0x00000000
-        reserved2:       0x00000000
-        reserved3:       0x00000000
-      - sectname:        __stubs
-        segname:         __TEXT
-        addr:            0x0000000100001D7C
-        size:            90
-        offset:          0x00001D7C
-        align:           1
-        reloff:          0x00000000
-        nreloc:          0
-        flags:           0x80000408
-        reserved1:       0x00000000
-        reserved2:       0x00000006
-        reserved3:       0x00000000
-      - sectname:        __stub_helper
-        segname:         __TEXT
-        addr:            0x0000000100001DD8
-        size:            166
-        offset:          0x00001DD8
-        align:           2
-        reloff:          0x00000000
-        nreloc:          0
-        flags:           0x80000400
-        reserved1:       0x00000000
-        reserved2:       0x00000000
-        reserved3:       0x00000000
-      - sectname:        __gcc_except_tab__TEXT
-        segname:         __TEXT
-        addr:            0x0000000100001E80
-        size:            240
-        offset:          0x00001E80
-        align:           2
-        reloff:          0x00000000
-        nreloc:          0
-        flags:           0x00000000
-        reserved1:       0x00000000
-        reserved2:       0x00000000
-        reserved3:       0x00000000
-      - sectname:        __cstring
-        segname:         __TEXT
-        addr:            0x0000000100001F70
-        size:            15
-        offset:          0x00001F70
-        align:           0
-        reloff:          0x00000000
-        nreloc:          0
-        flags:           0x00000002
-        reserved1:       0x00000000
-        reserved2:       0x00000000
-        reserved3:       0x00000000
-      - sectname:        __unwind_info
-        segname:         __TEXT
-        addr:            0x0000000100001F80
-        size:            120
-        offset:          0x00001F80
-        align:           2
-        reloff:          0x00000000
-        nreloc:          0
-        flags:           0x00000000
-        reserved1:       0x00000000
-        reserved2:       0x00000000
-        reserved3:       0x00000000
-  - cmd:             LC_SEGMENT_64
-    cmdsize:         312
-    segname:         __DATA
-    vmaddr:          4294975488
-    vmsize:          4096
-    fileoff:         8192
-    filesize:        4096
-    maxprot:         7
-    initprot:        3
-    nsects:          3
-    flags:           0
-    Sections:        
-      - sectname:        __got
-        segname:         __DATA
-        addr:            0x0000000100002000
-        size:            24
-        offset:          0x00002000
-        align:           3
-        reloff:          0x00000000
-        nreloc:          0
-        flags:           0x00000006
-        reserved1:       0x0000000F
-        reserved2:       0x00000000
-        reserved3:       0x00000000
-      - sectname:        __nl_symbol_ptr
-        segname:         __DATA
-        addr:            0x0000000100002018
-        size:            16
-        offset:          0x00002018
-        align:           3
-        reloff:          0x00000000
-        nreloc:          0
-        flags:           0x00000006
-        reserved1:       0x00000012
-        reserved2:       0x00000000
-        reserved3:       0x00000000
-      - sectname:        __la_symbol_ptr
-        segname:         __DATA
-        addr:            0x0000000100002028
-        size:            120
-        offset:          0x00002028
-        align:           3
-        reloff:          0x00000000
-        nreloc:          0
-        flags:           0x00000007
-        reserved1:       0x00000014
-        reserved2:       0x00000000
-        reserved3:       0x00000000
-  - cmd:             LC_SEGMENT_64
-    cmdsize:         72
-    segname:         __LINKEDIT
-    vmaddr:          4294979584
-    vmsize:          4096
-    fileoff:         12288
-    filesize:        2508
-    maxprot:         7
-    initprot:        1
-    nsects:          0
-    flags:           0
-  - cmd:             LC_DYLD_INFO_ONLY
-    cmdsize:         48
-    rebase_off:      12288
-    rebase_size:     8
-    bind_off:        12296
-    bind_size:       96
-    weak_bind_off:   0
-    weak_bind_size:  0
-    lazy_bind_off:   12392
-    lazy_bind_size:  624
-    export_off:      13016
-    export_size:     48
-  - cmd:             LC_SYMTAB
-    cmdsize:         24
-    symoff:          13080
-    nsyms:           30
-    stroff:          13700
-    strsize:         1096
-  - cmd:             LC_DYSYMTAB
-    cmdsize:         80
-    ilocalsym:       0
-    nlocalsym:       9
-    iextdefsym:      9
-    nextdefsym:      2
-    iundefsym:       11
-    nundefsym:       19
-    tocoff:          0
-    ntoc:            0
-    modtaboff:       0
-    nmodtab:         0
-    extrefsymoff:    0
-    nextrefsyms:     0
-    indirectsymoff:  13560
-    nindirectsyms:   35
-    extreloff:       0
-    nextrel:         0
-    locreloff:       0
-    nlocrel:         0
-  - cmd:             LC_LOAD_DYLINKER
-    cmdsize:         32
-    name:            12
-  - cmd:             LC_UUID
-    cmdsize:         24
-    cmdsize:         24
-    uuid:            461A1B28-822F-3F38-B670-645419E636F5
-  - cmd:             LC_VERSION_MIN_MACOSX
-    cmdsize:         16
-    version:         658176
-    sdk:             658176
-  - cmd:             LC_SOURCE_VERSION
-    cmdsize:         16
-    version:         0
-  - cmd:             LC_MAIN
-    cmdsize:         24
-    entryoff:        4448
-    stacksize:       0
-  - cmd:             LC_LOAD_DYLIB
-    cmdsize:         48
-    dylib:           
-      name:            24
-      timestamp:       2
-      current_version: 7864576
-      compatibility_version: 65536
-  - cmd:             LC_LOAD_DYLIB
-    cmdsize:         56
-    dylib:           
-      name:            24
-      timestamp:       2
-      current_version: 80349697
-      compatibility_version: 65536
-  - cmd:             LC_FUNCTION_STARTS
-    cmdsize:         16
-    dataoff:         13064
-    datasize:        16
-  - cmd:             LC_DATA_IN_CODE
-    cmdsize:         16
-    dataoff:         13080
-    datasize:        0
-...
-
-
-#CHECK:   - cmd:             LC_SEGMENT_64
-#CHECK:     segname:         __PAGEZERO
-#CHECK:   - cmd:             LC_SEGMENT_64
-#CHECK:     segname:         __TEXT
-#CHECK:     Sections:        
-#CHECK:       - sectname:        __text
-#CHECK:         segname:         __TEXT
-#CHECK:         addr:            0x0000000100001160
-#CHECK:         size:            3099
-#CHECK:         offset:          0x00001160
-#CHECK:         align:           4
-#CHECK:         reloff:          0x00000000
-#CHECK:         nreloc:          0
-#CHECK:         flags:           0x80000400
-#CHECK:         reserved1:       0x00000000
-#CHECK:         reserved2:       0x00000000
-#CHECK:         reserved3:       0x00000000
-#CHECK:       - sectname:        __stubs
-#CHECK:         segname:         __TEXT
-#CHECK:       - sectname:        __stub_helper
-#CHECK:         segname:         __TEXT
-#CHECK:       - sectname:        __gcc_except_tab__TEXT
-#CHECK:         segname:         __TEXT
-#CHECK:       - sectname:        __cstring
-#CHECK:         segname:         __TEXT
-#CHECK:       - sectname:        __unwind_info
-#CHECK:         segname:         __TEXT
-#CHECK:   - cmd:             LC_SEGMENT_64
-#CHECK:     segname:         __DATA
-#CHECK:     Sections:        
-#CHECK:       - sectname:        __got
-#CHECK:         segname:         __DATA
-#CHECK:       - sectname:        __nl_symbol_ptr
-#CHECK:         segname:         __DATA
-#CHECK:       - sectname:        __la_symbol_ptr
-#CHECK:         segname:         __DATA

Modified: llvm/trunk/tools/obj2yaml/macho2yaml.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/obj2yaml/macho2yaml.cpp?rev=269865&r1=269864&r2=269865&view=diff
==============================================================================
--- llvm/trunk/tools/obj2yaml/macho2yaml.cpp (original)
+++ llvm/trunk/tools/obj2yaml/macho2yaml.cpp Tue May 17 18:38:22 2016
@@ -13,8 +13,6 @@
 #include "llvm/ObjectYAML/MachOYAML.h"
 #include "llvm/Support/ErrorHandling.h"
 
-#include <string.h> // for memcpy
-
 using namespace llvm;
 
 class MachODumper {
@@ -34,24 +32,6 @@ public:
       MachO::swapStruct(LC.Data.LCStruct##_data);                              \
     break;
 
-template <typename SectionType>
-MachOYAML::Section constructSection(SectionType Sec) {
-  MachOYAML::Section TempSec;
-  memcpy(reinterpret_cast<void *>(&TempSec.sectname[0]), &Sec.sectname[0], 16);
-  memcpy(reinterpret_cast<void *>(&TempSec.segname[0]), &Sec.segname[0], 16);
-  TempSec.addr = Sec.addr;
-  TempSec.size = Sec.size;
-  TempSec.offset = Sec.offset;
-  TempSec.align = Sec.align;
-  TempSec.reloff = Sec.reloff;
-  TempSec.nreloc = Sec.nreloc;
-  TempSec.flags = Sec.flags;
-  TempSec.reserved1 = Sec.reserved1;
-  TempSec.reserved2 = Sec.reserved2;
-  TempSec.reserved3 = 0;
-  return TempSec;
-}
-
 Expected<std::unique_ptr<MachOYAML::Object>> MachODumper::dump() {
   auto Y = make_unique<MachOYAML::Object>();
   Y->Header.magic = Obj.getHeader().magic;
@@ -74,40 +54,6 @@ Expected<std::unique_ptr<MachOYAML::Obje
       break;
 #include "llvm/Support/MachO.def"
     }
-    if (LoadCmd.C.cmd == MachO::LC_SEGMENT) {
-      auto End = LoadCmd.Ptr + LoadCmd.C.cmdsize;
-      const MachO::section *Curr = reinterpret_cast<const MachO::section *>(
-          LoadCmd.Ptr + sizeof(MachO::segment_command));
-      for (; reinterpret_cast<const void *>(Curr) < End; Curr++) {
-        if (Obj.isLittleEndian() != sys::IsLittleEndianHost) {
-          MachO::section Sec;
-          memcpy((void *)&Sec, Curr, sizeof(MachO::section));
-          MachO::swapStruct(Sec);
-          LC.Sections.push_back(constructSection(Sec));
-        } else {
-          LC.Sections.push_back(constructSection(*Curr));
-        }
-      }
-    } else if (LoadCmd.C.cmd == MachO::LC_SEGMENT_64) {
-      auto End = LoadCmd.Ptr + LoadCmd.C.cmdsize;
-      const MachO::section_64 *Curr =
-          reinterpret_cast<const MachO::section_64 *>(
-              LoadCmd.Ptr + sizeof(MachO::segment_command_64));
-      for (; reinterpret_cast<const void *>(Curr) < End; Curr++) {
-        MachOYAML::Section TempSec;
-        if (Obj.isLittleEndian() != sys::IsLittleEndianHost) {
-          MachO::section_64 Sec;
-          memcpy((void *)&Sec, Curr, sizeof(MachO::section_64));
-          MachO::swapStruct(Sec);
-          LC.Sections.push_back(constructSection(Sec));
-          TempSec = constructSection(Sec);
-        } else {
-          TempSec = constructSection(*Curr);
-        }
-        TempSec.reserved3 = Curr->reserved3;
-        LC.Sections.push_back(TempSec);
-      }
-    }
     Y->LoadCommands.push_back(std::move(LC));
   }
 

Modified: llvm/trunk/tools/yaml2obj/yaml2macho.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2macho.cpp?rev=269865&r1=269864&r2=269865&view=diff
==============================================================================
--- llvm/trunk/tools/yaml2obj/yaml2macho.cpp (original)
+++ llvm/trunk/tools/yaml2obj/yaml2macho.cpp Tue May 17 18:38:22 2016
@@ -77,23 +77,6 @@ Error MachOWriter::writeHeader(raw_ostre
   return Error::success();
 }
 
-template <typename SectionType>
-SectionType constructSection(MachOYAML::Section Sec) {
-  SectionType TempSec;
-  memcpy(reinterpret_cast<void *>(&TempSec.sectname[0]), &Sec.sectname[0], 16);
-  memcpy(reinterpret_cast<void *>(&TempSec.segname[0]), &Sec.segname[0], 16);
-  TempSec.addr = Sec.addr;
-  TempSec.size = Sec.size;
-  TempSec.offset = Sec.offset;
-  TempSec.align = Sec.align;
-  TempSec.reloff = Sec.reloff;
-  TempSec.nreloc = Sec.nreloc;
-  TempSec.flags = Sec.flags;
-  TempSec.reserved1 = Sec.reserved1;
-  TempSec.reserved2 = Sec.reserved2;
-  return TempSec;
-}
-
 Error MachOWriter::writeLoadCommands(raw_ostream &OS) {
   for (auto &LC : Obj.LoadCommands) {
     size_t BytesWritten = 0;
@@ -113,21 +96,6 @@ Error MachOWriter::writeLoadCommands(raw
 #include "llvm/Support/MachO.def"
     }
 
-    if(LC.Data.load_command_data.cmd == MachO::LC_SEGMENT) {
-      for(auto Sec : LC.Sections) {
-        auto TempSec = constructSection<MachO::section>(Sec);
-        OS.write(reinterpret_cast<const char *>(&(TempSec)), sizeof(MachO::section));
-        BytesWritten += sizeof(MachO::section);
-      }
-    } else if(LC.Data.load_command_data.cmd == MachO::LC_SEGMENT_64) {
-      for(auto Sec : LC.Sections) {
-        auto TempSec = constructSection<MachO::section_64>(Sec);
-        TempSec.reserved3 = Sec.reserved3;
-        OS.write(reinterpret_cast<const char *>(&(TempSec)), sizeof(MachO::section_64));
-        BytesWritten += sizeof(MachO::section_64);
-      }
-    }
-
     auto BytesRemaining =
         LC.Data.load_command_data.cmdsize - BytesWritten;
     if (BytesRemaining > 0) {




More information about the llvm-commits mailing list