1 // RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s 2 3 # 1 byte nop test 4 .align 4, 0 # start with 16 byte alignment filled with zeros 5 ret 6 # nop 7 # 0x90 8 .align 1, 0x90 9 ret 10 # 2 byte nop test 11 .align 4, 0 # start with 16 byte alignment filled with zeros 12 ret 13 ret 14 # xchg %ax,%ax 15 # 0x66, 0x90 16 .align 2, 0x90 17 ret 18 # 3 byte nop test 19 .align 4, 0 # start with 16 byte alignment filled with zeros 20 ret 21 # nopl (%[re]ax) 22 # 0x0f, 0x1f, 0x00 23 .align 2, 0x90 24 ret 25 # 4 byte nop test 26 .align 4, 0 # start with 16 byte alignment filled with zeros 27 ret 28 ret 29 ret 30 ret 31 # nopl 0(%[re]ax) 32 # 0x0f, 0x1f, 0x40, 0x00 33 .align 3, 0x90 34 ret 35 # 5 byte nop test 36 .align 4, 0 # start with 16 byte alignment filled with zeros 37 ret 38 ret 39 ret 40 # nopl 0(%[re]ax,%[re]ax,1) 41 # 0x0f, 0x1f, 0x44, 0x00, 0x00 42 .align 3, 0x90 43 ret 44 # 6 byte nop test 45 .align 4, 0 # start with 16 byte alignment filled with zeros 46 ret 47 ret 48 # nopw 0(%[re]ax,%[re]ax,1) 49 # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00 50 .align 3, 0x90 51 ret 52 # 7 byte nop test 53 .align 4, 0 # start with 16 byte alignment filled with zeros 54 ret 55 # nopl 0L(%[re]ax) 56 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 57 .align 3, 0x90 58 ret 59 # 8 byte nop test 60 .align 4, 0 # start with 16 byte alignment filled with zeros 61 ret 62 ret 63 ret 64 ret 65 ret 66 ret 67 ret 68 ret 69 # nopl 0L(%[re]ax,%[re]ax,1) 70 # 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 71 .align 3, 0x90 72 ret 73 # 9 byte nop test 74 .align 4, 0 # start with 16 byte alignment filled with zeros 75 ret 76 ret 77 ret 78 ret 79 ret 80 ret 81 ret 82 # nopw 0L(%[re]ax,%[re]ax,1) 83 # 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 84 .align 4, 0x90 85 ret 86 # 10 byte nop test 87 .align 4, 0 # start with 16 byte alignment filled with zeros 88 ret 89 ret 90 ret 91 ret 92 ret 93 ret 94 ret 95 # nopw %cs:0L(%[re]ax,%[re]ax,1) 96 # 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 97 .align 4, 0x90 98 ret 99 # 11 byte nop test 100 .align 4, 0 # start with 16 byte alignment filled with zeros 101 ret 102 ret 103 ret 104 ret 105 ret 106 # nopw %cs:0L(%[re]ax,%[re]ax,1) 107 # 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 108 .align 4, 0x90 109 ret 110 # 12 byte nop test 111 .align 4, 0 # start with 16 byte alignment filled with zeros 112 ret 113 ret 114 ret 115 ret 116 # nopw 0(%[re]ax,%[re]ax,1) 117 # nopw 0(%[re]ax,%[re]ax,1) 118 # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00, 119 # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00 120 .align 4, 0x90 121 ret 122 # 13 byte nop test 123 .align 4, 0 # start with 16 byte alignment filled with zeros 124 ret 125 ret 126 ret 127 # nopw 0(%[re]ax,%[re]ax,1) 128 # nopl 0L(%[re]ax) 129 # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00, 130 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 131 .align 4, 0x90 132 ret 133 # 14 byte nop test 134 .align 4, 0 # start with 16 byte alignment filled with zeros 135 ret 136 ret 137 # nopl 0L(%[re]ax) 138 # nopl 0L(%[re]ax) 139 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 140 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 141 .align 4, 0x90 142 ret 143 # 15 byte nop test 144 .align 4, 0 # start with 16 byte alignment filled with zeros 145 ret 146 # nopl 0L(%[re]ax) 147 # nopl 0L(%[re]ax,%[re]ax,1) 148 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 149 # 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 150 .align 4, 0x90 151 ret 152 153 # Only the .text sections gets optimal nops. 154 .section __TEXT,__const 155 f0: 156 .byte 0 157 .align 4, 0x90 158 .long 0 159 160 // CHECK: ('cputype', 7) 161 // CHECK: ('cpusubtype', 3) 162 // CHECK: ('filetype', 1) 163 // CHECK: ('num_load_commands', 3) 164 // CHECK: ('load_commands_size', 296) 165 // CHECK: ('flag', 0) 166 // CHECK: ('load_commands', [ 167 // CHECK: # Load Command 0 168 // CHECK: (('command', 1) 169 // CHECK: ('size', 192) 170 // CHECK: ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 171 // CHECK: ('vm_addr', 0) 172 // CHECK: ('vm_size', 372) 173 // CHECK: ('file_offset', 324) 174 // CHECK: ('file_size', 372) 175 // CHECK: ('maxprot', 7) 176 // CHECK: ('initprot', 7) 177 // CHECK: ('num_sections', 2) 178 // CHECK: ('flags', 0) 179 // CHECK: ('sections', [ 180 // CHECK: # Section 0 181 // CHECK: (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 182 // CHECK: ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 183 // CHECK: ('address', 0) 184 // CHECK: ('size', 337) 185 // CHECK: ('offset', 324) 186 // CHECK: ('alignment', 4) 187 // CHECK: ('reloc_offset', 0) 188 // CHECK: ('num_reloc', 0) 189 // CHECK: ('flags', 0x80000400) 190 // CHECK: ('reserved1', 0) 191 // CHECK: ('reserved2', 0) 192 // CHECK: ), 193 // CHECK: ('_relocations', [ 194 // CHECK: ]) 195 // CHECK: ('_section_data', 'c390c300 00000000 00000000 00000000 c3c36690 c3000000 00000000 00000000 c30f1f00 c3000000 00000000 00000000 c3c3c3c3 0f1f4000 c3000000 00000000 c3c3c30f 1f440000 c3000000 00000000 c3c3660f 1f440000 c3000000 00000000 c30f1f80 00000000 c3000000 00000000 c3c3c3c3 c3c3c3c3 c3000000 00000000 c3c3c3c3 c3c3c366 0f1f8400 00000000 c3000000 00000000 00000000 00000000 c3c3c3c3 c3c3c366 0f1f8400 00000000 c3000000 00000000 00000000 00000000 c3c3c3c3 c366662e 0f1f8400 00000000 c3000000 00000000 00000000 00000000 c3c3c3c3 6666662e 0f1f8400 00000000 c3000000 00000000 00000000 00000000 c3c3c366 6666662e 0f1f8400 00000000 c3000000 00000000 00000000 00000000 c3c36666 6666662e 0f1f8400 00000000 c3000000 00000000 00000000 00000000 c3666666 6666662e 0f1f8400 00000000 c3') 196 // CHECK: # Section 1 197 // CHECK: (('section_name', '__const\x00\x00\x00\x00\x00\x00\x00\x00\x00') 198 // CHECK: ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 199 // CHECK: ('address', 352) 200 // CHECK: ('size', 20) 201 // CHECK: ('offset', 676) 202 // CHECK: ('alignment', 4) 203 // CHECK: ('reloc_offset', 0) 204 // CHECK: ('num_reloc', 0) 205 // CHECK: ('flags', 0x0) 206 // CHECK: ('reserved1', 0) 207 // CHECK: ('reserved2', 0) 208 // CHECK: ), 209 // CHECK: ('_relocations', [ 210 // CHECK: ]) 211 // CHECK: ('_section_data', '00909090 90909090 90909090 90909090 00000000') 212 // CHECK: ]) 213 // CHECK: ), 214 // CHECK: # Load Command 1 215 // CHECK: (('command', 2) 216 // CHECK: ('size', 24) 217 // CHECK: ('symoff', 696) 218 // CHECK: ('nsyms', 1) 219 // CHECK: ('stroff', 708) 220 // CHECK: ('strsize', 4) 221 // CHECK: ('_string_data', '\x00f0\x00') 222 // CHECK: ('_symbols', [ 223 // CHECK: # Symbol 0 224 // CHECK: (('n_strx', 1) 225 // CHECK: ('n_type', 0xe) 226 // CHECK: ('n_sect', 2) 227 // CHECK: ('n_desc', 0) 228 // CHECK: ('n_value', 352) 229 // CHECK: ('_string', 'f0') 230 // CHECK: ), 231 // CHECK: ]) 232 // CHECK: ), 233 // CHECK: # Load Command 2 234 // CHECK: (('command', 11) 235 // CHECK: ('size', 80) 236 // CHECK: ('ilocalsym', 0) 237 // CHECK: ('nlocalsym', 1) 238 // CHECK: ('iextdefsym', 1) 239 // CHECK: ('nextdefsym', 0) 240 // CHECK: ('iundefsym', 1) 241 // CHECK: ('nundefsym', 0) 242 // CHECK: ('tocoff', 0) 243 // CHECK: ('ntoc', 0) 244 // CHECK: ('modtaboff', 0) 245 // CHECK: ('nmodtab', 0) 246 // CHECK: ('extrefsymoff', 0) 247 // CHECK: ('nextrefsyms', 0) 248 // CHECK: ('indirectsymoff', 0) 249 // CHECK: ('nindirectsyms', 0) 250 // CHECK: ('extreloff', 0) 251 // CHECK: ('nextrel', 0) 252 // CHECK: ('locreloff', 0) 253 // CHECK: ('nlocrel', 0) 254 // CHECK: ('_indirect_symbols', [ 255 // CHECK: ]) 256 // CHECK: ), 257 // CHECK: ]) 258