[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