1 # Tests that the linker is able to read .gnu.linkonce sections and link them
2 # appropriately. The testcase has been created by using the following source
6 # .section .gnu.linkonce.d.dummy,"aw"
22 # .section .gnu.linkonce.d.dummy,"aw"
25 #RUN: yaml2obj -format=elf -docnum 1 %s -o %t.linkonce1a.o
26 #RUN: yaml2obj -format=elf -docnum 2 %s -o %t.linkonce1b.o
27 #RUN: lld -flavor gnu -target x86_64 %t.linkonce1a.o %t.linkonce1b.o \
28 #RUN: --noinhibit-exec --output-filetype=yaml -o %t2.out.yaml
29 #RUN: lld -flavor gnu -target x86_64 %t.linkonce1a.o %t.linkonce1b.o \
30 #RUN: --noinhibit-exec -o %t2.out
31 #RUN: FileCheck %s -check-prefix=CHECKGNULINKONCE < %t2.out.yaml
32 #RUN: llvm-readobj -sections %t2.out | FileCheck %s -check-prefix=CHECKGNULINKONCESECTIONS
33 #CHECKGNULINKONCE: - name: .gnu.linkonce.d.dummy
34 #CHECKGNULINKONCE: scope: global
35 #CHECKGNULINKONCE: type: gnu-linkonce
36 #CHECKGNULINKONCE: section-choice: custom-required
37 #CHECKGNULINKONCE: section-name: .gnu.linkonce.d.dummy
38 #CHECKGNULINKONCE: permissions: rw-
39 #CHECKGNULINKONCE: references:
40 #CHECKGNULINKONCE: - kind: group-child
41 #CHECKGNULINKONCE: offset: 0
42 #CHECKGNULINKONCE: target: bar
43 #CHECKGNULINKONCE: - kind: group-child
44 #CHECKGNULINKONCE: offset: 0
45 #CHECKGNULINKONCESECTIONS: Section {
46 #CHECKGNULINKONCESECTIONS: Name: .gnu.linkonce.d.dummy
47 #CHECKGNULINKONCESECTIONS: Type: SHT_PROGBITS
48 #CHECKGNULINKONCESECTIONS: Flags [ (0x3)
49 #CHECKGNULINKONCESECTIONS: SHF_ALLOC (0x2)
50 #CHECKGNULINKONCESECTIONS: SHF_WRITE (0x1)
51 #CHECKGNULINKONCESECTIONS: ]
52 #CHECKGNULINKONCESECTIONS: Size: 4
53 #CHECKGNULINKONCESECTIONS: }
64 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
65 AddressAlign: 0x0000000000000004
69 Flags: [ SHF_WRITE, SHF_ALLOC ]
70 AddressAlign: 0x0000000000000004
74 Flags: [ SHF_WRITE, SHF_ALLOC ]
75 AddressAlign: 0x0000000000000004
77 - Name: .gnu.linkonce.d.dummy
79 Flags: [ SHF_WRITE, SHF_ALLOC ]
80 AddressAlign: 0x0000000000000001
85 Section: .gnu.linkonce.d.dummy
95 - Name: .gnu.linkonce.d.dummy
97 Section: .gnu.linkonce.d.dummy
108 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
109 AddressAlign: 0x0000000000000004
113 Flags: [ SHF_WRITE, SHF_ALLOC ]
114 AddressAlign: 0x0000000000000004
118 Flags: [ SHF_WRITE, SHF_ALLOC ]
119 AddressAlign: 0x0000000000000004
121 - Name: .gnu.linkonce.d.dummy
123 Flags: [ SHF_WRITE, SHF_ALLOC ]
124 AddressAlign: 0x0000000000000001
137 - Name: .gnu.linkonce.d.dummy
139 Section: .gnu.linkonce.d.dummy
141 Section: .gnu.linkonce.d.dummy