aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/MC/ELF/group.s
blob: 8f6097e8a66f8ce408fd01c4474553db6d761ee1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# RUN: llvm-mc -filetype=obj -triple x86_64 %s -o %t
# RUN: llvm-readelf -SsX %t | FileCheck %s
# RUN: llvm-readelf -g %t | FileCheck %s --check-prefix=GROUP

## Test that we produce the group sections and that they are before the members

# CHECK:       [ 3] .group            GROUP           0000000000000000 {{.*}} 00000c 04     14   1  4
# CHECK-NEXT:  [ 4] .foo              PROGBITS        0000000000000000 {{.*}} 000001 00 AXG  0   0  1
# CHECK-NEXT:  [ 5] .bar              PROGBITS        0000000000000000 {{.*}} 000001 00 AXG  0   0  1
# CHECK-NEXT:  [ 6] .group            GROUP           0000000000000000 {{.*}} 000008 04     14   2  4
# CHECK-NEXT:  [ 7] .zed              PROGBITS        0000000000000000 {{.*}} 000001 00 AXG  0   0  1
# CHECK-NEXT:  [ 8] .group            GROUP           0000000000000000 {{.*}} 00000c 04     14   4  4
# CHECK-NEXT:  [ 9] .baz              PROGBITS        0000000000000000 {{.*}} 000004 00 AXG  0   0  1
# CHECK-NEXT:  [10] .rela.baz         RELA            0000000000000000 {{.*}} 000018 18   G 14   9  8
# CHECK-NEXT:  [11] sec               PROGBITS        0000000000000000 {{.*}} 000000 00      0   0  1
# CHECK-NEXT:  [12] .group            GROUP           0000000000000000 {{.*}} 000008 04     14   3  4
# CHECK-NEXT:  [13] .qux              PROGBITS        0000000000000000 {{.*}} 000000 00 AXG  0   0  1
# CHECK-NEXT:  [14] .symtab           SYMTAB

## Test that g1 and g2 are local, but g3 is an undefined global.

# CHECK:      0000000000000000     0 NOTYPE  LOCAL  DEFAULT    4 (.foo)    g1
# CHECK-NEXT: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT    6 (.group)  g2
# CHECK-NEXT: 0000000000000000     0 SECTION LOCAL  DEFAULT   11 (sec)     sec
# CHECK-NEXT: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND           g3

# GROUP:       COMDAT group section [    3] `.group' [g1] contains 2 sections:
# GROUP-NEXT:     [Index]    Name
# GROUP-NEXT:     [    4]   .foo
# GROUP-NEXT:     [    5]   .bar
# GROUP-EMPTY:
# GROUP-NEXT:  COMDAT group section [    6] `.group' [g2] contains 1 sections:
# GROUP-NEXT:     [Index]    Name
# GROUP-NEXT:     [    7]   .zed
# GROUP-EMPTY:
# GROUP-NEXT:  COMDAT group section [    8] `.group' [g3] contains 2 sections:
# GROUP-NEXT:     [Index]    Name
# GROUP-NEXT:     [    9]   .baz
# GROUP-NEXT:     [   10]   .rela.baz
# GROUP-EMPTY:
# GROUP-NEXT:  group section [   12] `.group' [] contains 1 sections:
# GROUP-NEXT:     [Index]    Name
# GROUP-NEXT:     [   13]   .qux

	.section	.foo,"axG",@progbits,g1,comdat
g1:
        nop

        .section	.bar,"ax?",@progbits
        nop

        .section	.zed,"axG",@progbits,g2,comdat
        nop

        .section	.baz,"axG",@progbits,g3,comdat
        .long g3

.section sec
.section .qux,"axG",@progbits,sec