Home | History | Annotate | Download | only in MachO
      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