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 18func1: 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 67func2: 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