1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \ 2 @ RUN: | llvm-readobj -s -sd -sr > %t 3 @ RUN: FileCheck %s < %t 4 @ RUN: FileCheck --check-prefix=RELOC %s < %t 5 6 @ Check the .handlerdata directive (without .personality directive) 7 8 .syntax unified 9 10 @------------------------------------------------------------------------------- 11 @ TEST1 12 @------------------------------------------------------------------------------- 13 .section .TEST1 14 .globl func1 15 .align 2 16 .type func1,%function 17 .fnstart 18 func1: 19 bx lr 20 .handlerdata 21 .fnend 22 23 24 @ CHECK:Section { 25 @ CHECK: Name: .TEST1 26 @ CHECK: SectionData ( 27 @ CHECK: 0000: 1EFF2FE1 |../.| 28 @ CHECK: ) 29 @ CHECK:} 30 31 @ CHECK:Section { 32 @ CHECK: Name: .ARM.extab.TEST1 33 @ CHECK: SectionData ( 34 @ CHECK: 0000: B0B0B080 |....| 35 @ CHECK: ) 36 @ CHECK:} 37 38 @ CHECK:Section { 39 @ CHECK: Name: .ARM.exidx.TEST1 40 @ CHECK: SectionData ( 41 @ CHECK: 0000: 00000000 00000000 |........| 42 @ CHECK: ) 43 @ CHECK:} 44 @------------------------------------------------------------------------------- 45 @ We should see a relocation entry to __aeabi_unwind_cpp_pr0, so that the 46 @ linker can keep __aeabi_unwind_cpp_pr0. 47 @------------------------------------------------------------------------------- 48 @ RELOC: Section { 49 @ RELOC: Name: .rel.ARM.exidx.TEST1 50 @ RELOC: Relocations [ 51 @ RELOC: 0x0 R_ARM_NONE __aeabi_unwind_cpp_pr0 0x0 52 @ RELOC: 0x0 R_ARM_PREL31 .TEST1 0x0 53 @ RELOC: 0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0 54 @ RELOC: ] 55 @ RELOC: } 56 57 58 59 @------------------------------------------------------------------------------- 60 @ TEST2 61 @------------------------------------------------------------------------------- 62 .section .TEST2 63 .globl func2 64 .align 2 65 .type func2,%function 66 .fnstart 67 func2: 68 @------------------------------------------------------------------------------- 69 @ Use a lot of unwind opcdes to get __aeabi_unwind_cpp_pr1. 70 @------------------------------------------------------------------------------- 71 .save {r4, r5, r6, r7, r8, r9, r10, r11, r12} 72 push {r4, r5, r6, r7, r8, r9, r10, r11, r12} 73 pop {r4, r5, r6, r7, r8, r9, r10, r11, r12} 74 .pad #0x240 75 sub sp, sp, #0x240 76 add sp, sp, #0x240 77 bx lr 78 .handlerdata 79 .fnend 80 81 82 83 @ CHECK:Section { 84 @ CHECK: Name: .TEST2 85 @ CHECK: SectionData ( 86 @ CHECK: 0000: F01F2DE9 F01FBDE8 09DD4DE2 09DD8DE2 |..-.......M.....| 87 @ CHECK: 0010: 1EFF2FE1 |../.| 88 @ CHECK: ) 89 @ CHECK:} 90 91 @ CHECK:Section { 92 @ CHECK: Name: .ARM.extab.TEST2 93 @ CHECK: SectionData ( 94 @ CHECK: 0000: 0FB20181 B0B0FF81 |........| 95 @ CHECK: ) 96 @ CHECK:} 97 98 @ CHECK:Section { 99 @ CHECK: Name: .ARM.exidx.TEST2 100 @ CHECK: SectionData ( 101 @ CHECK: 0000: 00000000 00000000 |........| 102 @ CHECK: ) 103 @ CHECK:} 104 @------------------------------------------------------------------------------- 105 @ We should see a relocation entry to __aeabi_unwind_cpp_pr0, so that the 106 @ linker can keep __aeabi_unwind_cpp_pr0. 107 @------------------------------------------------------------------------------- 108 @ RELOC: Section { 109 @ RELOC: Name: .rel.ARM.exidx.TEST2 110 @ RELOC: Relocations [ 111 @ RELOC: 0x0 R_ARM_NONE __aeabi_unwind_cpp_pr1 0x0 112 @ RELOC: 0x0 R_ARM_PREL31 .TEST2 0x0 113 @ RELOC: 0x4 R_ARM_PREL31 .ARM.extab.TEST2 0x0 114 @ RELOC: ] 115 @ RELOC: } 116