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