Home | History | Annotate | Download | only in MachO
      1 // RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck -check-prefix CHECK-X86_32 %s
      2 // RUN: llvm-mc -triple x86_64-apple-darwin10 %s -filetype=obj -o - | macho-dump | FileCheck -check-prefix CHECK-X86_64 %s
      3 
      4 sym_local_B:
      5 .globl sym_globl_def_B
      6 .globl sym_globl_undef_B
      7 sym_local_A:
      8 .globl sym_globl_def_A
      9 .globl sym_globl_undef_A
     10 sym_local_C:
     11 .globl sym_globl_def_C
     12 .globl sym_globl_undef_C
     13 
     14 sym_globl_def_A:
     15 sym_globl_def_B:
     16 sym_globl_def_C:
     17 Lsym_asm_temp:
     18         .long 0
     19 
     20 // CHECK-X86_32: ('cputype', 7)
     21 // CHECK-X86_32: ('cpusubtype', 3)
     22 // CHECK-X86_32: ('filetype', 1)
     23 // CHECK-X86_32: ('num_load_commands', 3)
     24 // CHECK-X86_32: ('load_commands_size', 228)
     25 // CHECK-X86_32: ('flag', 0)
     26 // CHECK-X86_32: ('load_commands', [
     27 // CHECK-X86_32:   # Load Command 0
     28 // CHECK-X86_32:  (('command', 1)
     29 // CHECK-X86_32:   ('size', 124)
     30 // CHECK-X86_32:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
     31 // CHECK-X86_32:   ('vm_addr', 0)
     32 // CHECK-X86_32:   ('vm_size', 4)
     33 // CHECK-X86_32:   ('file_offset', 256)
     34 // CHECK-X86_32:   ('file_size', 4)
     35 // CHECK-X86_32:   ('maxprot', 7)
     36 // CHECK-X86_32:   ('initprot', 7)
     37 // CHECK-X86_32:   ('num_sections', 1)
     38 // CHECK-X86_32:   ('flags', 0)
     39 // CHECK-X86_32:   ('sections', [
     40 // CHECK-X86_32:     # Section 0
     41 // CHECK-X86_32:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
     42 // CHECK-X86_32:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
     43 // CHECK-X86_32:     ('address', 0)
     44 // CHECK-X86_32:     ('size', 4)
     45 // CHECK-X86_32:     ('offset', 256)
     46 // CHECK-X86_32:     ('alignment', 0)
     47 // CHECK-X86_32:     ('reloc_offset', 0)
     48 // CHECK-X86_32:     ('num_reloc', 0)
     49 // CHECK-X86_32:     ('flags', 0x80000000)
     50 // CHECK-X86_32:     ('reserved1', 0)
     51 // CHECK-X86_32:     ('reserved2', 0)
     52 // CHECK-X86_32:    ),
     53 // CHECK-X86_32:   ])
     54 // CHECK-X86_32:  ),
     55 // CHECK-X86_32:   # Load Command 1
     56 // CHECK-X86_32:  (('command', 2)
     57 // CHECK-X86_32:   ('size', 24)
     58 // CHECK-X86_32:   ('symoff', 260)
     59 // CHECK-X86_32:   ('nsyms', 9)
     60 // CHECK-X86_32:   ('stroff', 368)
     61 // CHECK-X86_32:   ('strsize', 140)
     62 // CHECK-X86_32:   ('_string_data', '\x00sym_globl_def_B\x00sym_globl_undef_B\x00sym_globl_def_A\x00sym_globl_undef_A\x00sym_globl_def_C\x00sym_globl_undef_C\x00sym_local_B\x00sym_local_A\x00sym_local_C\x00\x00')
     63 // CHECK-X86_32:   ('_symbols', [
     64 // CHECK-X86_32:     # Symbol 0
     65 // CHECK-X86_32:    (('n_strx', 103)
     66 // CHECK-X86_32:     ('n_type', 0xe)
     67 // CHECK-X86_32:     ('n_sect', 1)
     68 // CHECK-X86_32:     ('n_desc', 0)
     69 // CHECK-X86_32:     ('n_value', 0)
     70 // CHECK-X86_32:     ('_string', 'sym_local_B')
     71 // CHECK-X86_32:    ),
     72 // CHECK-X86_32:     # Symbol 1
     73 // CHECK-X86_32:    (('n_strx', 115)
     74 // CHECK-X86_32:     ('n_type', 0xe)
     75 // CHECK-X86_32:     ('n_sect', 1)
     76 // CHECK-X86_32:     ('n_desc', 0)
     77 // CHECK-X86_32:     ('n_value', 0)
     78 // CHECK-X86_32:     ('_string', 'sym_local_A')
     79 // CHECK-X86_32:    ),
     80 // CHECK-X86_32:     # Symbol 2
     81 // CHECK-X86_32:    (('n_strx', 127)
     82 // CHECK-X86_32:     ('n_type', 0xe)
     83 // CHECK-X86_32:     ('n_sect', 1)
     84 // CHECK-X86_32:     ('n_desc', 0)
     85 // CHECK-X86_32:     ('n_value', 0)
     86 // CHECK-X86_32:     ('_string', 'sym_local_C')
     87 // CHECK-X86_32:    ),
     88 // CHECK-X86_32:     # Symbol 3
     89 // CHECK-X86_32:    (('n_strx', 35)
     90 // CHECK-X86_32:     ('n_type', 0xf)
     91 // CHECK-X86_32:     ('n_sect', 1)
     92 // CHECK-X86_32:     ('n_desc', 0)
     93 // CHECK-X86_32:     ('n_value', 0)
     94 // CHECK-X86_32:     ('_string', 'sym_globl_def_A')
     95 // CHECK-X86_32:    ),
     96 // CHECK-X86_32:     # Symbol 4
     97 // CHECK-X86_32:    (('n_strx', 1)
     98 // CHECK-X86_32:     ('n_type', 0xf)
     99 // CHECK-X86_32:     ('n_sect', 1)
    100 // CHECK-X86_32:     ('n_desc', 0)
    101 // CHECK-X86_32:     ('n_value', 0)
    102 // CHECK-X86_32:     ('_string', 'sym_globl_def_B')
    103 // CHECK-X86_32:    ),
    104 // CHECK-X86_32:     # Symbol 5
    105 // CHECK-X86_32:    (('n_strx', 69)
    106 // CHECK-X86_32:     ('n_type', 0xf)
    107 // CHECK-X86_32:     ('n_sect', 1)
    108 // CHECK-X86_32:     ('n_desc', 0)
    109 // CHECK-X86_32:     ('n_value', 0)
    110 // CHECK-X86_32:     ('_string', 'sym_globl_def_C')
    111 // CHECK-X86_32:    ),
    112 // CHECK-X86_32:     # Symbol 6
    113 // CHECK-X86_32:    (('n_strx', 51)
    114 // CHECK-X86_32:     ('n_type', 0x1)
    115 // CHECK-X86_32:     ('n_sect', 0)
    116 // CHECK-X86_32:     ('n_desc', 0)
    117 // CHECK-X86_32:     ('n_value', 0)
    118 // CHECK-X86_32:     ('_string', 'sym_globl_undef_A')
    119 // CHECK-X86_32:    ),
    120 // CHECK-X86_32:     # Symbol 7
    121 // CHECK-X86_32:    (('n_strx', 17)
    122 // CHECK-X86_32:     ('n_type', 0x1)
    123 // CHECK-X86_32:     ('n_sect', 0)
    124 // CHECK-X86_32:     ('n_desc', 0)
    125 // CHECK-X86_32:     ('n_value', 0)
    126 // CHECK-X86_32:     ('_string', 'sym_globl_undef_B')
    127 // CHECK-X86_32:    ),
    128 // CHECK-X86_32:     # Symbol 8
    129 // CHECK-X86_32:    (('n_strx', 85)
    130 // CHECK-X86_32:     ('n_type', 0x1)
    131 // CHECK-X86_32:     ('n_sect', 0)
    132 // CHECK-X86_32:     ('n_desc', 0)
    133 // CHECK-X86_32:     ('n_value', 0)
    134 // CHECK-X86_32:     ('_string', 'sym_globl_undef_C')
    135 // CHECK-X86_32:    ),
    136 // CHECK-X86_32:   ])
    137 // CHECK-X86_32:  ),
    138 // CHECK-X86_32:   # Load Command 2
    139 // CHECK-X86_32:  (('command', 11)
    140 // CHECK-X86_32:   ('size', 80)
    141 // CHECK-X86_32:   ('ilocalsym', 0)
    142 // CHECK-X86_32:   ('nlocalsym', 3)
    143 // CHECK-X86_32:   ('iextdefsym', 3)
    144 // CHECK-X86_32:   ('nextdefsym', 3)
    145 // CHECK-X86_32:   ('iundefsym', 6)
    146 // CHECK-X86_32:   ('nundefsym', 3)
    147 // CHECK-X86_32:   ('tocoff', 0)
    148 // CHECK-X86_32:   ('ntoc', 0)
    149 // CHECK-X86_32:   ('modtaboff', 0)
    150 // CHECK-X86_32:   ('nmodtab', 0)
    151 // CHECK-X86_32:   ('extrefsymoff', 0)
    152 // CHECK-X86_32:   ('nextrefsyms', 0)
    153 // CHECK-X86_32:   ('indirectsymoff', 0)
    154 // CHECK-X86_32:   ('nindirectsyms', 0)
    155 // CHECK-X86_32:   ('extreloff', 0)
    156 // CHECK-X86_32:   ('nextrel', 0)
    157 // CHECK-X86_32:   ('locreloff', 0)
    158 // CHECK-X86_32:   ('nlocrel', 0)
    159 // CHECK-X86_32:   ('_indirect_symbols', [
    160 // CHECK-X86_32:   ])
    161 // CHECK-X86_32:  ),
    162 // CHECK-X86_32: ])
    163 
    164 // CHECK-X86_64: ('cputype', 16777223)
    165 // CHECK-X86_64: ('cpusubtype', 3)
    166 // CHECK-X86_64: ('filetype', 1)
    167 // CHECK-X86_64: ('num_load_commands', 3)
    168 // CHECK-X86_64: ('load_commands_size', 256)
    169 // CHECK-X86_64: ('flag', 0)
    170 // CHECK-X86_64: ('reserved', 0)
    171 // CHECK-X86_64: ('load_commands', [
    172 // CHECK-X86_64:   # Load Command 0
    173 // CHECK-X86_64:  (('command', 25)
    174 // CHECK-X86_64:   ('size', 152)
    175 // CHECK-X86_64:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
    176 // CHECK-X86_64:   ('vm_addr', 0)
    177 // CHECK-X86_64:   ('vm_size', 4)
    178 // CHECK-X86_64:   ('file_offset', 288)
    179 // CHECK-X86_64:   ('file_size', 4)
    180 // CHECK-X86_64:   ('maxprot', 7)
    181 // CHECK-X86_64:   ('initprot', 7)
    182 // CHECK-X86_64:   ('num_sections', 1)
    183 // CHECK-X86_64:   ('flags', 0)
    184 // CHECK-X86_64:   ('sections', [
    185 // CHECK-X86_64:     # Section 0
    186 // CHECK-X86_64:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
    187 // CHECK-X86_64:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
    188 // CHECK-X86_64:     ('address', 0)
    189 // CHECK-X86_64:     ('size', 4)
    190 // CHECK-X86_64:     ('offset', 288)
    191 // CHECK-X86_64:     ('alignment', 0)
    192 // CHECK-X86_64:     ('reloc_offset', 0)
    193 // CHECK-X86_64:     ('num_reloc', 0)
    194 // CHECK-X86_64:     ('flags', 0x80000000)
    195 // CHECK-X86_64:     ('reserved1', 0)
    196 // CHECK-X86_64:     ('reserved2', 0)
    197 // CHECK-X86_64:     ('reserved3', 0)
    198 // CHECK-X86_64:    ),
    199 // CHECK-X86_64:   ('_relocations', [
    200 // CHECK-X86_64:   ])
    201 // CHECK-X86_64:   ])
    202 // CHECK-X86_64:  ),
    203 // CHECK-X86_64:   # Load Command 1
    204 // CHECK-X86_64:  (('command', 2)
    205 // CHECK-X86_64:   ('size', 24)
    206 // CHECK-X86_64:   ('symoff', 292)
    207 // CHECK-X86_64:   ('nsyms', 9)
    208 // CHECK-X86_64:   ('stroff', 436)
    209 // CHECK-X86_64:   ('strsize', 140)
    210 // CHECK-X86_64:   ('_string_data', '\x00sym_globl_def_B\x00sym_globl_undef_B\x00sym_globl_def_A\x00sym_globl_undef_A\x00sym_globl_def_C\x00sym_globl_undef_C\x00sym_local_B\x00sym_local_A\x00sym_local_C\x00\x00')
    211 // CHECK-X86_64:   ('_symbols', [
    212 // CHECK-X86_64:     # Symbol 0
    213 // CHECK-X86_64:    (('n_strx', 103)
    214 // CHECK-X86_64:     ('n_type', 0xe)
    215 // CHECK-X86_64:     ('n_sect', 1)
    216 // CHECK-X86_64:     ('n_desc', 0)
    217 // CHECK-X86_64:     ('n_value', 0)
    218 // CHECK-X86_64:     ('_string', 'sym_local_B')
    219 // CHECK-X86_64:    ),
    220 // CHECK-X86_64:     # Symbol 1
    221 // CHECK-X86_64:    (('n_strx', 115)
    222 // CHECK-X86_64:     ('n_type', 0xe)
    223 // CHECK-X86_64:     ('n_sect', 1)
    224 // CHECK-X86_64:     ('n_desc', 0)
    225 // CHECK-X86_64:     ('n_value', 0)
    226 // CHECK-X86_64:     ('_string', 'sym_local_A')
    227 // CHECK-X86_64:    ),
    228 // CHECK-X86_64:     # Symbol 2
    229 // CHECK-X86_64:    (('n_strx', 127)
    230 // CHECK-X86_64:     ('n_type', 0xe)
    231 // CHECK-X86_64:     ('n_sect', 1)
    232 // CHECK-X86_64:     ('n_desc', 0)
    233 // CHECK-X86_64:     ('n_value', 0)
    234 // CHECK-X86_64:     ('_string', 'sym_local_C')
    235 // CHECK-X86_64:    ),
    236 // CHECK-X86_64:     # Symbol 3
    237 // CHECK-X86_64:    (('n_strx', 35)
    238 // CHECK-X86_64:     ('n_type', 0xf)
    239 // CHECK-X86_64:     ('n_sect', 1)
    240 // CHECK-X86_64:     ('n_desc', 0)
    241 // CHECK-X86_64:     ('n_value', 0)
    242 // CHECK-X86_64:     ('_string', 'sym_globl_def_A')
    243 // CHECK-X86_64:    ),
    244 // CHECK-X86_64:     # Symbol 4
    245 // CHECK-X86_64:    (('n_strx', 1)
    246 // CHECK-X86_64:     ('n_type', 0xf)
    247 // CHECK-X86_64:     ('n_sect', 1)
    248 // CHECK-X86_64:     ('n_desc', 0)
    249 // CHECK-X86_64:     ('n_value', 0)
    250 // CHECK-X86_64:     ('_string', 'sym_globl_def_B')
    251 // CHECK-X86_64:    ),
    252 // CHECK-X86_64:     # Symbol 5
    253 // CHECK-X86_64:    (('n_strx', 69)
    254 // CHECK-X86_64:     ('n_type', 0xf)
    255 // CHECK-X86_64:     ('n_sect', 1)
    256 // CHECK-X86_64:     ('n_desc', 0)
    257 // CHECK-X86_64:     ('n_value', 0)
    258 // CHECK-X86_64:     ('_string', 'sym_globl_def_C')
    259 // CHECK-X86_64:    ),
    260 // CHECK-X86_64:     # Symbol 6
    261 // CHECK-X86_64:    (('n_strx', 51)
    262 // CHECK-X86_64:     ('n_type', 0x1)
    263 // CHECK-X86_64:     ('n_sect', 0)
    264 // CHECK-X86_64:     ('n_desc', 0)
    265 // CHECK-X86_64:     ('n_value', 0)
    266 // CHECK-X86_64:     ('_string', 'sym_globl_undef_A')
    267 // CHECK-X86_64:    ),
    268 // CHECK-X86_64:     # Symbol 7
    269 // CHECK-X86_64:    (('n_strx', 17)
    270 // CHECK-X86_64:     ('n_type', 0x1)
    271 // CHECK-X86_64:     ('n_sect', 0)
    272 // CHECK-X86_64:     ('n_desc', 0)
    273 // CHECK-X86_64:     ('n_value', 0)
    274 // CHECK-X86_64:     ('_string', 'sym_globl_undef_B')
    275 // CHECK-X86_64:    ),
    276 // CHECK-X86_64:     # Symbol 8
    277 // CHECK-X86_64:    (('n_strx', 85)
    278 // CHECK-X86_64:     ('n_type', 0x1)
    279 // CHECK-X86_64:     ('n_sect', 0)
    280 // CHECK-X86_64:     ('n_desc', 0)
    281 // CHECK-X86_64:     ('n_value', 0)
    282 // CHECK-X86_64:     ('_string', 'sym_globl_undef_C')
    283 // CHECK-X86_64:    ),
    284 // CHECK-X86_64:   ])
    285 // CHECK-X86_64:  ),
    286 // CHECK-X86_64:   # Load Command 2
    287 // CHECK-X86_64:  (('command', 11)
    288 // CHECK-X86_64:   ('size', 80)
    289 // CHECK-X86_64:   ('ilocalsym', 0)
    290 // CHECK-X86_64:   ('nlocalsym', 3)
    291 // CHECK-X86_64:   ('iextdefsym', 3)
    292 // CHECK-X86_64:   ('nextdefsym', 3)
    293 // CHECK-X86_64:   ('iundefsym', 6)
    294 // CHECK-X86_64:   ('nundefsym', 3)
    295 // CHECK-X86_64:   ('tocoff', 0)
    296 // CHECK-X86_64:   ('ntoc', 0)
    297 // CHECK-X86_64:   ('modtaboff', 0)
    298 // CHECK-X86_64:   ('nmodtab', 0)
    299 // CHECK-X86_64:   ('extrefsymoff', 0)
    300 // CHECK-X86_64:   ('nextrefsyms', 0)
    301 // CHECK-X86_64:   ('indirectsymoff', 0)
    302 // CHECK-X86_64:   ('nindirectsyms', 0)
    303 // CHECK-X86_64:   ('extreloff', 0)
    304 // CHECK-X86_64:   ('nextrel', 0)
    305 // CHECK-X86_64:   ('locreloff', 0)
    306 // CHECK-X86_64:   ('nlocrel', 0)
    307 // CHECK-X86_64:   ('_indirect_symbols', [
    308 // CHECK-X86_64:   ])
    309 // CHECK-X86_64:  ),
    310 // CHECK-X86_64: ])
    311