1// REQUIRES: x86
2// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
3// RUN: ld.lld -O 2 %t.o -o %t.so -shared
4// RUN: llvm-readobj -S --section-data --symbols %t.so | FileCheck %s
5// RUN: ld.lld -O 1 %t.o -o %t.so -shared
6// RUN: llvm-readobj -S --section-data --symbols %t.so | FileCheck --check-prefix=NOTAIL %s
7// RUN: ld.lld -O 0 %t.o -o %t.so -shared
8// RUN: llvm-readobj -S --section-data --symbols %t.so | FileCheck --check-prefix=NOMERGE %s
9
10        .section        .rodata1,"aMS",@progbits,1
11        .asciz  "abc"
12foo:
13        .ascii  "a"
14bar:
15        .asciz  "bc"
16        .asciz  "bc"
17
18        .section        .rodata2,"aMS",@progbits,2
19        .p2align  1
20zed:
21        .short  20
22        .short  0
23
24// CHECK:      Name:    .rodata1
25// CHECK-NEXT: Type:    SHT_PROGBITS
26// CHECK-NEXT: Flags [
27// CHECK-NEXT:   SHF_ALLOC
28// CHECK-NEXT:   SHF_MERGE
29// CHECK-NEXT:   SHF_STRINGS
30// CHECK-NEXT: ]
31// CHECK-NEXT: Address: 0x20D
32// CHECK-NEXT: Offset: 0x20D
33// CHECK-NEXT: Size:    4
34// CHECK-NEXT: Link: 0
35// CHECK-NEXT: Info: 0
36// CHECK-NEXT: AddressAlignment: 1
37// CHECK-NEXT: EntrySize: 1
38// CHECK-NEXT: SectionData (
39// CHECK-NEXT:   0000: 61626300                             |abc.|
40// CHECK-NEXT: )
41
42// NOTAIL:      Name:    .rodata1
43// NOTAIL-NEXT: Type:    SHT_PROGBITS
44// NOTAIL-NEXT: Flags [
45// NOTAIL-NEXT:   SHF_ALLOC
46// NOTAIL-NEXT:   SHF_MERGE
47// NOTAIL-NEXT:   SHF_STRINGS
48// NOTAIL-NEXT: ]
49// NOTAIL-NEXT: Address: 0x20D
50// NOTAIL-NEXT: Offset: 0x20D
51// NOTAIL-NEXT: Size:    7
52// NOTAIL-NEXT: Link: 0
53// NOTAIL-NEXT: Info: 0
54// NOTAIL-NEXT: AddressAlignment: 1
55// NOTAIL-NEXT: EntrySize: 1
56// NOTAIL-NEXT: SectionData (
57// NOTAIL-NEXT:   0000: 62630061 626300                     |bc.abc.|
58// NOTAIL-NEXT: )
59
60// NOMERGE:      Name:    .rodata1
61// NOMERGE-NEXT: Type:    SHT_PROGBITS
62// NOMERGE-NEXT: Flags [
63// NOMERGE-NEXT:   SHF_ALLOC
64// NOMERGE-NEXT:   SHF_MERGE
65// NOMERGE-NEXT:   SHF_STRINGS
66// NOMERGE-NEXT: ]
67// NOMERGE-NEXT: Address: 0x20D
68// NOMERGE-NEXT: Offset: 0x20D
69// NOMERGE-NEXT: Size:    11
70// NOMERGE-NEXT: Link: 0
71// NOMERGE-NEXT: Info: 0
72// NOMERGE-NEXT: AddressAlignment: 1
73// NOMERGE-NEXT: EntrySize: 1
74// NOMERGE-NEXT: SectionData (
75// NOMERGE-NEXT:   0000: 61626300 61626300 626300 |abc.abc.bc.|
76// NOMERGE-NEXT: )
77
78// CHECK:      Name: .rodata2
79// CHECK-NEXT: Type: SHT_PROGBITS
80// CHECK-NEXT: Flags [
81// CHECK-NEXT:   SHF_ALLOC
82// CHECK-NEXT:   SHF_MERGE
83// CHECK-NEXT:   SHF_STRINGS
84// CHECK-NEXT: ]
85// CHECK-NEXT: Address: 0x212
86// CHECK-NEXT: Offset: 0x212
87// CHECK-NEXT: Size: 4
88// CHECK-NEXT: Link: 0
89// CHECK-NEXT: Info: 0
90// CHECK-NEXT: AddressAlignment: 2
91// CHECK-NEXT: EntrySize: 2
92// CHECK-NEXT: SectionData (
93// CHECK-NEXT:   0000: 14000000                             |....|
94// CHECK-NEXT: )
95
96
97// CHECK:      Name:    foo
98// CHECK-NEXT: Value: 0x20D
99
100// CHECK:      Name:    bar
101// CHECK-NEXT: Value: 0x20E
102
103// CHECK:      Name: zed
104// CHECK-NEXT: Value: 0x212
105// CHECK-NEXT: Size: 0
106