Home | History | Annotate | Download | only in MachO
      1 // RUN: llvm-mc -triple x86_64-apple-darwin %s -filetype=obj -o - | llvm-readobj -file-headers -s -sd -r -t -macho-segment -macho-dysymtab -macho-indirect-symbols | FileCheck %s
      2 
      3         .section        __TEXT,__text,regular,pure_instructions
      4         .section        __DATA,__thread_data,thread_local_regular
      5         .globl  _c$tlv$init
      6         .align  2
      7 _c$tlv$init:
      8         .long   4
      9 
     10         .section        __DATA,__thread_vars,thread_local_variables
     11         .globl  _c
     12 _c:
     13         .quad   ___tlv_bootstrap
     14         .quad   0
     15         .quad   _c$tlv$init
     16 
     17         .section        __DATA,__thread_data,thread_local_regular
     18         .globl  _d$tlv$init
     19         .align  2
     20 _d$tlv$init:
     21         .long   5
     22 
     23         .section        __DATA,__thread_vars,thread_local_variables
     24         .globl  _d
     25 _d:
     26         .quad   ___tlv_bootstrap
     27         .quad   0
     28         .quad   _d$tlv$init
     29 
     30 .tbss _a$tlv$init, 4, 2
     31 
     32         .globl  _a
     33 _a:
     34         .quad   ___tlv_bootstrap
     35         .quad   0
     36         .quad   _a$tlv$init
     37 
     38 .tbss _b$tlv$init, 4, 2
     39 
     40         .globl  _b
     41 _b:
     42         .quad   ___tlv_bootstrap
     43         .quad   0
     44         .quad   _b$tlv$init
     45 
     46 .subsections_via_symbols
     47 
     48 // CHECK: File: <stdin>
     49 // CHECK: Format: Mach-O 64-bit x86-64
     50 // CHECK: Arch: x86_64
     51 // CHECK: AddressSize: 64bit
     52 // CHECK: MachHeader {
     53 // CHECK:   Magic: Magic64 (0xFEEDFACF)
     54 // CHECK:   CpuType: X86-64 (0x1000007)
     55 // CHECK:   CpuSubType: CPU_SUBTYPE_X86_64_ALL (0x3)
     56 // CHECK:   FileType: Relocatable (0x1)
     57 // CHECK:   NumOfLoadCommands: 3
     58 // CHECK:   SizeOfLoadCommands: 496
     59 // CHECK:   Flags [ (0x2000)
     60 // CHECK:     MH_SUBSECTIONS_VIA_SYMBOLS (0x2000)
     61 // CHECK:   ]
     62 // CHECK:   Reserved: 0x0
     63 // CHECK: }
     64 // CHECK: Sections [
     65 // CHECK:   Section {
     66 // CHECK:     Index: 0
     67 // CHECK:     Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
     68 // CHECK:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
     69 // CHECK:     Address: 0x0
     70 // CHECK:     Size: 0x0
     71 // CHECK:     Offset: 528
     72 // CHECK:     Alignment: 0
     73 // CHECK:     RelocationOffset: 0x0
     74 // CHECK:     RelocationCount: 0
     75 // CHECK:     Type: 0x0
     76 // CHECK:     Attributes [ (0x800000)
     77 // CHECK:       PureInstructions (0x800000)
     78 // CHECK:     ]
     79 // CHECK:     Reserved1: 0x0
     80 // CHECK:     Reserved2: 0x0
     81 // CHECK:     Reserved3: 0x0
     82 // CHECK:     SectionData (
     83 // CHECK:     )
     84 // CHECK:   }
     85 // CHECK:   Section {
     86 // CHECK:     Index: 1
     87 // CHECK:     Name: __thread_data (5F 5F 74 68 72 65 61 64 5F 64 61 74 61 00 00 00)
     88 // CHECK:     Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)
     89 // CHECK:     Address: 0x0
     90 // CHECK:     Size: 0x8
     91 // CHECK:     Offset: 528
     92 // CHECK:     Alignment: 2
     93 // CHECK:     RelocationOffset: 0x0
     94 // CHECK:     RelocationCount: 0
     95 // CHECK:     Type: 0x11
     96 // CHECK:     Attributes [ (0x0)
     97 // CHECK:     ]
     98 // CHECK:     Reserved1: 0x0
     99 // CHECK:     Reserved2: 0x0
    100 // CHECK:     Reserved3: 0x0
    101 // CHECK:     SectionData (
    102 // CHECK:       0000: 04000000 05000000                    |........|
    103 // CHECK:     )
    104 // CHECK:   }
    105 // CHECK:   Section {
    106 // CHECK:     Index: 2
    107 // CHECK:     Name: __thread_vars (5F 5F 74 68 72 65 61 64 5F 76 61 72 73 00 00 00)
    108 // CHECK:     Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)
    109 // CHECK:     Address: 0x8
    110 // CHECK:     Size: 0x60
    111 // CHECK:     Offset: 536
    112 // CHECK:     Alignment: 0
    113 // CHECK:     RelocationOffset: 0x278
    114 // CHECK:     RelocationCount: 8
    115 // CHECK:     Type: 0x13
    116 // CHECK:     Attributes [ (0x0)
    117 // CHECK:     ]
    118 // CHECK:     Reserved1: 0x0
    119 // CHECK:     Reserved2: 0x0
    120 // CHECK:     Reserved3: 0x0
    121 // CHECK:     SectionData (
    122 // CHECK:       0000: 00000000 00000000 00000000 00000000  |................|
    123 // CHECK:       0010: 00000000 00000000 00000000 00000000  |................|
    124 // CHECK:       0020: 00000000 00000000 00000000 00000000  |................|
    125 // CHECK:       0030: 00000000 00000000 00000000 00000000  |................|
    126 // CHECK:       0040: 00000000 00000000 00000000 00000000  |................|
    127 // CHECK:       0050: 00000000 00000000 00000000 00000000  |................|
    128 // CHECK:     )
    129 // CHECK:   }
    130 // CHECK:   Section {
    131 // CHECK:     Index: 3
    132 // CHECK:     Name: __thread_bss (5F 5F 74 68 72 65 61 64 5F 62 73 73 00 00 00 00)
    133 // CHECK:     Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)
    134 // CHECK:     Address: 0x68
    135 // CHECK:     Size: 0x8
    136 // CHECK:     Offset: 0
    137 // CHECK:     Alignment: 2
    138 // CHECK:     RelocationOffset: 0x0
    139 // CHECK:     RelocationCount: 0
    140 // CHECK:     Type: 0x12
    141 // CHECK:     Attributes [ (0x0)
    142 // CHECK:     ]
    143 // CHECK:     Reserved1: 0x0
    144 // CHECK:     Reserved2: 0x0
    145 // CHECK:     Reserved3: 0x0
    146 // CHECK:     SectionData (
    147 // CHECK:       0000: CFFAEDFE 07000001                    |........|
    148 // CHECK:     )
    149 // CHECK:   }
    150 // CHECK: ]
    151 // CHECK: Relocations [
    152 // CHECK:   Section __thread_vars {
    153 // CHECK:     0x58 0 3 1 X86_64_RELOC_UNSIGNED 0 _b$tlv$init
    154 // CHECK:     0x48 0 3 1 X86_64_RELOC_UNSIGNED 0 ___tlv_bootstrap
    155 // CHECK:     0x40 0 3 1 X86_64_RELOC_UNSIGNED 0 _a$tlv$init
    156 // CHECK:     0x30 0 3 1 X86_64_RELOC_UNSIGNED 0 ___tlv_bootstrap
    157 // CHECK:     0x28 0 3 1 X86_64_RELOC_UNSIGNED 0 _d$tlv$init
    158 // CHECK:     0x18 0 3 1 X86_64_RELOC_UNSIGNED 0 ___tlv_bootstrap
    159 // CHECK:     0x10 0 3 1 X86_64_RELOC_UNSIGNED 0 _c$tlv$init
    160 // CHECK:     0x0 0 3 1 X86_64_RELOC_UNSIGNED 0 ___tlv_bootstrap
    161 // CHECK:   }
    162 // CHECK: ]
    163 // CHECK: Symbols [
    164 // CHECK:   Symbol {
    165 // CHECK:     Name: _a$tlv$init (37)
    166 // CHECK:     Type: Section (0xE)
    167 // CHECK:     Section: __thread_bss (0x4)
    168 // CHECK:     RefType: UndefinedNonLazy (0x0)
    169 // CHECK:     Flags [ (0x0)
    170 // CHECK:     ]
    171 // CHECK:     Value: 0x68
    172 // CHECK:   }
    173 // CHECK:   Symbol {
    174 // CHECK:     Name: _b$tlv$init (25)
    175 // CHECK:     Type: Section (0xE)
    176 // CHECK:     Section: __thread_bss (0x4)
    177 // CHECK:     RefType: UndefinedNonLazy (0x0)
    178 // CHECK:     Flags [ (0x0)
    179 // CHECK:     ]
    180 // CHECK:     Value: 0x6C
    181 // CHECK:   }
    182 // CHECK:   Symbol {
    183 // CHECK:     Name: _a (75)
    184 // CHECK:     Extern
    185 // CHECK:     Type: Section (0xE)
    186 // CHECK:     Section: __thread_vars (0x3)
    187 // CHECK:     RefType: UndefinedNonLazy (0x0)
    188 // CHECK:     Flags [ (0x0)
    189 // CHECK:     ]
    190 // CHECK:     Value: 0x38
    191 // CHECK:   }
    192 // CHECK:   Symbol {
    193 // CHECK:     Name: _b (72)
    194 // CHECK:     Extern
    195 // CHECK:     Type: Section (0xE)
    196 // CHECK:     Section: __thread_vars (0x3)
    197 // CHECK:     RefType: UndefinedNonLazy (0x0)
    198 // CHECK:     Flags [ (0x0)
    199 // CHECK:     ]
    200 // CHECK:     Value: 0x50
    201 // CHECK:   }
    202 // CHECK:   Symbol {
    203 // CHECK:     Name: _c (69)
    204 // CHECK:     Extern
    205 // CHECK:     Type: Section (0xE)
    206 // CHECK:     Section: __thread_vars (0x3)
    207 // CHECK:     RefType: UndefinedNonLazy (0x0)
    208 // CHECK:     Flags [ (0x0)
    209 // CHECK:     ]
    210 // CHECK:     Value: 0x8
    211 // CHECK:   }
    212 // CHECK:   Symbol {
    213 // CHECK:     Name: _c$tlv$init (13)
    214 // CHECK:     Extern
    215 // CHECK:     Type: Section (0xE)
    216 // CHECK:     Section: __thread_data (0x2)
    217 // CHECK:     RefType: UndefinedNonLazy (0x0)
    218 // CHECK:     Flags [ (0x0)
    219 // CHECK:     ]
    220 // CHECK:     Value: 0x0
    221 // CHECK:   }
    222 // CHECK:   Symbol {
    223 // CHECK:     Name: _d (66)
    224 // CHECK:     Extern
    225 // CHECK:     Type: Section (0xE)
    226 // CHECK:     Section: __thread_vars (0x3)
    227 // CHECK:     RefType: UndefinedNonLazy (0x0)
    228 // CHECK:     Flags [ (0x0)
    229 // CHECK:     ]
    230 // CHECK:     Value: 0x20
    231 // CHECK:   }
    232 // CHECK:   Symbol {
    233 // CHECK:     Name: _d$tlv$init (1)
    234 // CHECK:     Extern
    235 // CHECK:     Type: Section (0xE)
    236 // CHECK:     Section: __thread_data (0x2)
    237 // CHECK:     RefType: UndefinedNonLazy (0x0)
    238 // CHECK:     Flags [ (0x0)
    239 // CHECK:     ]
    240 // CHECK:     Value: 0x4
    241 // CHECK:   }
    242 // CHECK:   Symbol {
    243 // CHECK:     Name: ___tlv_bootstrap (49)
    244 // CHECK:     Extern
    245 // CHECK:     Type: Undef (0x0)
    246 // CHECK:     Section:  (0x0)
    247 // CHECK:     RefType: UndefinedNonLazy (0x0)
    248 // CHECK:     Flags [ (0x0)
    249 // CHECK:     ]
    250 // CHECK:     Value: 0x0
    251 // CHECK:   }
    252 // CHECK: ]
    253 // CHECK: Indirect Symbols {
    254 // CHECK:   Number: 0
    255 // CHECK:   Symbols [
    256 // CHECK:   ]
    257 // CHECK: }
    258 // CHECK: Segment {
    259 // CHECK:   Cmd: LC_SEGMENT_64
    260 // CHECK:   Name:
    261 // CHECK:   Size: 392
    262 // CHECK:   vmaddr: 0x0
    263 // CHECK:   vmsize: 0x70
    264 // CHECK:   fileoff: 528
    265 // CHECK:   filesize: 104
    266 // CHECK:   maxprot: rwx
    267 // CHECK:   initprot: rwx
    268 // CHECK:   nsects: 4
    269 // CHECK:   flags: 0x0
    270 // CHECK: }
    271 // CHECK: Dysymtab {
    272 // CHECK:   ilocalsym: 0
    273 // CHECK:   nlocalsym: 2
    274 // CHECK:   iextdefsym: 2
    275 // CHECK:   nextdefsym: 6
    276 // CHECK:   iundefsym: 8
    277 // CHECK:   nundefsym: 1
    278 // CHECK:   tocoff: 0
    279 // CHECK:   ntoc: 0
    280 // CHECK:   modtaboff: 0
    281 // CHECK:   nmodtab: 0
    282 // CHECK:   extrefsymoff: 0
    283 // CHECK:   nextrefsyms: 0
    284 // CHECK:   indirectsymoff: 0
    285 // CHECK:   nindirectsyms: 0
    286 // CHECK:   extreloff: 0
    287 // CHECK:   nextrel: 0
    288 // CHECK:   locreloff: 0
    289 // CHECK:   nlocrel: 0
    290 // CHECK: }
    291