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 16 func1: 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 62 func2: 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