brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.8 KiB · 6f5777f Raw
427 lines · plain
1// REQUIRES: arm2// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %p/Inputs/arm-plt-reloc.s -o %t13// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t24// RUN: ld.lld %t1 %t2 -o %t5// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t | FileCheck %s6// RUN: ld.lld -shared %t1 %t2 -o %t37// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t3 | FileCheck --check-prefix=DSO %s8// RUN: llvm-readobj -S -r %t3 | FileCheck -check-prefix=DSOREL %s9 10// RUN: llvm-mc -filetype=obj -triple=armv7aeb-none-linux-gnueabi %p/Inputs/arm-plt-reloc.s -o %t1.be11// RUN: llvm-mc -filetype=obj -triple=armv7aeb-none-linux-gnueabi %s -o %t2.be12// RUN: ld.lld %t1.be %t2.be -o %t.be13// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t.be | FileCheck %s14// RUN: ld.lld -shared %t1.be %t2.be -o %t3.be15// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t3.be | FileCheck --check-prefix=DSO %s16// RUN: llvm-readobj -S -r %t3.be | FileCheck -check-prefix=DSOREL %s17 18// RUN: ld.lld --be8 %t1.be %t2.be -o %t.be19// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t.be | FileCheck %s20// RUN: ld.lld --be8 -shared %t1.be %t2.be -o %t3.be21// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t3.be | FileCheck --check-prefix=DSO %s22// RUN: llvm-readobj -S -r %t3.be | FileCheck -check-prefix=DSOREL %s23//24// Test PLT entry generation25 .syntax unified26 .text27 .align 228 .globl _start29 .type  _start,%function30_start:31 b func132 bl func233 beq func334 35// Executable, expect no PLT36// CHECK: Disassembly of section .text:37// CHECK-EMPTY:38// CHECK-NEXT: <func1>:39// CHECK-NEXT:   200b4:       bx      lr40// CHECK: <func2>:41// CHECK-NEXT:   200b8:       bx      lr42// CHECK: <func3>:43// CHECK-NEXT:   200bc:       bx      lr44// CHECK: <_start>:45// CHECK-NEXT:   200c0:       b       0x200b4 <func1>46// CHECK-NEXT:   200c4:       bl      0x200b8 <func2>47// CHECK-NEXT:   200c8:       beq     0x200bc <func3>48 49// Expect PLT entries as symbols can be preempted50// The .got.plt and .plt displacement is small so we can use small PLT entries.51// DSO: Disassembly of section .text:52// DSO-EMPTY:53// DSO-NEXT: <func1>:54// DSO-NEXT:     10214:       bx      lr55// DSO: <func2>:56// DSO-NEXT:     10218:       bx      lr57// DSO: <func3>:58// DSO-NEXT:     1021c:       bx      lr59// DSO: <_start>:60// DSO-NEXT:     10220:       b       0x1025061// DSO-NEXT:     10224:       bl      0x1026062// DSO-NEXT:     10228:       beq     0x1027063// DSO-EMPTY:64// DSO-NEXT: Disassembly of section .plt:65// DSO-EMPTY:66// DSO-NEXT: <.plt>:67// DSO-NEXT:     10230:       str     lr, [sp, #-4]!68// (0x10234 + 8) + (0 RoR 12) + (32 RoR 20 = 0x20000) + 164 = 0x302e0 = .got.plt[2]69// DSO-NEXT:     10234:       add     lr, pc, #0, #1270// DSO-NEXT:     10238:       add     lr, lr, #32, #2071// DSO-NEXT:     1023c:       ldr     pc, [lr, #164]!72// DSO-NEXT:     10240:       d4 d4 d4 d4     .word   0xd4d4d4d473// DSO-NEXT:     10244:       d4 d4 d4 d4     .word   0xd4d4d4d474// DSO-NEXT:     10248:       d4 d4 d4 d4     .word   0xd4d4d4d475// DSO-NEXT:     1024c:       d4 d4 d4 d4     .word   0xd4d4d4d476// (0x10250 + 8) + (0 RoR 12) + (32 RoR 20 = 0x20000) + 140 = 0x302e477// DSO-EMPTY:78// DSO-NEXT:     <func1@plt>:79// DSO-NEXT:     10250:       add     r12, pc, #0, #1280// DSO-NEXT:     10254:       add     r12, r12, #32, #2081// DSO-NEXT:     10258:       ldr     pc, [r12, #140]!82// DSO-NEXT:     1025c:       d4 d4 d4 d4     .word   0xd4d4d4d483// (0x10260 + 8) + (0 RoR 12) + (32 RoR 20 = 0x20000) + 128 = 0x302e884// DSO-EMPTY:85// DSO-NEXT:     <func2@plt>:86// DSO-NEXT:     10260:       add     r12, pc, #0, #1287// DSO-NEXT:     10264:       add     r12, r12, #32, #2088// DSO-NEXT:     10268:       ldr     pc, [r12, #128]!89// DSO-NEXT:     1026c:       d4 d4 d4 d4     .word   0xd4d4d4d490// (0x10270 + 8) + (0 RoR 12) + (32 RoR 20 = 0x20000) + 116 = 0x302ec91// DSO-EMPTY:92// DSO-NEXT:     <func3@plt>:93// DSO-NEXT:     10270:       add     r12, pc, #0, #1294// DSO-NEXT:     10274:       add     r12, r12, #32, #2095// DSO-NEXT:     10278:       ldr     pc, [r12, #116]!96// DSO-NEXT:     1027c:       d4 d4 d4 d4     .word   0xd4d4d4d497 98 99// DSOREL:    Name: .got.plt100// DSOREL-NEXT:    Type: SHT_PROGBITS101// DSOREL-NEXT:    Flags [102// DSOREL-NEXT:      SHF_ALLOC103// DSOREL-NEXT:      SHF_WRITE104// DSOREL-NEXT:    ]105// DSOREL-NEXT:    Address: 0x302D8106// DSOREL-NEXT:    Offset:107// DSOREL-NEXT:    Size: 24108// DSOREL-NEXT:    Link:109// DSOREL-NEXT:    Info:110// DSOREL-NEXT:    AddressAlignment: 4111// DSOREL-NEXT:    EntrySize:112// DSOREL:  Relocations [113// DSOREL-NEXT:  Section {{.*}} .rel.plt {114// DSOREL-NEXT:    0x302E4 R_ARM_JUMP_SLOT func1115// DSOREL-NEXT:    0x302E8 R_ARM_JUMP_SLOT func2116// DSOREL-NEXT:    0x302EC R_ARM_JUMP_SLOT func3117 118// Test a large separation between the .plt and .got.plt119// The .got.plt and .plt displacement is large but still within the range120// of the short plt sequence.121// RUN: echo "SECTIONS { \122// RUN:       .text 0x1000 : { *(.text) } \123// RUN:       .plt  0x2000 : { *(.plt) *(.plt.*) } \124// RUN:       .got.plt 0x1100000 : { *(.got.plt) } \125// RUN:       }" > %t.script126// RUN: ld.lld --hash-style=sysv --script %t.script -shared %t1 %t2 -o %t4127// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t4 | FileCheck --check-prefix=CHECKHIGH %s128// RUN: llvm-readobj -S -r %t4 | FileCheck --check-prefix=DSORELHIGH %s129 130// RUN: ld.lld --hash-style=sysv --script %t.script -shared %t1.be %t2.be -o %t4.be131// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t4.be | FileCheck --check-prefix=CHECKHIGH %s132// RUN: llvm-readobj -S -r %t4.be | FileCheck --check-prefix=DSORELHIGH %s133// RUN: ld.lld --be8 --hash-style=sysv --script %t.script -shared %t1.be %t2.be -o %t4.be134// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t4.be | FileCheck --check-prefix=CHECKHIGH %s135// RUN: llvm-readobj -S -r %t4.be | FileCheck --check-prefix=DSORELHIGH %s136 137// CHECKHIGH: Disassembly of section .text:138// CHECKHIGH-EMPTY:139// CHECKHIGH-NEXT: <func1>:140// CHECKHIGH-NEXT:     1000:       bx      lr141// CHECKHIGH: <func2>:142// CHECKHIGH-NEXT:     1004:       bx      lr143// CHECKHIGH: <func3>:144// CHECKHIGH-NEXT:     1008:       bx      lr145// CHECKHIGH: <_start>:146// CHECKHIGH-NEXT:     100c:       b       0x2020147// CHECKHIGH-NEXT:     1010:       bl      0x2030148// CHECKHIGH-NEXT:     1014:       beq     0x2040149// CHECKHIGH-EMPTY:150// CHECKHIGH-NEXT: Disassembly of section .plt:151// CHECKHIGH-EMPTY:152// CHECKHIGH-NEXT: <.plt>:153// CHECKHIGH-NEXT:     2000:       str     lr, [sp, #-4]!154// CHECKHIGH-NEXT:     2004:       add     lr, pc, #16, #12155// CHECKHIGH-NEXT:     2008:       add     lr, lr, #1036288156// CHECKHIGH-NEXT:     200c:       ldr     pc, [lr, #4092]!157// CHECKHIGH-NEXT:     2010:       d4 d4 d4 d4     .word   0xd4d4d4d4158// CHECKHIGH-NEXT:     2014:       d4 d4 d4 d4     .word   0xd4d4d4d4159// CHECKHIGH-NEXT:     2018:       d4 d4 d4 d4     .word   0xd4d4d4d4160// CHECKHIGH-NEXT:     201c:       d4 d4 d4 d4     .word   0xd4d4d4d4161// CHECKHIGH-EMPTY:162// CHECKHIGH-NEXT:     <func1@plt>:163// CHECKHIGH-NEXT:     2020:       add     r12, pc, #16, #12164// CHECKHIGH-NEXT:     2024:       add     r12, r12, #1036288165// CHECKHIGH-NEXT:     2028:       ldr     pc, [r12, #4068]!166// CHECKHIGH-NEXT:     202c:       d4 d4 d4 d4     .word   0xd4d4d4d4167// CHECKHIGH-EMPTY:168// CHECKHIGH-NEXT:     <func2@plt>:169// CHECKHIGH-NEXT:     2030:       add     r12, pc, #16, #12170// CHECKHIGH-NEXT:     2034:       add     r12, r12, #1036288171// CHECKHIGH-NEXT:     2038:       ldr     pc, [r12, #4056]!172// CHECKHIGH-NEXT:     203c:       d4 d4 d4 d4     .word   0xd4d4d4d4173// CHECKHIGH-EMPTY:174// CHECKHIGH-NEXT:     <func3@plt>:175// CHECKHIGH-NEXT:     2040:       add     r12, pc, #16, #12176// CHECKHIGH-NEXT:     2044:       add     r12, r12, #1036288177// CHECKHIGH-NEXT:     2048:       ldr     pc, [r12, #4044]!178// CHECKHIGH-NEXT:     204c:       d4 d4 d4 d4     .word   0xd4d4d4d4179 180// DSORELHIGH:     Name: .got.plt181// DSORELHIGH-NEXT:     Type: SHT_PROGBITS182// DSORELHIGH-NEXT:     Flags [183// DSORELHIGH-NEXT:       SHF_ALLOC184// DSORELHIGH-NEXT:       SHF_WRITE185// DSORELHIGH-NEXT:     ]186// DSORELHIGH-NEXT:     Address: 0x1100000187// DSORELHIGH: Relocations [188// DSORELHIGH-NEXT:   Section {{.*}} .rel.plt {189// DSORELHIGH-NEXT:     0x110000C R_ARM_JUMP_SLOT func1190// DSORELHIGH-NEXT:     0x1100010 R_ARM_JUMP_SLOT func2191// DSORELHIGH-NEXT:     0x1100014 R_ARM_JUMP_SLOT func3192 193// Test a very large separation between the .plt and .got.plt so we must use194// large plt entries that do not have any range restriction.195// RUN: echo "SECTIONS { \196// RUN:       .text 0x1000 : { *(.text) } \197// RUN:       .plt  0x2000 : { *(.plt) *(.plt.*) } \198// RUN:       .got.plt 0x11111100 : { *(.got.plt) } \199// RUN:       }" > %t2.script200// RUN: ld.lld --hash-style=sysv --script %t2.script -shared %t1 %t2 -o %t5201// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t5 | FileCheck --check-prefix=CHECKLONG %s202// RUN: llvm-readobj -S -r %t5 | FileCheck --check-prefix=DSORELLONG %s203 204// RUN: ld.lld --hash-style=sysv --script %t2.script -shared %t1.be %t2.be -o %t5.be205// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t5.be | FileCheck --check-prefix=CHECKLONG-EB %s206// RUN: llvm-readobj -S -r %t5.be | FileCheck --check-prefix=DSORELLONG %s207// RUN: ld.lld --be8 --hash-style=sysv --script %t2.script -shared %t1.be %t2.be -o %t5.be208// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t5.be | FileCheck --check-prefix=CHECKLONG-EB %s209// RUN: llvm-readobj -S -r %t5.be | FileCheck --check-prefix=DSORELLONG %s210 211// CHECKLONG: Disassembly of section .text:212// CHECKLONG-EMPTY:213// CHECKLONG-NEXT: <func1>:214// CHECKLONG-NEXT:     1000:       bx      lr215// CHECKLONG: <func2>:216// CHECKLONG-NEXT:     1004:       bx      lr217// CHECKLONG: <func3>:218// CHECKLONG-NEXT:     1008:       bx      lr219// CHECKLONG: <_start>:220// CHECKLONG-NEXT:     100c:       b       0x2020221// CHECKLONG-NEXT:     1010:       bl      0x2030222// CHECKLONG-NEXT:     1014:       beq     0x2040223// CHECKLONG-EMPTY:224// CHECKLONG-NEXT: Disassembly of section .plt:225// CHECKLONG-EMPTY:226// CHECKLONG-NEXT: <.plt>:227// CHECKLONG-NEXT:     2000:       str     lr, [sp, #-4]!228// CHECKLONG-NEXT:     2004:       ldr     lr, [pc, #4]229// CHECKLONG-NEXT:     2008:       add     lr, pc, lr230// CHECKLONG-NEXT:     200c:       ldr     pc, [lr, #8]!231// CHECKLONG-NEXT:     2010:       f0 f0 10 11     .word   0x1110f0f0232// CHECKLONG-NEXT:     2014:       d4 d4 d4 d4     .word   0xd4d4d4d4233// CHECKLONG-NEXT:     2018:       d4 d4 d4 d4     .word   0xd4d4d4d4234// CHECKLONG-NEXT:     201c:       d4 d4 d4 d4     .word   0xd4d4d4d4235// CHECKLONG-EMPTY:236// CHECKLONG-NEXT: <func1@plt>:237// CHECKLONG-NEXT:     2020:       ldr     r12, [pc, #4]238// CHECKLONG-NEXT:     2024:       add     r12, r12, pc239// CHECKLONG-NEXT:     2028:       ldr     pc, [r12]240// CHECKLONG-NEXT:     202c:       e0 f0 10 11     .word   0x1110f0e0241// CHECKLONG-EMPTY:242// CHECKLONG-NEXT: <func2@plt>:243// CHECKLONG-NEXT:     2030:       ldr     r12, [pc, #4]244// CHECKLONG-NEXT:     2034:       add     r12, r12, pc245// CHECKLONG-NEXT:     2038:       ldr     pc, [r12]246// CHECKLONG-NEXT:     203c:       d4 f0 10 11     .word   0x1110f0d4247// CHECKLONG-EMPTY:248// CHECKLONG-NEXT: <func3@plt>:249// CHECKLONG-NEXT:     2040:       ldr     r12, [pc, #4]250// CHECKLONG-NEXT:     2044:       add     r12, r12, pc251// CHECKLONG-NEXT:     2048:       ldr     pc, [r12]252// CHECKLONG-NEXT:     204c:       c8 f0 10 11     .word   0x1110f0c8253 254// CHECKLONG-EB: Disassembly of section .text:255// CHECKLONG-EB-EMPTY:256// CHECKLONG-EB-NEXT: <func1>:257// CHECKLONG-EB-NEXT:     1000:       bx      lr258// CHECKLONG-EB: <func2>:259// CHECKLONG-EB-NEXT:                 bx      lr260// CHECKLONG-EB: <func3>:261// CHECKLONG-EB-NEXT:                 bx      lr262// CHECKLONG-EB: <_start>:263// CHECKLONG-EB-NEXT:                 b       0x2020264// CHECKLONG-EB-NEXT:                 bl      0x2030265// CHECKLONG-EB-NEXT:                 beq     0x2040266// CHECKLONG-EB-EMPTY:267// CHECKLONG-EB-NEXT: Disassembly of section .plt:268// CHECKLONG-EB-EMPTY:269// CHECKLONG-EB-NEXT: <.plt>:270// CHECKLONG-EB-NEXT:     2000:       str     lr, [sp, #-4]!271// CHECKLONG-EB-NEXT:                 ldr     lr, [pc, #4]272// CHECKLONG-EB-NEXT:                 add     lr, pc, lr273// CHECKLONG-EB-NEXT:                 ldr     pc, [lr, #8]!274// CHECKLONG-EB-NEXT:                 11 10 f0 f0     .word   0x1110f0f0275// CHECKLONG-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4276// CHECKLONG-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4277// CHECKLONG-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4278// CHECKLONG-EB-EMPTY:279// CHECKLONG-EB-NEXT: <func1@plt>:280// CHECKLONG-EB-NEXT:     2020:       ldr     r12, [pc, #4]281// CHECKLONG-EB-NEXT:                 add     r12, r12, pc282// CHECKLONG-EB-NEXT:                 ldr     pc, [r12]283// CHECKLONG-EB-NEXT:                 11 10 f0 e0     .word   0x1110f0e0284// CHECKLONG-EB-EMPTY:285// CHECKLONG-EB-NEXT: <func2@plt>:286// CHECKLONG-EB-NEXT:     2030:       ldr     r12, [pc, #4]287// CHECKLONG-EB-NEXT:                 add     r12, r12, pc288// CHECKLONG-EB-NEXT:                 ldr     pc, [r12]289// CHECKLONG-EB-NEXT:                 11 10 f0 d4     .word   0x1110f0d4290// CHECKLONG-EB-EMPTY:291// CHECKLONG-EB-NEXT: <func3@plt>:292// CHECKLONG-EB-NEXT:     2040:       ldr     r12, [pc, #4]293// CHECKLONG-EB-NEXT:                 add     r12, r12, pc294// CHECKLONG-EB-NEXT:                 ldr     pc, [r12]295// CHECKLONG-EB-NEXT:                11 10 f0 c8     .word   0x1110f0c8296 297// DSORELLONG: Name: .got.plt298// DSORELLONG-NEXT:     Type: SHT_PROGBITS299// DSORELLONG-NEXT:     Flags [300// DSORELLONG-NEXT:       SHF_ALLOC301// DSORELLONG-NEXT:       SHF_WRITE302// DSORELLONG-NEXT:     ]303// DSORELLONG-NEXT:     Address: 0x11111100304// DSORELLONG: Relocations [305// DSORELLONG-NEXT:   Section {{.*}} .rel.plt {306// DSORELLONG-NEXT:     0x1111110C R_ARM_JUMP_SLOT func1307// DSORELLONG-NEXT:     0x11111110 R_ARM_JUMP_SLOT func2308// DSORELLONG-NEXT:     0x11111114 R_ARM_JUMP_SLOT func3309 310// Test a separation between the .plt and .got.plt that is part in range of311// short table entries and part needing long entries. We use the long entries312// only when we need to.313// RUN: echo "SECTIONS { \314// RUN:       .text 0x1000 : { *(.text) } \315// RUN:       .plt  0x2000 : { *(.plt) *(.plt.*) } \316// RUN:       .got.plt 0x8002020 : { *(.got.plt) } \317// RUN:       }" > %t3.script318// RUN: ld.lld --hash-style=sysv --script %t3.script -shared %t1 %t2 -o %t6319// RUN: llvm-objdump --no-print-imm-hex --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t6 | FileCheck --check-prefix=CHECKMIX %s320// RUN: llvm-readobj -S -r %t6 | FileCheck --check-prefix=DSORELMIX %s321 322// RUN: ld.lld --hash-style=sysv --script %t3.script -shared %t1.be %t2.be -o %t6.be323// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t6.be | FileCheck --check-prefix=CHECKMIX-EB %s324// RUN: llvm-readobj -S -r %t6.be | FileCheck --check-prefix=DSORELMIX %s325// RUN: ld.lld --be8 --hash-style=sysv --script %t3.script -shared %t1.be %t2.be -o %t6.be326// RUN: llvm-objdump --no-print-imm-hex --triple=armv7aeb-none-linux-gnueabi -d --no-show-raw-insn %t6.be | FileCheck --check-prefix=CHECKMIX-EB %s327// RUN: llvm-readobj -S -r %t6.be | FileCheck --check-prefix=DSORELMIX %s328 329// CHECKMIX: Disassembly of section .text:330// CHECKMIX-EMPTY:331// CHECKMIX-NEXT: <func1>:332// CHECKMIX-NEXT:     1000:       bx      lr333// CHECKMIX: <func2>:334// CHECKMIX-NEXT:     1004:       bx      lr335// CHECKMIX: <func3>:336// CHECKMIX-NEXT:     1008:       bx      lr337// CHECKMIX: <_start>:338// CHECKMIX-NEXT:     100c:       b       0x2020339// CHECKMIX-NEXT:     1010:       bl      0x2030340// CHECKMIX-NEXT:     1014:       beq     0x2040341// CHECKMIX-EMPTY:342// CHECKMIX-NEXT: Disassembly of section .plt:343// CHECKMIX-EMPTY:344// CHECKMIX-NEXT: <.plt>:345// CHECKMIX-NEXT:     2000:       str     lr, [sp, #-4]!346// CHECKMIX-NEXT:     2004:       ldr     lr, [pc, #4]347// CHECKMIX-NEXT:     2008:       add     lr, pc, lr348// CHECKMIX-NEXT:     200c:       ldr     pc, [lr, #8]!349// CHECKMIX-NEXT:     2010:     10 00 00 08     .word   0x08000010350// CHECKMIX-NEXT:     2014:     d4 d4 d4 d4     .word   0xd4d4d4d4351// CHECKMIX-NEXT:     2018:     d4 d4 d4 d4     .word   0xd4d4d4d4352// CHECKMIX-NEXT:     201c:     d4 d4 d4 d4     .word   0xd4d4d4d4353// CHECKMIX-EMPTY:354// CHECKMIX-NEXT:     <func1@plt>:355// CHECKMIX-NEXT:     2020:       ldr     r12, [pc, #4]356// CHECKMIX-NEXT:     2024:       add     r12, r12, pc357// CHECKMIX-NEXT:     2028:       ldr     pc, [r12]358// CHECKMIX-NEXT:     202c:     00 00 00 08     .word   0x08000000359// CHECKMIX-EMPTY:360// CHECKMIX-NEXT:     <func2@plt>:361// CHECKMIX-NEXT:     2030:       add     r12, pc, #133169152362// CHECKMIX-NEXT:     2034:       add     r12, r12, #1044480363// CHECKMIX-NEXT:     2038:       ldr     pc, [r12, #4088]!364// CHECKMIX-NEXT:     203c:     d4 d4 d4 d4     .word   0xd4d4d4d4365// CHECKMIX-EMPTY:366// CHECKMIX-NEXT:     <func3@plt>:367// CHECKMIX-NEXT:     2040:       add     r12, pc, #133169152368// CHECKMIX-NEXT:     2044:       add     r12, r12, #1044480369// CHECKMIX-NEXT:     2048:       ldr     pc, [r12, #4076]!370// CHECKMIX-NEXT:     204c:     d4 d4 d4 d4     .word   0xd4d4d4d4371 372// CHECKMIX-EB: Disassembly of section .text:373// CHECKMIX-EB-EMPTY:374// CHECKMIX-EB-NEXT: <func1>:375// CHECKMIX-EB-NEXT:     1000:       bx      lr376// CHECKMIX-EB: <func2>:377// CHECKMIX-EB-NEXT:                 bx      lr378// CHECKMIX-EB: <func3>:379// CHECKMIX-EB-NEXT:                 bx      lr380// CHECKMIX-EB: <_start>:381// CHECKMIX-EB-NEXT:                 b       0x2020382// CHECKMIX-EB-NEXT:                 bl      0x2030383// CHECKMIX-EB-NEXT:                 beq     0x2040384// CHECKMIX-EB-EMPTY:385// CHECKMIX-EB-NEXT: Disassembly of section .plt:386// CHECKMIX-EB-EMPTY:387// CHECKMIX-EB-NEXT: <.plt>:388// CHECKMIX-EB-NEXT:     2000:       str     lr, [sp, #-4]!389// CHECKMIX-EB-NEXT:                 ldr     lr, [pc, #4]390// CHECKMIX-EB-NEXT:                 add     lr, pc, lr391// CHECKMIX-EB-NEXT:                 ldr     pc, [lr, #8]!392// CHECKMIX-EB-NEXT:                 08 00 00 10     .word   0x08000010393// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4394// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4395// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4396// CHECKMIX-EB-EMPTY:397// CHECKMIX-EB-NEXT:     <func1@plt>:398// CHECKMIX-EB-NEXT:     2020:       ldr     r12, [pc, #4]399// CHECKMIX-EB-NEXT:                 add     r12, r12, pc400// CHECKMIX-EB-NEXT:                 ldr     pc, [r12]401// CHECKMIX-EB-NEXT:                 08 00 00 00     .word   0x08000000402// CHECKMIX-EB-EMPTY:403// CHECKMIX-EB-NEXT:     <func2@plt>:404// CHECKMIX-EB-NEXT:     2030:       add     r12, pc, #133169152405// CHECKMIX-EB-NEXT:                 add     r12, r12, #1044480406// CHECKMIX-EB-NEXT:                 ldr     pc, [r12, #4088]!407// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4408// CHECKMIX-EB-EMPTY:409// CHECKMIX-EB-NEXT:     <func3@plt>:410// CHECKMIX-EB-NEXT:     2040:       add     r12, pc, #133169152411// CHECKMIX-EB-NEXT:                 add     r12, r12, #1044480412// CHECKMIX-EB-NEXT:                 ldr     pc, [r12, #4076]!413// CHECKMIX-EB-NEXT:                 d4 d4 d4 d4     .word   0xd4d4d4d4414 415// DSORELMIX:    Name: .got.plt416// DSORELMIX-NEXT:     Type: SHT_PROGBITS417// DSORELMIX-NEXT:     Flags [418// DSORELMIX-NEXT:       SHF_ALLOC419// DSORELMIX-NEXT:       SHF_WRITE420// DSORELMIX-NEXT:     ]421// DSORELMIX-NEXT:     Address: 0x8002020422// DSORELMIX:   Section {{.*}} .rel.plt {423// DSORELMIX-NEXT:     0x800202C R_ARM_JUMP_SLOT func1424// DSORELMIX-NEXT:     0x8002030 R_ARM_JUMP_SLOT func2425// DSORELMIX-NEXT:     0x8002034 R_ARM_JUMP_SLOT func3426 427