1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \ 2 @ RUN: | llvm-readobj -s -sd -sr -t | FileCheck %s 3 4 @ Check whether the section is switched back properly. 5 6 @ The assembler should switch the section back to the corresponding section 7 @ after it have emitted the exception handling indices and tables. In this 8 @ test case, we are checking whether the section is correct when .section 9 @ directives is used. 10 11 @ In this example, func1 and func2 should be defined in .TEST1 section. 12 @ It is incorrect if the func2 is in .text, .ARM.extab.TEST1, or 13 @ .ARM.exidx.TEST1 sections. 14 15 .syntax unified 16 17 .section .TEST1 18 19 .globl func1 20 .align 2 21 .type func1,%function 22 .fnstart 23 func1: 24 bx lr 25 .personality __gxx_personality_v0 26 .handlerdata 27 .fnend 28 29 .globl func2 30 .align 2 31 .type func2,%function 32 .fnstart 33 func2: 34 bx lr 35 .personality __gxx_personality_v0 36 .handlerdata 37 .fnend 38 39 40 @------------------------------------------------------------------------------- 41 @ Check the .text section. This should be empty. 42 @------------------------------------------------------------------------------- 43 @ CHECK: Sections [ 44 @ CHECK: Section { 45 @ CHECK: Name: .text 46 @ CHECK: SectionData ( 47 @ CHECK: ) 48 @ CHECK: } 49 50 51 @------------------------------------------------------------------------------- 52 @ Check the .TEST1 section. There should be two "bx lr" instructions. 53 @------------------------------------------------------------------------------- 54 @ CHECK: Section { 55 @ CHECK: Name: .TEST1 56 @ CHECK: SectionData ( 57 @ CHECK: 0000: 1EFF2FE1 1EFF2FE1 |../.../.| 58 @ CHECK: ) 59 @ CHECK: } 60 61 62 63 @------------------------------------------------------------------------------- 64 @ Check the .ARM.extab.TEST1 section. 65 @------------------------------------------------------------------------------- 66 @ CHECK: Section { 67 @ CHECK: Name: .ARM.extab.TEST1 68 @ CHECK: SectionData ( 69 @ CHECK: 0000: 00000000 B0B0B000 00000000 B0B0B000 |................| 70 @ CHECK: ) 71 @ CHECK: } 72 @ CHECK: Relocations [ 73 @ CHECK: 0x0 R_ARM_PREL31 __gxx_personality_v0 0x0 74 @ CHECK: 0x8 R_ARM_PREL31 __gxx_personality_v0 0x0 75 @ CHECK: ] 76 77 78 @------------------------------------------------------------------------------- 79 @ Check the .ARM.exidx.TEST1 section. 80 @------------------------------------------------------------------------------- 81 @ CHECK: Section { 82 @ CHECK: Name: .ARM.exidx.TEST1 83 @ CHECK: Link: 4 84 @------------------------------------------------------------------------------- 85 @ The first word should be the offset to .TEST1. 86 @ The second word should be the offset to .ARM.extab.TEST1 87 @------------------------------------------------------------------------------- 88 @ CHECK: SectionData ( 89 @ CHECK: 0000: 00000000 00000000 04000000 08000000 |................| 90 @ CHECK: ) 91 @ CHECK: } 92 @ CHECK: ] 93 @------------------------------------------------------------------------------- 94 @ The first word of each entry should be relocated to .TEST1 section. 95 @ The second word of each entry should be relocated to 96 @ .ARM.extab.TESET1 section. 97 @------------------------------------------------------------------------------- 98 @ CHECK: Relocations [ 99 @ CHECK: 0x0 R_ARM_PREL31 .TEST1 0x0 100 @ CHECK: 0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0 101 @ CHECK: 0x8 R_ARM_PREL31 .TEST1 0x0 102 @ CHECK: 0xC R_ARM_PREL31 .ARM.extab.TEST1 0x0 103 @ CHECK: ] 104 105 106 @------------------------------------------------------------------------------- 107 @ Check the symbols "func1" and "func2". They should belong to .TEST1 section. 108 @------------------------------------------------------------------------------- 109 @ CHECK: Symbols [ 110 @ CHECK: Symbol { 111 @ CHECK: Name: func1 112 @ CHECK: Value: 0x0 113 @ CHECK: Size: 0 114 @ CHECK: Binding: Global (0x1) 115 @ CHECK: Type: Function (0x2) 116 @ CHECK: Other: 0 117 @ CHECK: Section: .TEST1 (0x4) 118 @ CHECK: } 119 @ CHECK: Symbol { 120 @ CHECK: Name: func2 121 @ CHECK: Value: 0x4 122 @ CHECK: Size: 0 123 @ CHECK: Binding: Global (0x1) 124 @ CHECK: Type: Function (0x2) 125 @ CHECK: Other: 0 126 @ CHECK: Section: .TEST1 (0x4) 127 @ CHECK: } 128 @ CHECK: ] 129