Mercurial > hg > CbC > CbC_llvm
comparison lld/test/ELF/pre_init_fini_array.s @ 173:0572611fdcc8 llvm10 llvm12
reorgnization done
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 11:55:54 +0900 |
parents | 1d019706d866 |
children | 2e18cbf3894f |
comparison
equal
deleted
inserted
replaced
172:9fbae9c8bf63 | 173:0572611fdcc8 |
---|---|
1 // REQUIRES: x86 | 1 // REQUIRES: x86 |
2 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t | 2 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t |
3 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/shared.s -o %t2 | 3 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/shared.s -o %t2 |
4 // RUN: ld.lld %t2 -o %t2.so -shared -soname=so | 4 // RUN: ld.lld %t2 -o %t2.so -shared -soname=so |
5 // RUN: ld.lld %t %t2.so -o %t2 | 5 // RUN: ld.lld %t %t2.so -o %t2 |
6 // RUN: llvm-readobj -r --symbols --sections --dynamic-table %t2 | FileCheck %s | 6 // RUN: llvm-readelf -S -d -r -s %t2 | FileCheck %s |
7 // RUN: llvm-objdump -d %t2 | FileCheck --check-prefix=DISASM %s | 7 // RUN: llvm-objdump -d --syms %t2 | FileCheck --check-prefix=DISASM %s |
8 | 8 |
9 .globl _start | 9 .globl _start |
10 _start: | 10 _start: |
11 call __preinit_array_start | 11 call *__preinit_array_start |
12 call __preinit_array_end | 12 call *__preinit_array_end |
13 call __init_array_start | 13 call *__init_array_start |
14 call __init_array_end | 14 call *__init_array_end |
15 call __fini_array_start | 15 call *__fini_array_start |
16 call __fini_array_end | 16 call *__fini_array_end |
17 | 17 |
18 | 18 |
19 .section .init_array,"aw",@init_array | 19 .section .init_array,"aw",@init_array |
20 .quad 0 | 20 .quad 0 |
21 | 21 |
25 | 25 |
26 .section .fini_array,"aw",@fini_array | 26 .section .fini_array,"aw",@fini_array |
27 .quad 0 | 27 .quad 0 |
28 .short 0 | 28 .short 0 |
29 | 29 |
30 // CHECK: Name: .init_array | 30 // CHECK-LABEL: Section Headers: |
31 // CHECK-NEXT: Type: SHT_INIT_ARRAY | 31 // CHECK: Name Type Address Off Size ES Flg |
32 // CHECK-NEXT: Flags [ | 32 // CHECK: .init_array INIT_ARRAY [[# %x, INIT_ADDR:]] [[# %x,]] [[# %x, INIT_SIZE:]] 00 WA |
33 // CHECK-NEXT: SHF_ALLOC | 33 // CHECK-NEXT: .preinit_array PREINIT_ARRAY [[# %x, PREINIT_ADDR:]] [[# %x,]] [[# %x, PREINIT_SIZE:]] 00 WA |
34 // CHECK-NEXT: SHF_WRITE | 34 // CHECK-NEXT: .fini_array FINI_ARRAY [[# %x, FINI_ADDR:]] [[# %x,]] [[# %x, FINI_SIZE:]] 00 WA |
35 // CHECK-NEXT: ] | |
36 // CHECK-NEXT: Address: [[INIT_ADDR:.*]] | |
37 // CHECK-NEXT: Offset: | |
38 // CHECK-NEXT: Size: [[INIT_SIZE:.*]] | |
39 | 35 |
36 // CHECK-LABEL: Dynamic section | |
37 // CHECK: (PREINIT_ARRAY) 0x[[# PREINIT_ADDR]] | |
38 // CHECK: (PREINIT_ARRAYSZ) [[# %u, PREINIT_SIZE]] (bytes) | |
39 // CHECK: (INIT_ARRAY) 0x[[# INIT_ADDR]] | |
40 // CHECK: (INIT_ARRAYSZ) [[# %u, INIT_SIZE]] (bytes) | |
41 // CHECK: (FINI_ARRAY) 0x[[# FINI_ADDR]] | |
42 // CHECK: (FINI_ARRAYSZ) [[# %u, FINI_SIZE]] (bytes) | |
40 | 43 |
41 // CHECK: Name: .preinit_array | 44 // CHECK-LABEL: There are no relocations in this file. |
42 // CHECK-NEXT: Type: SHT_PREINIT_ARRAY | |
43 // CHECK-NEXT: Flags [ | |
44 // CHECK-NEXT: SHF_ALLOC | |
45 // CHECK-NEXT: SHF_WRITE | |
46 // CHECK-NEXT: ] | |
47 // CHECK-NEXT: Address: [[PREINIT_ADDR:.*]] | |
48 // CHECK-NEXT: Offset: | |
49 // CHECK-NEXT: Size: [[PREINIT_SIZE:.*]] | |
50 | 45 |
46 // CHECK-LABEL: Symbol table '.symtab' | |
47 // CHECK: Value Size Type Bind Vis Ndx Name | |
48 // CHECK: [[# FINI_ADDR + FINI_SIZE]] 0 NOTYPE LOCAL HIDDEN [[#]] __fini_array_end | |
49 // CHECK-NEXT: [[# FINI_ADDR]] 0 NOTYPE LOCAL HIDDEN [[#]] __fini_array_start | |
50 // CHECK-NEXT: [[# INIT_ADDR + INIT_SIZE]] 0 NOTYPE LOCAL HIDDEN [[#]] __init_array_end | |
51 // CHECK-NEXT: [[# INIT_ADDR]] 0 NOTYPE LOCAL HIDDEN [[#]] __init_array_start | |
52 // CHECK-NEXT: [[# PREINIT_ADDR + PREINIT_SIZE]] 0 NOTYPE LOCAL HIDDEN [[#]] __preinit_array_end | |
53 // CHECK-NEXT: [[# PREINIT_ADDR]] 0 NOTYPE LOCAL HIDDEN [[#]] __preinit_array_start | |
51 | 54 |
52 // CHECK: Name: .fini_array | 55 // DISASM: SYMBOL TABLE: |
53 // CHECK-NEXT: Type: SHT_FINI_ARRAY | 56 // DISASM-DAG: {{0*}}[[# %x, PREINIT_ARRAY_START:]] l .preinit_array {{0+}} .hidden __preinit_array_start |
54 // CHECK-NEXT: Flags [ | 57 // DISASM-DAG: {{0*}}[[# %x, PREINIT_ARRAY_END:]] l .preinit_array {{0+}} .hidden __preinit_array_end |
55 // CHECK-NEXT: SHF_ALLOC | 58 // DISASM-DAG: {{0*}}[[# %x, INIT_ARRAY_START:]] l .init_array {{0+}} .hidden __init_array_start |
56 // CHECK-NEXT: SHF_WRITE | 59 // DISASM-DAG: {{0*}}[[# %x, INIT_ARRAY_END:]] l .init_array {{0+}} .hidden __init_array_end |
57 // CHECK-NEXT: ] | 60 // DISASM-DAG: {{0*}}[[# %x, FINI_ARRAY_START:]] l .fini_array {{0+}} .hidden __fini_array_start |
58 // CHECK-NEXT: Address: [[FINI_ADDR:.*]] | 61 // DISASM-DAG: {{0*}}[[# %x, FINI_ARRAY_END:]] l .fini_array {{0+}} .hidden __fini_array_end |
59 // CHECK-NEXT: Offset: | |
60 // CHECK-NEXT: Size: [[FINI_SIZE:.*]] | |
61 | 62 |
62 // CHECK: Relocations [ | 63 // DISASM: <_start>: |
63 // CHECK-NEXT: ] | 64 // DISASM-NEXT: callq *[[# %u, PREINIT_ARRAY_START]] |
64 | 65 // DISASM-NEXT: callq *[[# %u, PREINIT_ARRAY_END]] |
65 // CHECK: Name: __fini_array_end | 66 // DISASM-NEXT: callq *[[# %u, INIT_ARRAY_START]] |
66 // CHECK-NEXT: Value: | 67 // DISASM-NEXT: callq *[[# %u, INIT_ARRAY_END]] |
67 // CHECK-NEXT: Size: 0 | 68 // DISASM-NEXT: callq *[[# %u, FINI_ARRAY_START]] |
68 // CHECK-NEXT: Binding: Local | 69 // DISASM-NEXT: callq *[[# %u, FINI_ARRAY_END]] |
69 // CHECK-NEXT: Type: None | |
70 // CHECK-NEXT: Other [ | |
71 // CHECK-NEXT: STV_HIDDEN | |
72 // CHECK-NEXT: ] | |
73 // CHECK-NEXT: Section: .fini_array | |
74 // CHECK-NEXT: } | |
75 // CHECK-NEXT: Symbol { | |
76 // CHECK-NEXT: Name: __fini_array_start | |
77 // CHECK-NEXT: Value: [[FINI_ADDR]] | |
78 // CHECK-NEXT: Size: 0 | |
79 // CHECK-NEXT: Binding: Local | |
80 // CHECK-NEXT: Type: None | |
81 // CHECK-NEXT: Other [ | |
82 // CHECK-NEXT: STV_HIDDEN | |
83 // CHECK-NEXT: ] | |
84 // CHECK-NEXT: Section: .fini_array | |
85 // CHECK-NEXT: } | |
86 // CHECK-NEXT: Symbol { | |
87 // CHECK-NEXT: Name: __init_array_end | |
88 // CHECK-NEXT: Value: | |
89 // CHECK-NEXT: Size: 0 | |
90 // CHECK-NEXT: Binding: Local | |
91 // CHECK-NEXT: Type: None | |
92 // CHECK-NEXT: Other [ | |
93 // CHECK-NEXT: STV_HIDDEN | |
94 // CHECK-NEXT: ] | |
95 // CHECK-NEXT: Section: .init_array | |
96 // CHECK-NEXT: } | |
97 // CHECK-NEXT: Symbol { | |
98 // CHECK-NEXT: Name: __init_array_start | |
99 // CHECK-NEXT: Value: [[INIT_ADDR]] | |
100 // CHECK-NEXT: Size: 0 | |
101 // CHECK-NEXT: Binding: Local | |
102 // CHECK-NEXT: Type: None | |
103 // CHECK-NEXT: Other [ | |
104 // CHECK-NEXT: STV_HIDDEN | |
105 // CHECK-NEXT: ] | |
106 // CHECK-NEXT: Section: .init_array | |
107 // CHECK-NEXT: } | |
108 // CHECK-NEXT: Symbol { | |
109 // CHECK-NEXT: Name: __preinit_array_end | |
110 // CHECK-NEXT: Value: | |
111 // CHECK-NEXT: Size: 0 | |
112 // CHECK-NEXT: Binding: Local | |
113 // CHECK-NEXT: Type: None | |
114 // CHECK-NEXT: Other [ | |
115 // CHECK-NEXT: STV_HIDDEN | |
116 // CHECK-NEXT: ] | |
117 // CHECK-NEXT: Section: .preinit_array | |
118 // CHECK-NEXT: } | |
119 // CHECK-NEXT: Symbol { | |
120 // CHECK-NEXT: Name: __preinit_array_start | |
121 // CHECK-NEXT: Value: [[PREINIT_ADDR]] | |
122 // CHECK-NEXT: Size: 0 | |
123 // CHECK-NEXT: Binding: Local | |
124 // CHECK-NEXT: Type: None | |
125 // CHECK-NEXT: Other [ | |
126 // CHECK-NEXT: STV_HIDDEN | |
127 // CHECK-NEXT: ] | |
128 // CHECK-NEXT: Section: .preinit_array | |
129 // CHECK-NEXT: } | |
130 | |
131 // CHECK: DynamicSection | |
132 // CHECK: PREINIT_ARRAY [[PREINIT_ADDR]] | |
133 // CHECK: PREINIT_ARRAYSZ [[PREINIT_SIZE]] (bytes) | |
134 // CHECK: INIT_ARRAY [[INIT_ADDR]] | |
135 // CHECK: INIT_ARRAYSZ [[INIT_SIZE]] (bytes) | |
136 // CHECK: FINI_ARRAY [[FINI_ADDR]] | |
137 // CHECK: FINI_ARRAYSZ [[FINI_SIZE]] (bytes) | |
138 | |
139 // DISASM: _start: | |
140 // DISASM-NEXT: callq {{.*}} <__preinit_array_start> | |
141 // DISASM-NEXT: callq {{.*}} <__fini_array_start> | |
142 // DISASM-NEXT: callq {{.*}} <__init_array_start> | |
143 // DISASM-NEXT: callq {{.*}} <__preinit_array_start> | |
144 // DISASM-NEXT: callq {{.*}} <__fini_array_start> | |
145 // DISASM-NEXT: callq {{.*}} <__fini_array_end> |