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