1// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
2// RUN: ld.lld %t -o %t2
3// RUN: llvm-readobj -sections -section-data %t2 | FileCheck %s
4// REQUIRES: x86
5
6.global _start
7_start:
8
9.section        foobar,"",@progbits,unique,1
10.section        foobar,"T",@progbits,unique,2
11.section        foobar,"",@nobits,unique,3
12.section        foobar,"",@nobits,unique,4
13
14.section bar, "a"
15
16// Both sections are in the output and that the alloc section is first:
17// CHECK:      Name: bar
18// CHECK-NEXT: Type: SHT_PROGBITS
19// CHECK-NEXT: Flags [
20// CHECK-NEXT:  SHF_ALLOC
21// CHECK-NEXT: ]
22// CHECK-NEXT: Address: 0x10120
23
24// CHECK:      Name: foobar
25// CHECK-NEXT: Type: SHT_PROGBITS
26// CHECK-NEXT: Flags [
27// CHECK-NEXT: ]
28// CHECK-NEXT: Address: 0x0
29
30// CHECK:      Name: foobar
31// CHECK-NEXT: Type: SHT_PROGBITS
32// CHECK-NEXT: Flags [
33// CHECK-NEXT:   SHF_TLS
34// CHECK-NEXT: ]
35// CHECK-NEXT: Address: 0x0
36
37// CHECK:      Name: foobar
38// CHECK-NEXT: Type: SHT_NOBITS
39// CHECK-NEXT: Flags [
40// CHECK-NEXT: ]
41// CHECK-NEXT: Address: 0x0
42
43// CHECK-NOT:  Name: foobar
44
45// Test that the string "bar" is merged into "foobar".
46
47// CHECK:       Section {
48// CHECK:       Index:
49// CHECK:       Name: .shstrtab
50// CHECK-NEXT:  Type: SHT_STRTAB
51// CHECK-NEXT:  Flags [
52// CHECK-NEXT:  ]
53// CHECK-NEXT:  Address: 0x0
54// CHECK-NEXT:  Offset:
55// CHECK-NEXT:  Size:
56// CHECK-NEXT:  Link: 0
57// CHECK-NEXT:  Info: 0
58// CHECK-NEXT:  AddressAlignment: 1
59// CHECK-NEXT:  EntrySize: 0
60// CHECK-NEXT:  SectionData (
61// CHECK-NEXT:    0000: 00626172 002E7465 78740066 6F6F6261  |.bar..text.fooba|
62// CHECK-NEXT:    0010: 7200666F 6F626172 00666F6F 62617200  |r.foobar.foobar.|
63// CHECK-NEXT:    0020: 2E73796D 74616200 2E736873 74727461  |.symtab..shstrta|
64// CHECK-NEXT:    0030: 62002E73 74727461 6200               |b..strtab.|
65// CHECK-NEXT:  )
66// CHECK-NEXT:}
67// CHECK:        Name: .strtab
68// CHECK-NEXT:   Type: SHT_STRTAB (0x3)
69// CHECK-NEXT:   Flags [ (0x0)
70// CHECK-NEXT:   ]
71// CHECK-NEXT:   Address: 0x0
72// CHECK-NEXT:   Offset:
73// CHECK-NEXT:   Size: 15
74// CHECK-NEXT:   Link: 0
75// CHECK-NEXT:   Info: 0
76// CHECK-NEXT:   AddressAlignment: 1
77// CHECK-NEXT:   EntrySize: 0
78// CHECK-NEXT:   SectionData (
79// CHECK-NEXT:     0000: 00666F6F 62617200 5F737461 727400 |.foobar._start.|
80// CHECK-NEXT:   )
81// CHECK-NEXT: }
82