[llvm] r270920 - [obj2yaml][yaml2obj] Support for MachO lazy bindings
Chris Bieneman via llvm-commits
llvm-commits at lists.llvm.org
Thu May 26 14:29:39 PDT 2016
Author: cbieneman
Date: Thu May 26 16:29:39 2016
New Revision: 270920
URL: http://llvm.org/viewvc/llvm-project?rev=270920&view=rev
Log:
[obj2yaml][yaml2obj] Support for MachO lazy bindings
This adds support for YAML round tripping dyld info lazy bindings. The storage and format of these is the same as regular bind opcodes, they are just interpreted differently by dyld, and can have DONE opcodes in the middle of the opcode lists.
Added:
llvm/trunk/test/ObjectYAML/MachO/lazy_bind_opcode.yaml
Modified:
llvm/trunk/include/llvm/ObjectYAML/MachOYAML.h
llvm/trunk/lib/ObjectYAML/MachOYAML.cpp
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=270920&r1=270919&r2=270920&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ObjectYAML/MachOYAML.h (original)
+++ llvm/trunk/include/llvm/ObjectYAML/MachOYAML.h Thu May 26 16:29:39 2016
@@ -75,6 +75,7 @@ struct LinkEditData {
std::vector<MachOYAML::RebaseOpcode> RebaseOpcodes;
std::vector<MachOYAML::BindOpcode> BindOpcodes;
std::vector<MachOYAML::BindOpcode> WeakBindOpcodes;
+ std::vector<MachOYAML::BindOpcode> LazyBindOpcodes;
};
struct Object {
Modified: llvm/trunk/lib/ObjectYAML/MachOYAML.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/MachOYAML.cpp?rev=270920&r1=270919&r2=270920&view=diff
==============================================================================
--- llvm/trunk/lib/ObjectYAML/MachOYAML.cpp (original)
+++ llvm/trunk/lib/ObjectYAML/MachOYAML.cpp Thu May 26 16:29:39 2016
@@ -102,6 +102,7 @@ void MappingTraits<MachOYAML::LinkEditDa
IO.mapOptional("RebaseOpcodes", LinkEditData.RebaseOpcodes);
IO.mapOptional("BindOpcodes", LinkEditData.BindOpcodes);
IO.mapOptional("WeakBindOpcodes", LinkEditData.WeakBindOpcodes);
+ IO.mapOptional("LazyBindOpcodes", LinkEditData.LazyBindOpcodes);
}
void MappingTraits<MachOYAML::RebaseOpcode>::mapping(
Added: llvm/trunk/test/ObjectYAML/MachO/lazy_bind_opcode.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ObjectYAML/MachO/lazy_bind_opcode.yaml?rev=270920&view=auto
==============================================================================
--- llvm/trunk/test/ObjectYAML/MachO/lazy_bind_opcode.yaml (added)
+++ llvm/trunk/test/ObjectYAML/MachO/lazy_bind_opcode.yaml Thu May 26 16:29:39 2016
@@ -0,0 +1,466 @@
+# RUN: yaml2obj -format=macho %s | obj2yaml | FileCheck %s
+
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACF
+ cputype: 0x01000007
+ cpusubtype: 0x80000003
+ filetype: 0x00000002
+ ncmds: 4
+ sizeofcmds: 224
+ flags: 0x00218085
+ reserved: 0x00000000
+LoadCommands:
+ - cmd: LC_SEGMENT_64
+ cmdsize: 72
+ segname: __LINKEDIT
+ vmaddr: 4294979584
+ vmsize: 4096
+ fileoff: 1024
+ filesize: 2508
+ maxprot: 7
+ initprot: 1
+ nsects: 0
+ flags: 0
+ - cmd: LC_DYLD_INFO_ONLY
+ cmdsize: 48
+ rebase_off: 1024
+ rebase_size: 8
+ bind_off: 0
+ bind_size: 0
+ weak_bind_off: 1032
+ weak_bind_size: 96
+ lazy_bind_off: 1128
+ lazy_bind_size: 624
+ export_off: 1752
+ export_size: 48
+ - cmd: LC_SYMTAB
+ cmdsize: 24
+ symoff: 1816
+ nsyms: 30
+ stroff: 2436
+ 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: 2296
+ nindirectsyms: 35
+ extreloff: 0
+ nextrel: 0
+ locreloff: 0
+ nlocrel: 0
+LinkEditData:
+ LazyBindOpcodes:
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000028
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZNKSt3__16locale9use_facetERNS0_2idE
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000030
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZNKSt3__18ios_base6getlocEv
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000038
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEmc
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000040
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000048
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000050
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000058
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZNSt3__16localeD1Ev
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000060
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000068
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZNSt3__18ios_base5clearEj
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000070
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __ZSt9terminatev
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000078
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: ___cxa_begin_catch
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000080
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: ___cxa_end_catch
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000088
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 2
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: __Unwind_Resume
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000090
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 2
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: _memset
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData:
+ - 0x0000000000000098
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 2
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: _strlen
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+...
+
+#CHECK: LinkEditData:
+#CHECK: LazyBindOpcodes:
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000028
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZNKSt3__16locale9use_facetERNS0_2idE
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000030
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZNKSt3__18ios_base6getlocEv
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000038
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEmc
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000040
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000048
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000050
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000058
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZNSt3__16localeD1Ev
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000060
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000068
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZNSt3__18ios_base5clearEj
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000070
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __ZSt9terminatev
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000078
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: ___cxa_begin_catch
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000080
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 1
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: ___cxa_end_catch
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000088
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 2
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: __Unwind_Resume
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000090
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 2
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: _memset
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+#CHECK: Imm: 2
+#CHECK: ULEBExtraData:
+#CHECK: - 0x0000000000000098
+#CHECK: - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+#CHECK: Imm: 2
+#CHECK: - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+#CHECK: Imm: 0
+#CHECK: Symbol: _strlen
+#CHECK: - Opcode: BIND_OPCODE_DO_BIND
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
+#CHECK: - Opcode: BIND_OPCODE_DONE
+#CHECK: Imm: 0
Modified: llvm/trunk/tools/obj2yaml/macho2yaml.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/obj2yaml/macho2yaml.cpp?rev=270920&r1=270919&r2=270920&view=diff
==============================================================================
--- llvm/trunk/tools/obj2yaml/macho2yaml.cpp (original)
+++ llvm/trunk/tools/obj2yaml/macho2yaml.cpp Thu May 26 16:29:39 2016
@@ -199,6 +199,8 @@ void MachODumper::dumpLinkEdit(std::uniq
dumpBindOpcodes(Y->LinkEdit.BindOpcodes, Obj.getDyldInfoBindOpcodes());
dumpBindOpcodes(Y->LinkEdit.WeakBindOpcodes,
Obj.getDyldInfoWeakBindOpcodes());
+ dumpBindOpcodes(Y->LinkEdit.LazyBindOpcodes,
+ Obj.getDyldInfoLazyBindOpcodes(), true);
}
void MachODumper::dumpRebaseOpcodes(std::unique_ptr<MachOYAML::Object> &Y) {
Modified: llvm/trunk/tools/yaml2obj/yaml2macho.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2macho.cpp?rev=270920&r1=270919&r2=270920&view=diff
==============================================================================
--- llvm/trunk/tools/yaml2obj/yaml2macho.cpp (original)
+++ llvm/trunk/tools/yaml2obj/yaml2macho.cpp Thu May 26 16:29:39 2016
@@ -315,6 +315,8 @@ Error MachOWriter::writeLinkEditData(raw
writeBindOpcodes(OS, DyldInfoOnlyCmd->bind_off, LinkEdit.BindOpcodes);
writeBindOpcodes(OS, DyldInfoOnlyCmd->weak_bind_off,
LinkEdit.WeakBindOpcodes);
+ writeBindOpcodes(OS, DyldInfoOnlyCmd->lazy_bind_off,
+ LinkEdit.LazyBindOpcodes);
// Fill to the end of the string table
ZeroToOffset(OS, SymtabCmd->stroff + SymtabCmd->strsize);
More information about the llvm-commits
mailing list