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