brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · 945cef6 Raw
117 lines · plain
1// REQUIRES: arm2// RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=thumbv7a-none-linux-gnueabi %s -o %t3// RUN: ld.lld %t --shared --icf=all -o %t.so4// The output file is large, most of it zeroes. We dissassemble only the5// parts we need to speed up the test and avoid a large output file6// RUN: llvm-objdump --no-print-imm-hex -d %t.so --start-address=0x2000000 --stop-address=0x2000018 | FileCheck --check-prefix=CHECK1 %s7// RUN: llvm-objdump --no-print-imm-hex -d %t.so --start-address=0x2800004 --stop-address=0x2800034 | FileCheck --check-prefix=CHECK2 %s8// RUN: llvm-objdump --no-print-imm-hex -d %t.so --start-address=0x4000000 --stop-address=0x4000010 | FileCheck --check-prefix=CHECK3 %s9// RUN: llvm-objdump --no-print-imm-hex -d %t.so --start-address=0x4000010 --stop-address=0x4000100 --triple=armv7a-linux-gnueabihf | FileCheck --check-prefix=CHECK4 %s10// RUN: rm %t.so11 .syntax unified12 .thumb13 14// Make sure that we generate a range extension thunk to a PLT entry15 .section ".text.1", "ax", %progbits16 .global sym117 .global elsewhere18 .type elsewhere, %function19 .global preemptible20 .type preemptible, %function21 .global far_preemptible22 .type far_preemptible, %function23 .global far_nonpreemptible24 .hidden far_nonpreemptible25 .type far_nonpreemptible, %function26 .global far_nonpreemptible_alias27 .hidden far_nonpreemptible_alias28 .type far_nonpreemptible_alias, %function29sym1:30 bl elsewhere31 bl preemptible32 bx lr33preemptible:34 bl far_preemptible35 bl far_nonpreemptible36 bl far_nonpreemptible_alias37 bx lr38// CHECK1: Disassembly of section .text:39// CHECK1-EMPTY:40// CHECK1-NEXT: <sym1>:41// CHECK1-NEXT:  2000000:       f000 d800       bl      0x2800004 <__ThumbV7PILongThunk_elsewhere>42// CHECK1-NEXT:  2000004:       f000 d804       bl      0x2800010 <__ThumbV7PILongThunk_preemptible>43// CHECK1-NEXT:  2000008:       4770    bx      lr44// CHECK1: <preemptible>:45// CHECK1-NEXT:  200000a:       f000 d807       bl      0x280001c <__ThumbV7PILongThunk_far_preemptible>46// CHECK1-NEXT:  200000e:       f000 d80b       bl      0x2800028 <__ThumbV7PILongThunk_far_nonpreemptible>47// CHECK1-NEXT:  2000012:       f000 d809       bl      0x2800028 <__ThumbV7PILongThunk_far_nonpreemptible>48// CHECK1-NEXT:  2000016:       4770    bx      lr49 50 .section .text.2, "ax", %progbits51 .balign 0x080000052 bx lr53// CHECK2: <__ThumbV7PILongThunk_elsewhere>:54// CHECK2-NEXT:  2800004:       f240 0c20       movw    r12, #3255// CHECK2-NEXT:  2800008:       f2c0 1c80       movt    r12, #38456// CHECK2-NEXT:  280000c:       44fc    add     r12, pc57// CHECK2-NEXT:  280000e:       4760    bx      r1258// CHECK2: <__ThumbV7PILongThunk_preemptible>:59// CHECK2-NEXT:  2800010:       f240 0c24       movw    r12, #3660// CHECK2-NEXT:  2800014:       f2c0 1c80       movt    r12, #38461// CHECK2-NEXT:  2800018:       44fc    add     r12, pc62// CHECK2-NEXT:  280001a:       4760    bx      r1263// CHECK2: <__ThumbV7PILongThunk_far_preemptible>:64// CHECK2-NEXT:  280001c:       f240 0c28       movw    r12, #4065// CHECK2-NEXT:  2800020:       f2c0 1c80       movt    r12, #38466// CHECK2-NEXT:  2800024:       44fc    add     r12, pc67// CHECK2-NEXT:  2800026:       4760    bx      r1268// CHECK2: <__ThumbV7PILongThunk_far_nonpreemptible>:69// CHECK2-NEXT:  2800028:       f64f 7ccd       movw    r12, #6548570// CHECK2-NEXT:  280002c:       f2c0 1c7f       movt    r12, #38371// CHECK2-NEXT:  2800030:       44fc    add     r12, pc72// CHECK2-NEXT:  2800032:       4760    bx      r1273 74 .section .text.3, "ax", %progbits75.balign 0x200000076far_preemptible:77far_nonpreemptible:78 bl elsewhere79 80 .section .text.4, "ax", %progbits81.balign 0x200000082far_nonpreemptible_alias:83 bl elsewhere84 85// CHECK3: <far_preemptible>:86// CHECK3:  4000000:       f000 e816       blx     0x400003087 88// CHECK4: Disassembly of section .plt:89// CHECK4-EMPTY:90// CHECK4-NEXT: <.plt>:91// CHECK4-NEXT:  4000010:	e52de004    	str	lr, [sp, #-4]!92// CHECK4-NEXT:  4000014:	e28fe600    	add	lr, pc, #0, #1293// CHECK4-NEXT:  4000018:	e28eea20    	add	lr, lr, #3294// CHECK4-NEXT:  400001c:	e5bef0a4    	ldr	pc, [lr, #164]!95// CHECK4-NEXT:  4000020:	d4 d4 d4 d4 	.word	0xd4d4d4d496// CHECK4-NEXT:  4000024:	d4 d4 d4 d4 	.word	0xd4d4d4d497// CHECK4-NEXT:  4000028:	d4 d4 d4 d4 	.word	0xd4d4d4d498// CHECK4-NEXT:  400002c:	d4 d4 d4 d4 	.word	0xd4d4d4d499// CHECK4-EMPTY:100// CHECK4-NEXT: <elsewhere@plt>:101// CHECK4-NEXT:  4000030:	e28fc600    	add	r12, pc, #0, #12102// CHECK4-NEXT:  4000034:	e28cca20    	add	r12, r12, #32103// CHECK4-NEXT:  4000038:	e5bcf08c    	ldr	pc, [r12, #140]!104// CHECK4-NEXT:  400003c:	d4 d4 d4 d4 	.word	0xd4d4d4d4105// CHECK4-EMPTY:106// CHECK4-NEXT: <preemptible@plt>:107// CHECK4-NEXT:  4000040:	e28fc600    	add	r12, pc, #0, #12108// CHECK4-NEXT:  4000044:	e28cca20    	add	r12, r12, #32109// CHECK4-NEXT:  4000048:	e5bcf080    	ldr	pc, [r12, #128]!110// CHECK4-NEXT:  400004c:	d4 d4 d4 d4 	.word	0xd4d4d4d4111// CHECK4-EMPTY:112// CHECK4-NEXT: <far_preemptible@plt>:113// CHECK4-NEXT:  4000050:	e28fc600    	add	r12, pc, #0, #12114// CHECK4-NEXT:  4000054:	e28cca20    	add	r12, r12, #32115// CHECK4-NEXT:  4000058:	e5bcf074    	ldr	pc, [r12, #116]!116// CHECK4-NEXT:  400005c:	d4 d4 d4 d4 	.word	0xd4d4d4d4117