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 .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 .personality __gxx_personality_v0 21 .handlerdata 22 .fnend 23 24 25 @ CHECK: Section { 26 @ CHECK: Name: .TEST1 27 @ CHECK: SectionData ( 28 @ CHECK: 0000: 1EFF2FE1 |../.| 29 @ CHECK: ) 30 @ CHECK: } 31 @ CHECK: Section { 32 @ CHECK: Name: .ARM.extab.TEST1 33 @ CHECK: SectionData ( 34 @ CHECK: 0000: 00000000 B0B0B000 |........| 35 @ CHECK: ) 36 @ CHECK: } 37 38 @ RELOC: Section { 39 @ RELOC: Name: .rel.ARM.extab.TEST1 40 @ RELOC: Relocations [ 41 @ RELOC: 0x0 R_ARM_PREL31 __gxx_personality_v0 0x0 42 @ RELOC: ] 43 @ RELOC: } 44 45 @ CHECK: Section { 46 @ CHECK: Name: .ARM.exidx.TEST1 47 @ CHECK: SectionData ( 48 @ CHECK: 0000: 00000000 00000000 |........| 49 @ CHECK: ) 50 @ CHECK: } 51 52 @ RELOC: Section { 53 @ RELOC: Name: .rel.ARM.exidx.TEST1 54 @ RELOC: Relocations [ 55 @ RELOC: 0x0 R_ARM_PREL31 .TEST1 0x0 56 @ RELOC: 0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0 57 @ RELOC: ] 58 @ RELOC: } 59 60 61 @------------------------------------------------------------------------------- 62 @ TEST2 63 @------------------------------------------------------------------------------- 64 .section .TEST2 65 .globl func2 66 .align 2 67 .type func2,%function 68 .fnstart 69 func2: 70 bx lr 71 .personality __gxx_personality_v0 72 @ The .handlerdata directive is intentionally ignored. The .fnend @ directive should create the EXTAB entry and flush the unwind opcodes. 73 .fnend 74 75 76 @ CHECK: Section { 77 @ CHECK: Name: .TEST2 78 @ CHECK: SectionData ( 79 @ CHECK: 0000: 1EFF2FE1 |../.| 80 @ CHECK: ) 81 @ CHECK: } 82 @ CHECK: Section { 83 @ CHECK: Name: .ARM.extab.TEST2 84 @ CHECK: SectionData ( 85 @ CHECK: 0000: 00000000 B0B0B000 |........| 86 @ CHECK: ) 87 @ CHECK: } 88 89 @ RELOC: Section { 90 @ RELOC: Name: .rel.ARM.extab.TEST2 91 @ RELOC: Relocations [ 92 @ RELOC: 0x0 R_ARM_PREL31 __gxx_personality_v0 0x0 93 @ RELOC: ] 94 @ RELOC: } 95 96 @ CHECK: Section { 97 @ CHECK: Name: .ARM.exidx.TEST2 98 @ CHECK: SectionData ( 99 @ CHECK: 0000: 00000000 00000000 |........| 100 @ CHECK: ) 101 @ CHECK: } 102 103 @ RELOC: Section { 104 @ RELOC: Name: .rel.ARM.exidx.TEST2 105 @ RELOC: Relocations [ 106 @ RELOC: 0x0 R_ARM_PREL31 .TEST2 0x0 107 @ RELOC: 0x4 R_ARM_PREL31 .ARM.extab.TEST2 0x0 108 @ RELOC: ] 109 @ RELOC: } 110