1 // RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck %s 2 3 // FIXME: We are missing a lot of diagnostics on this kind of stuff which the 4 // assembler has. 5 6 .lazy_symbol_pointer 7 .indirect_symbol sym_lsp_B 8 .long 0 9 10 .globl sym_lsp_A 11 .indirect_symbol sym_lsp_A 12 .long 0 13 14 sym_lsp_C: 15 .indirect_symbol sym_lsp_C 16 .long 0 17 18 // FIXME: Enable this test once missing llvm-mc support is in place. 19 .if 0 20 .indirect_symbol sym_lsp_D 21 .long sym_lsp_D 22 .endif 23 24 .indirect_symbol sym_lsp_E 25 .long 0xFA 26 27 // FIXME: Enable this test once missing llvm-mc support is in place. 28 .if 0 29 sym_lsp_F = 10 30 .indirect_symbol sym_lsp_F 31 .long 0 32 .endif 33 34 .globl sym_lsp_G 35 sym_lsp_G: 36 .indirect_symbol sym_lsp_G 37 .long 0 38 39 .non_lazy_symbol_pointer 40 .indirect_symbol sym_nlp_B 41 .long 0 42 43 .globl sym_nlp_A 44 .indirect_symbol sym_nlp_A 45 .long 0 46 47 sym_nlp_C: 48 .indirect_symbol sym_nlp_C 49 .long 0 50 51 // FIXME: Enable this test once missing llvm-mc support is in place. 52 .if 0 53 .indirect_symbol sym_nlp_D 54 .long sym_nlp_D 55 .endif 56 57 .indirect_symbol sym_nlp_E 58 .long 0xAF 59 60 // FIXME: Enable this test once missing llvm-mc support is in place. 61 .if 0 62 sym_nlp_F = 10 63 .indirect_symbol sym_nlp_F 64 .long 0 65 .endif 66 67 .globl sym_nlp_G 68 sym_nlp_G: 69 .indirect_symbol sym_nlp_G 70 .long 0 71 72 // CHECK: ('cputype', 7) 73 // CHECK: ('cpusubtype', 3) 74 // CHECK: ('filetype', 1) 75 // CHECK: ('num_load_commands', 3) 76 // CHECK: ('load_commands_size', 364) 77 // CHECK: ('flag', 0) 78 // CHECK: ('load_commands', [ 79 // CHECK: # Load Command 0 80 // CHECK: (('command', 1) 81 // CHECK: ('size', 260) 82 // CHECK: ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 83 // CHECK: ('vm_addr', 0) 84 // CHECK: ('vm_size', 40) 85 // CHECK: ('file_offset', 392) 86 // CHECK: ('file_size', 40) 87 // CHECK: ('maxprot', 7) 88 // CHECK: ('initprot', 7) 89 // CHECK: ('num_sections', 3) 90 // CHECK: ('flags', 0) 91 // CHECK: ('sections', [ 92 // CHECK: # Section 0 93 // CHECK: (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 94 // CHECK: ('address', 0) 95 // CHECK: ('size', 0) 96 // CHECK: ('offset', 392) 97 // CHECK: ('alignment', 0) 98 // CHECK: ('reloc_offset', 0) 99 // CHECK: ('num_reloc', 0) 100 // CHECK: ('flags', 0x80000000) 101 // CHECK: ('reserved1', 0) 102 // CHECK: ('reserved2', 0) 103 // CHECK: ), 104 // CHECK: # Section 1 105 // CHECK: (('section_name', '__la_symbol_ptr\x00') 106 // CHECK: ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 107 // CHECK: ('address', 0) 108 // CHECK: ('size', 20) 109 // CHECK: ('offset', 392) 110 // CHECK: ('alignment', 2) 111 // CHECK: ('reloc_offset', 0) 112 // CHECK: ('num_reloc', 0) 113 // CHECK: ('flags', 0x7) 114 // CHECK: ('reserved1', 0) 115 // CHECK: ('reserved2', 0) 116 // CHECK: ), 117 // CHECK: # Section 2 118 // CHECK: (('section_name', '__nl_symbol_ptr\x00') 119 // CHECK: ('segment_name', '__DATA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 120 // CHECK: ('address', 20) 121 // CHECK: ('size', 20) 122 // CHECK: ('offset', 412) 123 // CHECK: ('alignment', 2) 124 // CHECK: ('reloc_offset', 0) 125 // CHECK: ('num_reloc', 0) 126 // CHECK: ('flags', 0x6) 127 // FIXME: Enable this when fixed! 128 // CHECX: ('reserved1', 5) 129 // CHECK: ('reserved2', 0) 130 // CHECK: ), 131 // CHECK: ]) 132 // CHECK: ), 133 // CHECK: # Load Command 1 134 // CHECK: (('command', 2) 135 // CHECK: ('size', 24) 136 // CHECK: ('symoff', 472) 137 // CHECK: ('nsyms', 10) 138 // CHECK: ('stroff', 592) 139 // CHECK: ('strsize', 104) 140 // CHECK: ('_string_data', '\x00sym_lsp_A\x00sym_lsp_G\x00sym_nlp_A\x00sym_nlp_G\x00sym_nlp_B\x00sym_nlp_E\x00sym_lsp_B\x00sym_lsp_E\x00sym_lsp_C\x00sym_nlp_C\x00\x00\x00\x00') 141 // CHECK: ('_symbols', [ 142 // CHECK: # Symbol 0 143 // CHECK: (('n_strx', 81) 144 // CHECK: ('n_type', 0xe) 145 // CHECK: ('n_sect', 2) 146 // CHECK: ('n_desc', 0) 147 // CHECK: ('n_value', 8) 148 // CHECK: ('_string', 'sym_lsp_C') 149 // CHECK: ), 150 // CHECK: # Symbol 1 151 // CHECK: (('n_strx', 91) 152 // CHECK: ('n_type', 0xe) 153 // CHECK: ('n_sect', 3) 154 // CHECK: ('n_desc', 0) 155 // CHECK: ('n_value', 28) 156 // CHECK: ('_string', 'sym_nlp_C') 157 // CHECK: ), 158 // CHECK: # Symbol 2 159 // CHECK: (('n_strx', 11) 160 // CHECK: ('n_type', 0xf) 161 // CHECK: ('n_sect', 2) 162 // CHECK: ('n_desc', 0) 163 // CHECK: ('n_value', 16) 164 // CHECK: ('_string', 'sym_lsp_G') 165 // CHECK: ), 166 // CHECK: # Symbol 3 167 // CHECK: (('n_strx', 31) 168 // CHECK: ('n_type', 0xf) 169 // CHECK: ('n_sect', 3) 170 // CHECK: ('n_desc', 0) 171 // CHECK: ('n_value', 36) 172 // CHECK: ('_string', 'sym_nlp_G') 173 // CHECK: ), 174 // CHECK: # Symbol 4 175 // CHECK: (('n_strx', 1) 176 // CHECK: ('n_type', 0x1) 177 // CHECK: ('n_sect', 0) 178 // CHECK: ('n_desc', 0) 179 // CHECK: ('n_value', 0) 180 // CHECK: ('_string', 'sym_lsp_A') 181 // CHECK: ), 182 // CHECK: # Symbol 5 183 // CHECK: (('n_strx', 61) 184 // CHECK: ('n_type', 0x1) 185 // CHECK: ('n_sect', 0) 186 // CHECK: ('n_desc', 1) 187 // CHECK: ('n_value', 0) 188 // CHECK: ('_string', 'sym_lsp_B') 189 // CHECK: ), 190 // CHECK: # Symbol 6 191 // CHECK: (('n_strx', 71) 192 // CHECK: ('n_type', 0x1) 193 // CHECK: ('n_sect', 0) 194 // CHECK: ('n_desc', 1) 195 // CHECK: ('n_value', 0) 196 // CHECK: ('_string', 'sym_lsp_E') 197 // CHECK: ), 198 // CHECK: # Symbol 7 199 // CHECK: (('n_strx', 21) 200 // CHECK: ('n_type', 0x1) 201 // CHECK: ('n_sect', 0) 202 // CHECK: ('n_desc', 0) 203 // CHECK: ('n_value', 0) 204 // CHECK: ('_string', 'sym_nlp_A') 205 // CHECK: ), 206 // CHECK: # Symbol 8 207 // CHECK: (('n_strx', 41) 208 // CHECK: ('n_type', 0x1) 209 // CHECK: ('n_sect', 0) 210 // CHECK: ('n_desc', 0) 211 // CHECK: ('n_value', 0) 212 // CHECK: ('_string', 'sym_nlp_B') 213 // CHECK: ), 214 // CHECK: # Symbol 9 215 // CHECK: (('n_strx', 51) 216 // CHECK: ('n_type', 0x1) 217 // CHECK: ('n_sect', 0) 218 // CHECK: ('n_desc', 0) 219 // CHECK: ('n_value', 0) 220 // CHECK: ('_string', 'sym_nlp_E') 221 // CHECK: ), 222 // CHECK: ]) 223 // CHECK: ), 224 // CHECK: # Load Command 2 225 // CHECK: (('command', 11) 226 // CHECK: ('size', 80) 227 // CHECK: ('ilocalsym', 0) 228 // CHECK: ('nlocalsym', 2) 229 // CHECK: ('iextdefsym', 2) 230 // CHECK: ('nextdefsym', 2) 231 // CHECK: ('iundefsym', 4) 232 // CHECK: ('nundefsym', 6) 233 // CHECK: ('tocoff', 0) 234 // CHECK: ('ntoc', 0) 235 // CHECK: ('modtaboff', 0) 236 // CHECK: ('nmodtab', 0) 237 // CHECK: ('extrefsymoff', 0) 238 // CHECK: ('nextrefsyms', 0) 239 // CHECK: ('indirectsymoff', 432) 240 // CHECK: ('nindirectsyms', 10) 241 // CHECK: ('extreloff', 0) 242 // CHECK: ('nextrel', 0) 243 // CHECK: ('locreloff', 0) 244 // CHECK: ('nlocrel', 0) 245 // CHECK: ('_indirect_symbols', [ 246 // CHECK: # Indirect Symbol 0 247 // CHECK: (('symbol_index', 0x5),), 248 // CHECK: # Indirect Symbol 1 249 // CHECK: (('symbol_index', 0x4),), 250 // CHECK: # Indirect Symbol 2 251 // CHECK: (('symbol_index', 0x0),), 252 // CHECK: # Indirect Symbol 3 253 // CHECK: (('symbol_index', 0x6),), 254 // CHECK: # Indirect Symbol 4 255 // CHECK: (('symbol_index', 0x2),), 256 // CHECK: # Indirect Symbol 5 257 // CHECK: (('symbol_index', 0x8),), 258 // CHECK: # Indirect Symbol 6 259 // CHECK: (('symbol_index', 0x7),), 260 // CHECK: # Indirect Symbol 7 261 // CHECK: (('symbol_index', 0x80000000),), 262 // CHECK: # Indirect Symbol 8 263 // CHECK: (('symbol_index', 0x9),), 264 // CHECK: # Indirect Symbol 9 265 // CHECK: (('symbol_index', 0x3),), 266 // CHECK: ]) 267 // CHECK: ), 268 // CHECK: ]) 269