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