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 23func1: 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 33func2: 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