]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/ELF/merge-reloc.s
Vendor import of lld trunk r290819:
[FreeBSD/FreeBSD.git] / test / ELF / merge-reloc.s
1 # REQUIRES: x86
2 # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
3 # RUN: ld.lld %t.o -r -o %t-rel
4 # RUN: llvm-readobj -s -section-data %t-rel | FileCheck %s
5
6 # When linker generates a relocatable object it should keep "merge"
7 # sections as-is: do not merge content, do not join regular and
8 # "merge" sections, do not joint "merge" sections with different
9 # entry size.
10
11 # CHECK:      Section {
12 # CHECK:        Index:
13 # CHECK:        Name: .data
14 # CHECK-NEXT:   Type: SHT_PROGBITS
15 # CHECK-NEXT:   Flags [
16 # CHECK-NEXT:     SHF_ALLOC
17 # CHECK-NEXT:     SHF_MERGE
18 # CHECK-NEXT:   ]
19 # CHECK-NEXT:   Address:
20 # CHECK-NEXT:   Offset:
21 # CHECK-NEXT:   Size: 12
22 # CHECK-NEXT:   Link: 0
23 # CHECK-NEXT:   Info: 0
24 # CHECK-NEXT:   AddressAlignment: 4
25 # CHECK-NEXT:   EntrySize: 4
26 # CHECK-NEXT:   SectionData (
27 # CHECK-NEXT:     0000: 42000000 42000000 42000000
28 # CHECK-NEXT:   )
29 # CHECK-NEXT: }
30 # CHECK:      Section {
31 # CHECK:        Index:
32 # CHECK:        Name: .data
33 # CHECK-NEXT:   Type: SHT_PROGBITS
34 # CHECK-NEXT:   Flags [
35 # CHECK-NEXT:     SHF_ALLOC
36 # CHECK-NEXT:     SHF_MERGE
37 # CHECK-NEXT:   ]
38 # CHECK-NEXT:   Address:
39 # CHECK-NEXT:   Offset:
40 # CHECK-NEXT:   Size: 16
41 # CHECK-NEXT:   Link: 0
42 # CHECK-NEXT:   Info: 0
43 # CHECK-NEXT:   AddressAlignment: 8
44 # CHECK-NEXT:   EntrySize: 8
45 # CHECK-NEXT:   SectionData (
46 # CHECK-NEXT:     0000: 42000000 42000000 42000000 42000000
47 # CHECK-NEXT:   )
48 # CHECK-NEXT: }
49 # CHECK:      Section {
50 # CHECK:        Index:
51 # CHECK:        Name: .data
52 # CHECK-NEXT:   Type: SHT_PROGBITS
53 # CHECK-NEXT:   Flags [
54 # CHECK-NEXT:     SHF_ALLOC
55 # CHECK-NEXT:     SHF_WRITE
56 # CHECK-NEXT:   ]
57 # CHECK-NEXT:   Address:
58 # CHECK-NEXT:   Offset:
59 # CHECK-NEXT:   Size: 16
60 # CHECK-NEXT:   Link: 0
61 # CHECK-NEXT:   Info: 0
62 # CHECK-NEXT:   AddressAlignment: 1
63 # CHECK-NEXT:   EntrySize: 0
64 # CHECK-NEXT:   SectionData (
65 # CHECK-NEXT:     0000: 42000000 42000000 42000000 42000000
66 # CHECK-NEXT:   )
67 # CHECK-NEXT: }
68
69         .section        .data.1,"aM",@progbits,4
70         .align  4
71         .global foo
72 foo:
73         .long   0x42
74         .long   0x42
75         .long   0x42
76
77         .section        .data.2,"aM",@progbits,8
78         .align  8
79         .global bar
80 bar:
81         .long   0x42
82         .long   0x42
83         .long   0x42
84         .long   0x42
85
86         .data
87         .global gar
88 zed:
89         .long   0x42
90         .long   0x42
91         .long   0x42
92         .long   0x42