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 the .group section for the function in comdat section. 5c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 6c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ In C++, the instantiation of the template will come with linkonce (or 7c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ linkonce_odr) linkage, so that the linker can remove the duplicated 8c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ instantiation. When the exception handling is enabled on those function, 9c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ we have to group the corresponding .ARM.extab and .ARM.exidx with the 10c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ text section together. 11c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ 12c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ This test case will check the content of .group section. The section index 13c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ of the grouped sections should be recorded in .group section. 14c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 15c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .syntax unified 16c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .section .TEST1,"axG",%progbits,func1,comdat 17c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .weak func1 18c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .align 2 19c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .type func1,%function 20c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chienfunc1: 21c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .fnstart 22c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .save {r4, lr} 23c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien push {r4, lr} 24c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .vsave {d8, d9, d10, d11, d12} 25c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien vpush {d8, d9, d10, d11, d12} 26c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .pad #24 27c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien sub sp, sp, #24 28c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 29c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien add sp, sp, #24 30c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien vpop {d8, d9, d10, d11, d12} 31c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien pop {r4, pc} 32c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 33c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .globl __gxx_personality_v0 34c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .personality __gxx_personality_v0 35c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .handlerdata 36c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien .fnend 37c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 38c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 39c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 40c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 41c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ Check the .group section 42c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 43c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Sections [ 44c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Section { 45c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Index: 1 46c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Name: .group 47c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Type: SHT_GROUP (0x11) 48c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Flags [ (0x0) 49c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: ] 50c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: SectionData ( 51c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 52c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ The second, third, and fourth word should correspond to the section index 53c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ of .TEST1, .ARM.extab.TEST1, and .ARM.exidx.TEST1. 54c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 55c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: 0000: 01000000 05000000 06000000 08000000 |................| 56c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: ) 57c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: } 58c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 59c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 60c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 61c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ Check the .TEST1 section 62c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 63c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Section { 64c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Index: 5 65c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Name: .TEST1 66c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Type: SHT_PROGBITS (0x1) 67c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 68c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ The flags should contain SHF_GROUP. 69c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 70c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Flags [ (0x206) 71c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: SHF_ALLOC (0x2) 72c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: SHF_EXECINSTR (0x4) 73c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: SHF_GROUP (0x200) 74c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: ] 75c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: } 76c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 77c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 78c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 79c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ Check the .ARM.extab.TEST1 section 80c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 81c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Section { 82c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Index: 6 83c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Name: .ARM.extab.TEST1 84c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Type: SHT_PROGBITS (0x1) 85c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 86c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ The flags should contain SHF_GROUP. 87c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 88c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Flags [ (0x202) 89c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: SHF_ALLOC (0x2) 90c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: SHF_GROUP (0x200) 91c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: ] 92c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: } 93c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 94c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 95c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 96c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ Check the .ARM.exidx.TEST1 section 97c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 98c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Section { 99c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Index: 8 100c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Name: .ARM.exidx.TEST1 101c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Type: SHT_ARM_EXIDX (0x70000001) 102c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 103c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ The flags should contain SHF_GROUP. 104c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 105c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Flags [ (0x282) 106c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: SHF_ALLOC (0x2) 107c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: SHF_GROUP (0x200) 108c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: SHF_LINK_ORDER (0x80) 109c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: ] 110c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Link: 5 111c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: } 112c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: ] 113c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 114c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 115c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien 116c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 117c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ Check symbol func1. It should be weak binding, and belong to .TEST1 section. 118c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@------------------------------------------------------------------------------- 119c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Symbols [ 120c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Symbol { 121c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Name: func1 122c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Binding: Weak (0x2) 123c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Type: Function (0x2) 124c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: Section: .TEST1 (0x5) 125c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: } 126c24a374331fc97dd215937c8f0a9bf5271f39657Logan Chien@ CHECK: ] 127