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: 002E7465 78740066 6F6F6261 72002E73  |..text.foobar..s|
62// CHECK-NEXT:    0010: 68737472 74616200 2E737472 74616200  |hstrtab..strtab.|
63// CHECK-NEXT:    0020: 2E73796D 74616200                    |.symtab.|
64// CHECK-NEXT:  )
65// CHECK-NEXT:}
66// CHECK:        Name: .strtab
67// CHECK-NEXT:   Type: SHT_STRTAB (0x3)
68// CHECK-NEXT:   Flags [ (0x0)
69// CHECK-NEXT:   ]
70// CHECK-NEXT:   Address: 0x0
71// CHECK-NEXT:   Offset:
72// CHECK-NEXT:   Size: 15
73// CHECK-NEXT:   Link: 0
74// CHECK-NEXT:   Info: 0
75// CHECK-NEXT:   AddressAlignment: 1
76// CHECK-NEXT:   EntrySize: 0
77// CHECK-NEXT:   SectionData (
78// CHECK-NEXT:     0000: 005F7374 61727400 666F6F62 617200    |._start.foobar.|
79// CHECK-NEXT:   )
80// CHECK-NEXT: }
81