289 lines · plain
1// RUN: llvm-mc -triple i386-apple-darwin9 -mcpu=pentiumpro %s -filetype=obj -o - | llvm-readobj --file-headers -S --sd -r --symbols --macho-segment --macho-dysymtab --macho-indirect-symbols - | FileCheck %s2 3# 1 byte nop test4 .align 4, 0 # start with 16 byte alignment filled with zeros5 ret6 # nop7 # 0x908 .align 19 ret10# 2 byte nop test11 .align 4, 0 # start with 16 byte alignment filled with zeros12 ret13 ret14 # xchg %ax,%ax15 # 0x66, 0x9016 .align 217 ret18# 3 byte nop test19 .align 4, 0 # start with 16 byte alignment filled with zeros20 ret21 # nopl (%[re]ax)22 # 0x0f, 0x1f, 0x0023 .align 224 ret25# 4 byte nop test26 .align 4, 0 # start with 16 byte alignment filled with zeros27 ret28 ret29 ret30 ret31 # nopl 0(%[re]ax)32 # 0x0f, 0x1f, 0x40, 0x0033 .align 334 ret35# 5 byte nop test36 .align 4, 0 # start with 16 byte alignment filled with zeros37 ret38 ret39 ret40 # nopl 0(%[re]ax,%[re]ax,1)41 # 0x0f, 0x1f, 0x44, 0x00, 0x0042 .align 343 ret44# 6 byte nop test45 .align 4, 0 # start with 16 byte alignment filled with zeros46 ret47 ret48 # nopw 0(%[re]ax,%[re]ax,1)49 # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x0050 .align 351 ret52# 7 byte nop test53 .align 4, 0 # start with 16 byte alignment filled with zeros54 ret55 # nopl 0L(%[re]ax)56 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x0057 .align 358 ret59# 8 byte nop test60 .align 4, 0 # start with 16 byte alignment filled with zeros61 ret62 ret63 ret64 ret65 ret66 ret67 ret68 ret69 # nopl 0L(%[re]ax,%[re]ax,1)70 # 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x0071 .align 372 ret73# 9 byte nop test74 .align 4, 0 # start with 16 byte alignment filled with zeros75 ret76 ret77 ret78 ret79 ret80 ret81 ret82 # nopw 0L(%[re]ax,%[re]ax,1)83 # 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x0084 .align 485 ret86# 10 byte nop test87 .align 4, 0 # start with 16 byte alignment filled with zeros88 ret89 ret90 ret91 ret92 ret93 ret94 ret95 # nopw %cs:0L(%[re]ax,%[re]ax,1)96 # 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x0097 .align 498 ret99# 11 byte nop test100 .align 4, 0 # start with 16 byte alignment filled with zeros101 ret102 ret103 ret104 ret105 ret106 # nopw %cs:0L(%[re]ax,%[re]ax,1)107 # 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00108 .align 4109 ret110# 12 byte nop test111 .align 4, 0 # start with 16 byte alignment filled with zeros112 ret113 ret114 ret115 ret116 # 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, 0x00120 .align 4121 ret122# 13 byte nop test123 .align 4, 0 # start with 16 byte alignment filled with zeros124 ret125 ret126 ret127 # 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, 0x00131 .align 4132 ret133# 14 byte nop test134 .align 4, 0 # start with 16 byte alignment filled with zeros135 ret136 ret137 # nopl 0L(%[re]ax)138 # nopl 0L(%[re]ax)139 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00,140 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00141 .align 4142 ret143# 15 byte nop test144 .align 4, 0 # start with 16 byte alignment filled with zeros145 ret146 # 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, 0x00150 .align 4151 ret152 153 # Only the .text sections gets optimal nops.154 .section __TEXT,__const155f0:156 .byte 0157 .align 4, 0x90158 .long 0159 160// CHECK: File: <stdin>161// CHECK: Format: Mach-O 32-bit i386162// CHECK: Arch: i386163// CHECK: AddressSize: 32bit164// CHECK: MachHeader {165// CHECK: Magic: Magic (0xFEEDFACE)166// CHECK: CpuType: X86 (0x7)167// CHECK: CpuSubType: CPU_SUBTYPE_I386_ALL (0x3)168// CHECK: FileType: Relocatable (0x1)169// CHECK: NumOfLoadCommands: 4170// CHECK: SizeOfLoadCommands: 312171// CHECK: Flags [ (0x0)172// CHECK: ]173// CHECK: }174// CHECK: Sections [175// CHECK: Section {176// CHECK: Index: 0177// CHECK: Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)178// CHECK: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)179// CHECK: Address: 0x0180// CHECK: Size: 0x151181// CHECK: Offset: 340182// CHECK: Alignment: 4183// CHECK: RelocationOffset: 0x0184// CHECK: RelocationCount: 0185// CHECK: Type: Regular (0x0)186// CHECK: Attributes [ (0x800004)187// CHECK: PureInstructions (0x800000)188// CHECK: SomeInstructions (0x4)189// CHECK: ]190// CHECK: Reserved1: 0x0191// CHECK: Reserved2: 0x0192// CHECK: SectionData (193// CHECK: 0000: C390C300 00000000 00000000 00000000 |................|194// CHECK: 0010: C3C36690 C3000000 00000000 00000000 |..f.............|195// CHECK: 0020: C30F1F00 C3000000 00000000 00000000 |................|196// CHECK: 0030: C3C3C3C3 0F1F4000 C3000000 00000000 |......@.........|197// CHECK: 0040: C3C3C30F 1F440000 C3000000 00000000 |.....D..........|198// CHECK: 0050: C3C3660F 1F440000 C3000000 00000000 |..f..D..........|199// CHECK: 0060: C30F1F80 00000000 C3000000 00000000 |................|200// CHECK: 0070: C3C3C3C3 C3C3C3C3 C3000000 00000000 |................|201// CHECK: 0080: C3C3C3C3 C3C3C366 0F1F8400 00000000 |.......f........|202// CHECK: 0090: C3000000 00000000 00000000 00000000 |................|203// CHECK: 00A0: C3C3C3C3 C3C3C366 0F1F8400 00000000 |.......f........|204// CHECK: 00B0: C3000000 00000000 00000000 00000000 |................|205// CHECK: 00C0: C3C3C3C3 C3662E0F 1F840000 00000090 |.....f..........|206// CHECK: 00D0: C3000000 00000000 00000000 00000000 |................|207// CHECK: 00E0: C3C3C3C3 662E0F1F 84000000 00006690 |....f.........f.|208// CHECK: 00F0: C3000000 00000000 00000000 00000000 |................|209// CHECK: 0100: C3C3C366 2E0F1F84 00000000 000F1F00 |...f............|210// CHECK: 0110: C3000000 00000000 00000000 00000000 |................|211// CHECK: 0120: C3C3662E 0F1F8400 00000000 0F1F4000 |..f...........@.|212// CHECK: 0130: C3000000 00000000 00000000 00000000 |................|213// CHECK: 0140: C3662E0F 1F840000 0000000F 1F440000 |.f...........D..|214// CHECK: 0150: C3 |.|215// CHECK: )216// CHECK: }217// CHECK: Section {218// CHECK: Index: 1219// CHECK: Name: __const (5F 5F 63 6F 6E 73 74 00 00 00 00 00 00 00 00 00)220// CHECK: Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)221// CHECK: Address: 0x160222// CHECK: Size: 0x14223// CHECK: Offset: 692224// CHECK: Alignment: 4225// CHECK: RelocationOffset: 0x0226// CHECK: RelocationCount: 0227// CHECK: Type: Regular (0x0)228// CHECK: Attributes [ (0x0)229// CHECK: ]230// CHECK: Reserved1: 0x0231// CHECK: Reserved2: 0x0232// CHECK: SectionData (233// CHECK: 0000: 00909090 90909090 90909090 90909090 |................|234// CHECK: 0010: 00000000 |....|235// CHECK: )236// CHECK: }237// CHECK: ]238// CHECK: Relocations [239// CHECK: ]240// CHECK: Symbols [241// CHECK: Symbol {242// CHECK: Name: f0 (1)243// CHECK: Type: Section (0xE)244// CHECK: Section: __const (0x2)245// CHECK: RefType: UndefinedNonLazy (0x0)246// CHECK: Flags [ (0x0)247// CHECK: ]248// CHECK: Value: 0x160249// CHECK: }250// CHECK: ]251// CHECK: Indirect Symbols {252// CHECK: Number: 0253// CHECK: Symbols [254// CHECK: ]255// CHECK: }256// CHECK: Segment {257// CHECK: Cmd: LC_SEGMENT258// CHECK: Name:259// CHECK: Size: 192260// CHECK: vmaddr: 0x0261// CHECK: vmsize: 0x174262// CHECK: fileoff: 340263// CHECK: filesize: 372264// CHECK: maxprot: rwx265// CHECK: initprot: rwx266// CHECK: nsects: 2267// CHECK: flags: 0x0268// CHECK: }269// CHECK: Dysymtab {270// CHECK: ilocalsym: 0271// CHECK: nlocalsym: 1272// CHECK: iextdefsym: 1273// CHECK: nextdefsym: 0274// CHECK: iundefsym: 1275// CHECK: nundefsym: 0276// CHECK: tocoff: 0277// CHECK: ntoc: 0278// CHECK: modtaboff: 0279// CHECK: nmodtab: 0280// CHECK: extrefsymoff: 0281// CHECK: nextrefsyms: 0282// CHECK: indirectsymoff: 0283// CHECK: nindirectsyms: 0284// CHECK: extreloff: 0285// CHECK: nextrel: 0286// CHECK: locreloff: 0287// CHECK: nlocrel: 0288// CHECK: }289