blob: 68b0f328f9bca437eda4c9bb6a6a7f725ba1e2e3 [file] [log] [blame]
Nico Rieckba848e32013-04-12 04:06:46 +00001// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t | FileCheck %s
Rafael Espindolaa3e9a222010-11-11 18:13:52 +00002
Rafael Espindola7d0ba342010-11-14 04:17:37 +00003// Test that we produce the group sections and that they are a the beginning
Rafael Espindolaa3e9a222010-11-11 18:13:52 +00004// of the file.
5
Nico Rieckba848e32013-04-12 04:06:46 +00006// CHECK: Section {
7// CHECK: Index: 1
8// CHECK-NEXT: Name: .group
9// CHECK-NEXT: Type: SHT_GROUP
10// CHECK-NEXT: Flags [
11// CHECK-NEXT: ]
12// CHECK-NEXT: Address: 0x0
13// CHECK-NEXT: Offset: 0x40
14// CHECK-NEXT: Size: 12
15// CHECK-NEXT: Link: 13
16// CHECK-NEXT: Info: 1
17// CHECK-NEXT: AddressAlignment: 4
18// CHECK-NEXT: EntrySize: 4
19// CHECK-NEXT: }
20// CHECK-NEXT: Section {
21// CHECK-NEXT: Index: 2
22// CHECK-NEXT: Name: .group
23// CHECK-NEXT: Type: SHT_GROUP
24// CHECK-NEXT: Flags [
25// CHECK-NEXT: ]
26// CHECK-NEXT: Address: 0x0
27// CHECK-NEXT: Offset: 0x4C
28// CHECK-NEXT: Size: 8
29// CHECK-NEXT: Link: 13
30// CHECK-NEXT: Info: 2
31// CHECK-NEXT: AddressAlignment: 4
32// CHECK-NEXT: EntrySize: 4
33// CHECK-NEXT: }
34// CHECK-NEXT: Section {
35// CHECK-NEXT: Index: 3
36// CHECK-NEXT: Name: .group
37// CHECK-NEXT: Type: SHT_GROUP
38// CHECK-NEXT: Flags [
39// CHECK-NEXT: ]
40// CHECK-NEXT: Address: 0x0
41// CHECK-NEXT: Offset: 0x54
Tim Northovera630fb02013-07-10 20:58:17 +000042// CHECK-NEXT: Size: 12
Nico Rieckba848e32013-04-12 04:06:46 +000043// CHECK-NEXT: Link: 13
44// CHECK-NEXT: Info: 13
45// CHECK-NEXT: AddressAlignment: 4
46// CHECK-NEXT: EntrySize: 4
47// CHECK-NEXT: }
Rafael Espindola7d0ba342010-11-14 04:17:37 +000048
49// Test that g1 and g2 are local, but g3 is an undefined global.
50
Nico Rieckba848e32013-04-12 04:06:46 +000051// CHECK: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +000052// CHECK: Name: g1
Nico Rieckba848e32013-04-12 04:06:46 +000053// CHECK-NEXT: Value: 0x0
54// CHECK-NEXT: Size: 0
55// CHECK-NEXT: Binding: Local
56// CHECK-NEXT: Type: None
57// CHECK-NEXT: Other: 0
58// CHECK-NEXT: Section: .foo (0x7)
59// CHECK-NEXT: }
60// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +000061// CHECK-NEXT: Name: g2
Nico Rieckba848e32013-04-12 04:06:46 +000062// CHECK-NEXT: Value: 0x0
63// CHECK-NEXT: Size: 0
64// CHECK-NEXT: Binding: Local
65// CHECK-NEXT: Type: None
66// CHECK-NEXT: Other: 0
67// CHECK-NEXT: Section: .group (0x2)
68// CHECK-NEXT: }
Rafael Espindola7d0ba342010-11-14 04:17:37 +000069
Nico Rieckba848e32013-04-12 04:06:46 +000070// CHECK: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +000071// CHECK: Name: g3
Nico Rieckba848e32013-04-12 04:06:46 +000072// CHECK-NEXT: Value: 0x0
73// CHECK-NEXT: Size: 0
74// CHECK-NEXT: Binding: Global
75// CHECK-NEXT: Type: None
76// CHECK-NEXT: Other: 0
Rafael Espindolacfee7ef2014-03-24 05:00:34 +000077// CHECK-NEXT: Section: Undefined (0x0)
Nico Rieckba848e32013-04-12 04:06:46 +000078// CHECK-NEXT: }
Rafael Espindola7d0ba342010-11-14 04:17:37 +000079
Rafael Espindolaa3e9a222010-11-11 18:13:52 +000080
81 .section .foo,"axG",@progbits,g1,comdat
82g1:
83 nop
84
David Majnemera4b521b2013-09-15 19:24:16 +000085 .section .bar,"ax?",@progbits
Rafael Espindolaa3e9a222010-11-11 18:13:52 +000086 nop
87
88 .section .zed,"axG",@progbits,g2,comdat
Rafael Espindolaa3e9a222010-11-11 18:13:52 +000089 nop
Rafael Espindola7d0ba342010-11-14 04:17:37 +000090
91 .section .baz,"axG",@progbits,g3,comdat
92 .long g3