[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