brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.8 KiB · d589208 Raw
315 lines · plain
1// RUN: llvm-mc -n -triple x86_64-apple-darwin9 %s -filetype=obj -o - | llvm-readobj -r --expand-relocs - | FileCheck %s2 3// These examples are taken from <mach-o/x86_64/reloc.h>.4 5        .data6        .long 07 8        .text9_foo:10        ret11 12_baz:13        call _foo14 	call _foo+415 	movq _foo@GOTPCREL(%rip), %rax16 	pushq _foo@GOTPCREL(%rip)17 	movl _foo(%rip), %eax18 	movl _foo+4(%rip), %eax19 	movb  $0x12, _foo(%rip)20 	movl  $0x12345678, _foo(%rip)21 	.quad _foo22_bar:23 	.quad _foo+424 	.quad _foo - _bar25 	.quad _foo - _bar + 426 	.long _foo - _bar27 	leaq L1(%rip), %rax28 	leaq L0(%rip), %rax29        addl $6,L0(%rip)30        addw $500,L0(%rip)31        addl $500,L0(%rip)32 33_prev:34        .space 12,0x9035 	.quad L136L0:37        .quad L038L_pc:39 	.quad _foo - L_pc40 	.quad _foo - L141L1:42 	.quad L1 - _prev43 44        .data45.long	_foobar@GOTPCREL+446.long	_foo@GOTPCREL+447 48        .section	__DWARF,__debug_frame,regular,debug49        .quad L150        .quad _ext_foo51 52// Make sure local label which overlaps with non-local one is assigned to the53// right atom.54        .text55_f2:56L2_0:57        addl $0, %eax58L2_1:        59_f3:60        addl L2_1 - L2_0, %eax61        62        .data63L4:     64        .long 065        .text66        movl L4(%rip), %eax67 68        .section __TEXT,__literal8,8byte_literals69	.quad 070L5:     71	.quad 072f6:73        .quad 074L6:75        .quad 076        77        .text78	movl L5(%rip), %eax79	movl f6(%rip), %eax80	movl L6(%rip), %eax81        82        .data83        .quad L584        .quad f685	.quad L686 87        .text88        cmpq $0, _foo@GOTPCREL(%rip)89 90// CHECK:      Relocations [91// CHECK-NEXT:   Section __data {92// CHECK-NEXT:     Relocation {93// CHECK-NEXT:       Offset: 0x2094// CHECK-NEXT:       PCRel: 095// CHECK-NEXT:       Length: 396// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)97// CHECK-NEXT:       Section: __literal898// CHECK-NEXT:     }99// CHECK-NEXT:     Relocation {100// CHECK-NEXT:       Offset: 0x18101// CHECK-NEXT:       PCRel: 0102// CHECK-NEXT:       Length: 3103// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)104// CHECK-NEXT:       Symbol: f6105// CHECK-NEXT:     }106// CHECK-NEXT:     Relocation {107// CHECK-NEXT:       Offset: 0x10108// CHECK-NEXT:       PCRel: 0109// CHECK-NEXT:       Length: 3110// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)111// CHECK-NEXT:       Section: __literal8112// CHECK-NEXT:     }113// CHECK-NEXT:     Relocation {114// CHECK-NEXT:       Offset: 0x8115// CHECK-NEXT:       PCRel: 1116// CHECK-NEXT:       Length: 2117// CHECK-NEXT:       Type: X86_64_RELOC_GOT (4)118// CHECK-NEXT:       Symbol: _foo119// CHECK-NEXT:     }120// CHECK-NEXT:     Relocation {121// CHECK-NEXT:       Offset: 0x4122// CHECK-NEXT:       PCRel: 1123// CHECK-NEXT:       Length: 2124// CHECK-NEXT:       Type: X86_64_RELOC_GOT (4)125// CHECK-NEXT:       Symbol: _foobar126// CHECK-NEXT:     }127// CHECK-NEXT:   }128// CHECK-NEXT:   Section __text {129// CHECK-NEXT:     Relocation {130// CHECK-NEXT:       Offset: 0xDA131// CHECK-NEXT:       PCRel: 1132// CHECK-NEXT:       Length: 2133// CHECK-NEXT:       Type: X86_64_RELOC_GOT (4)134// CHECK-NEXT:       Symbol: _foo135// CHECK-NEXT:     }136// CHECK-NEXT:     Relocation {137// CHECK-NEXT:       Offset: 0xD3138// CHECK-NEXT:       PCRel: 1139// CHECK-NEXT:       Length: 2140// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED (1)141// CHECK-NEXT:       Section: __literal8142// CHECK-NEXT:     }143// CHECK-NEXT:     Relocation {144// CHECK-NEXT:       Offset: 0xCD145// CHECK-NEXT:       PCRel: 1146// CHECK-NEXT:       Length: 2147// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED (1)148// CHECK-NEXT:       Symbol: f6149// CHECK-NEXT:     }150// CHECK-NEXT:     Relocation {151// CHECK-NEXT:       Offset: 0xC7152// CHECK-NEXT:       PCRel: 1153// CHECK-NEXT:       Length: 2154// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED (1)155// CHECK-NEXT:       Section: __literal8156// CHECK-NEXT:     }157// CHECK-NEXT:     Relocation {158// CHECK-NEXT:       Offset: 0xC1159// CHECK-NEXT:       PCRel: 1160// CHECK-NEXT:       Length: 2161// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED (1)162// CHECK-NEXT:       Section: __data163// CHECK-NEXT:     }164// CHECK-NEXT:     Relocation {165// CHECK-NEXT:       Offset: 0xA5166// CHECK-NEXT:       PCRel: 0167// CHECK-NEXT:       Length: 3168// CHECK-NEXT:       Type: X86_64_RELOC_SUBTRACTOR (5)169// CHECK-NEXT:       Symbol: _prev170// CHECK-NEXT:     }171// CHECK-NEXT:     Relocation {172// CHECK-NEXT:       Offset: 0xA5173// CHECK-NEXT:       PCRel: 0174// CHECK-NEXT:       Length: 3175// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)176// CHECK-NEXT:       Symbol: _foo177// CHECK-NEXT:     }178// CHECK-NEXT:     Relocation {179// CHECK-NEXT:       Offset: 0x95180// CHECK-NEXT:       PCRel: 0181// CHECK-NEXT:       Length: 3182// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)183// CHECK-NEXT:       Symbol: _prev184// CHECK-NEXT:     }185// CHECK-NEXT:     Relocation {186// CHECK-NEXT:       Offset: 0x8D187// CHECK-NEXT:       PCRel: 0188// CHECK-NEXT:       Length: 3189// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)190// CHECK-NEXT:       Symbol: _prev191// CHECK-NEXT:     }192// CHECK-NEXT:     Relocation {193// CHECK-NEXT:       Offset: 0x79194// CHECK-NEXT:       PCRel: 1195// CHECK-NEXT:       Length: 2196// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED_4 (8)197// CHECK-NEXT:       Symbol: _prev198// CHECK-NEXT:     }199// CHECK-NEXT:     Relocation {200// CHECK-NEXT:       Offset: 0x71201// CHECK-NEXT:       PCRel: 1202// CHECK-NEXT:       Length: 2203// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED_2 (7)204// CHECK-NEXT:       Symbol: _prev205// CHECK-NEXT:     }206// CHECK-NEXT:     Relocation {207// CHECK-NEXT:       Offset: 0x69208// CHECK-NEXT:       PCRel: 1209// CHECK-NEXT:       Length: 2210// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED_1 (6)211// CHECK-NEXT:       Symbol: _prev212// CHECK-NEXT:     }213// CHECK-NEXT:     Relocation {214// CHECK-NEXT:       Offset: 0x63215// CHECK-NEXT:       PCRel: 1216// CHECK-NEXT:       Length: 2217// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED (1)218// CHECK-NEXT:       Symbol: _prev219// CHECK-NEXT:     }220// CHECK-NEXT:     Relocation {221// CHECK-NEXT:       Offset: 0x5C222// CHECK-NEXT:       PCRel: 1223// CHECK-NEXT:       Length: 2224// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED (1)225// CHECK-NEXT:       Symbol: _prev226// CHECK-NEXT:     }227// CHECK-NEXT:     Relocation {228// CHECK-NEXT:       Offset: 0x3D229// CHECK-NEXT:       PCRel: 0230// CHECK-NEXT:       Length: 3231// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)232// CHECK-NEXT:       Symbol: _foo233// CHECK-NEXT:     }234// CHECK-NEXT:     Relocation {235// CHECK-NEXT:       Offset: 0x35236// CHECK-NEXT:       PCRel: 0237// CHECK-NEXT:       Length: 3238// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)239// CHECK-NEXT:       Symbol: _foo240// CHECK-NEXT:     }241// CHECK-NEXT:     Relocation {242// CHECK-NEXT:       Offset: 0x2D243// CHECK-NEXT:       PCRel: 1244// CHECK-NEXT:       Length: 2245// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED_4 (8)246// CHECK-NEXT:       Symbol: _foo247// CHECK-NEXT:     }248// CHECK-NEXT:     Relocation {249// CHECK-NEXT:       Offset: 0x26250// CHECK-NEXT:       PCRel: 1251// CHECK-NEXT:       Length: 2252// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED_1 (6)253// CHECK-NEXT:       Symbol: _foo254// CHECK-NEXT:     }255// CHECK-NEXT:     Relocation {256// CHECK-NEXT:       Offset: 0x20257// CHECK-NEXT:       PCRel: 1258// CHECK-NEXT:       Length: 2259// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED (1)260// CHECK-NEXT:       Symbol: _foo261// CHECK-NEXT:     }262// CHECK-NEXT:     Relocation {263// CHECK-NEXT:       Offset: 0x1A264// CHECK-NEXT:       PCRel: 1265// CHECK-NEXT:       Length: 2266// CHECK-NEXT:       Type: X86_64_RELOC_SIGNED (1)267// CHECK-NEXT:       Symbol: _foo268// CHECK-NEXT:     }269// CHECK-NEXT:     Relocation {270// CHECK-NEXT:       Offset: 0x14271// CHECK-NEXT:       PCRel: 1272// CHECK-NEXT:       Length: 2273// CHECK-NEXT:       Type: X86_64_RELOC_GOT (4)274// CHECK-NEXT:       Symbol: _foo275// CHECK-NEXT:     }276// CHECK-NEXT:     Relocation {277// CHECK-NEXT:       Offset: 0xE278// CHECK-NEXT:       PCRel: 1279// CHECK-NEXT:       Length: 2280// CHECK-NEXT:       Type: X86_64_RELOC_GOT_LOAD (3)281// CHECK-NEXT:       Symbol: _foo282// CHECK-NEXT:     }283// CHECK-NEXT:     Relocation {284// CHECK-NEXT:       Offset: 0x7285// CHECK-NEXT:       PCRel: 1286// CHECK-NEXT:       Length: 2287// CHECK-NEXT:       Type: X86_64_RELOC_BRANCH (2)288// CHECK-NEXT:       Symbol: _foo289// CHECK-NEXT:     }290// CHECK-NEXT:     Relocation {291// CHECK-NEXT:       Offset: 0x2292// CHECK-NEXT:       PCRel: 1293// CHECK-NEXT:       Length: 2294// CHECK-NEXT:       Type: X86_64_RELOC_BRANCH (2)295// CHECK-NEXT:       Symbol: _foo296// CHECK-NEXT:     }297// CHECK-NEXT:   }298// CHECK-NEXT:   Section __debug_frame {299// CHECK-NEXT:     Relocation {300// CHECK-NEXT:       Offset: 0x8301// CHECK-NEXT:       PCRel: 0302// CHECK-NEXT:       Length: 3303// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)304// CHECK-NEXT:       Symbol: _ext_foo305// CHECK-NEXT:     }306// CHECK-NEXT:     Relocation {307// CHECK-NEXT:       Offset: 0x0308// CHECK-NEXT:       PCRel: 0309// CHECK-NEXT:       Length: 3310// CHECK-NEXT:       Type: X86_64_RELOC_UNSIGNED (0)311// CHECK-NEXT:       Section: __text312// CHECK-NEXT:     }313// CHECK-NEXT:   }314// CHECK-NEXT: ]315