blob: 5e6fc64bac41795c26f00c30dfd7b80170ec70e4 [file] [log] [blame]
Rafael Espindolabda19802015-04-30 14:21:49 +00001// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -t -sd | FileCheck %s
Rafael Espindolaa3e9a222010-11-11 18:13:52 +00002
Rafael Espindolabda19802015-04-30 14:21:49 +00003// Test that we produce the group sections and that they are before the members
Rafael Espindolaa3e9a222010-11-11 18:13:52 +00004
Nico Rieckba848e32013-04-12 04:06:46 +00005// CHECK: Section {
Rafael Espindola2b27b2f2015-11-03 20:02:22 +00006// CHECK: Index: 3
Nico Rieckba848e32013-04-12 04:06:46 +00007// CHECK-NEXT: Name: .group
8// CHECK-NEXT: Type: SHT_GROUP
9// CHECK-NEXT: Flags [
10// CHECK-NEXT: ]
11// CHECK-NEXT: Address: 0x0
Rafael Espindolafc337022015-04-30 13:57:06 +000012// CHECK-NEXT: Offset:
Nico Rieckba848e32013-04-12 04:06:46 +000013// CHECK-NEXT: Size: 12
Rafael Espindola88d1f632015-04-29 20:25:24 +000014// CHECK-NEXT: Link:
Nico Rieckba848e32013-04-12 04:06:46 +000015// CHECK-NEXT: Info: 1
16// CHECK-NEXT: AddressAlignment: 4
17// CHECK-NEXT: EntrySize: 4
Rafael Espindolabda19802015-04-30 14:21:49 +000018// CHECK-NEXT: SectionData (
Rafael Espindola2b27b2f2015-11-03 20:02:22 +000019// CHECK-NEXT: 0000: 01000000 04000000 05000000
Rafael Espindolabda19802015-04-30 14:21:49 +000020// CHECK-NEXT: )
Nico Rieckba848e32013-04-12 04:06:46 +000021// CHECK-NEXT: }
Rafael Espindolabda19802015-04-30 14:21:49 +000022// CHECK: Section {
Rafael Espindola2b27b2f2015-11-03 20:02:22 +000023// CHECK: Index: 6
Nico Rieckba848e32013-04-12 04:06:46 +000024// CHECK-NEXT: Name: .group
25// CHECK-NEXT: Type: SHT_GROUP
26// CHECK-NEXT: Flags [
27// CHECK-NEXT: ]
28// CHECK-NEXT: Address: 0x0
Rafael Espindolafc337022015-04-30 13:57:06 +000029// CHECK-NEXT: Offset:
Rafael Espindola88d1f632015-04-29 20:25:24 +000030// CHECK-NEXT: Size: 8
31// CHECK-NEXT: Link:
32// CHECK-NEXT: Info: 2
33// CHECK-NEXT: AddressAlignment: 4
34// CHECK-NEXT: EntrySize: 4
Rafael Espindolabda19802015-04-30 14:21:49 +000035// CHECK-NEXT: SectionData (
Rafael Espindola2b27b2f2015-11-03 20:02:22 +000036// CHECK-NEXT: 0000: 01000000 07000000
Rafael Espindolabda19802015-04-30 14:21:49 +000037// CHECK-NEXT: )
Rafael Espindola88d1f632015-04-29 20:25:24 +000038// CHECK-NEXT: }
Rafael Espindolabda19802015-04-30 14:21:49 +000039// CHECK: Section {
Rafael Espindola2b27b2f2015-11-03 20:02:22 +000040// CHECK: Index: 8
Rafael Espindola88d1f632015-04-29 20:25:24 +000041// CHECK-NEXT: Name: .group
42// CHECK-NEXT: Type: SHT_GROUP
43// CHECK-NEXT: Flags [
44// CHECK-NEXT: ]
45// CHECK-NEXT: Address: 0x0
Rafael Espindolafc337022015-04-30 13:57:06 +000046// CHECK-NEXT: Offset:
Tim Northovera630fb02013-07-10 20:58:17 +000047// CHECK-NEXT: Size: 12
Rafael Espindola88d1f632015-04-29 20:25:24 +000048// CHECK-NEXT: Link:
Rafael Espindolaa401eee2015-06-04 15:33:30 +000049// CHECK-NEXT: Info: 3
Nico Rieckba848e32013-04-12 04:06:46 +000050// CHECK-NEXT: AddressAlignment: 4
51// CHECK-NEXT: EntrySize: 4
Rafael Espindolabda19802015-04-30 14:21:49 +000052// CHECK-NEXT: SectionData (
Rafael Espindola2b27b2f2015-11-03 20:02:22 +000053// CHECK-NEXT: 0000: 01000000 09000000 0A000000
Rafael Espindolabda19802015-04-30 14:21:49 +000054// CHECK-NEXT: )
Nico Rieckba848e32013-04-12 04:06:46 +000055// CHECK-NEXT: }
Rafael Espindola7d0ba342010-11-14 04:17:37 +000056
57// Test that g1 and g2 are local, but g3 is an undefined global.
58
Nico Rieckba848e32013-04-12 04:06:46 +000059// CHECK: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +000060// CHECK: Name: g1
Nico Rieckba848e32013-04-12 04:06:46 +000061// CHECK-NEXT: Value: 0x0
62// CHECK-NEXT: Size: 0
63// CHECK-NEXT: Binding: Local
64// CHECK-NEXT: Type: None
65// CHECK-NEXT: Other: 0
Rafael Espindola88d1f632015-04-29 20:25:24 +000066// CHECK-NEXT: Section: .foo
Nico Rieckba848e32013-04-12 04:06:46 +000067// CHECK-NEXT: }
68// CHECK-NEXT: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +000069// CHECK-NEXT: Name: g2
Nico Rieckba848e32013-04-12 04:06:46 +000070// CHECK-NEXT: Value: 0x0
71// CHECK-NEXT: Size: 0
72// CHECK-NEXT: Binding: Local
73// CHECK-NEXT: Type: None
74// CHECK-NEXT: Other: 0
Rafael Espindola2b27b2f2015-11-03 20:02:22 +000075// CHECK-NEXT: Section: .group
Nico Rieckba848e32013-04-12 04:06:46 +000076// CHECK-NEXT: }
Rafael Espindola7d0ba342010-11-14 04:17:37 +000077
Nico Rieckba848e32013-04-12 04:06:46 +000078// CHECK: Symbol {
Hans Wennborg83e6e1e2014-04-30 16:25:02 +000079// CHECK: Name: g3
Nico Rieckba848e32013-04-12 04:06:46 +000080// CHECK-NEXT: Value: 0x0
81// CHECK-NEXT: Size: 0
82// CHECK-NEXT: Binding: Global
83// CHECK-NEXT: Type: None
84// CHECK-NEXT: Other: 0
Rafael Espindolacfee7ef2014-03-24 05:00:34 +000085// CHECK-NEXT: Section: Undefined (0x0)
Nico Rieckba848e32013-04-12 04:06:46 +000086// CHECK-NEXT: }
Rafael Espindola7d0ba342010-11-14 04:17:37 +000087
Rafael Espindolaa3e9a222010-11-11 18:13:52 +000088
89 .section .foo,"axG",@progbits,g1,comdat
90g1:
91 nop
92
David Majnemera4b521b2013-09-15 19:24:16 +000093 .section .bar,"ax?",@progbits
Rafael Espindolaa3e9a222010-11-11 18:13:52 +000094 nop
95
96 .section .zed,"axG",@progbits,g2,comdat
Rafael Espindolaa3e9a222010-11-11 18:13:52 +000097 nop
Rafael Espindola7d0ba342010-11-14 04:17:37 +000098
99 .section .baz,"axG",@progbits,g3,comdat
100 .long g3