xref: /llvm-project/llvm/test/CodeGen/X86/code-model-elf-sections.ll (revision 00647a18cee6ced40757d03a8c0d61d7571d22d3)
1; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=small -o %t
2; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL
3; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=medium -o %t
4; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE
5; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=medium -large-data-threshold=79 -o %t
6; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE
7; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=medium -large-data-threshold=80 -o %t
8; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL
9; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=large -large-data-threshold=79 -o %t
10; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE
11; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=large -large-data-threshold=80 -o %t
12; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL
13
14; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=small -data-sections -o %t
15; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL-DS
16; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=medium -data-sections -o %t
17; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE-DS
18; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=large -data-sections -o %t
19; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE-DS
20
21; SMALL: .data {{.*}} WA {{.*}}
22; SMALL: .data.x {{.*}} WA {{.*}}
23; SMALL: .data0 {{.*}} WA {{.*}}
24; SMALL: .ldata {{.*}} WAl {{.*}}
25; SMALL: .ldata.x {{.*}} WAl {{.*}}
26; SMALL: .ldata0 {{.*}} WA {{.*}}
27; SMALL: force_small {{.*}} WA {{.*}}
28; SMALL: force_large {{.*}} WAl {{.*}}
29; SMALL: foo {{.*}} WA {{.*}}
30; SMALL: .bss {{.*}} WA {{.*}}
31; SMALL: .lbss {{.*}} WAl {{.*}}
32; SMALL: .rodata {{.*}} A {{.*}}
33; SMALL: .lrodata {{.*}} Al {{.*}}
34; SMALL: .data.rel.ro {{.*}} WA {{.*}}
35; SMALL: .tbss {{.*}} WAT {{.*}}
36; SMALL: .tdata {{.*}} WAT {{.*}}
37
38; SMALL-DS: .data {{.*}} WA {{.*}}
39; SMALL-DS: .data.x {{.*}} WA {{.*}}
40; SMALL-DS: .data0 {{.*}} WA {{.*}}
41; SMALL-DS: .ldata {{.*}} WAl {{.*}}
42; SMALL-DS: .ldata.x {{.*}} WAl {{.*}}
43; SMALL-DS: .ldata0 {{.*}} WA {{.*}}
44; SMALL-DS: .data.data {{.*}} WA {{.*}}
45; SMALL-DS: force_small {{.*}} WA {{.*}}
46; SMALL-DS: force_large {{.*}} WAl {{.*}}
47; SMALL-DS: foo {{.*}} WA {{.*}}
48; SMALL-DS: .lbss {{.*}} WAl {{.*}}
49; SMALL-DS: .bss.bss {{.*}} WA {{.*}}
50; SMALL-DS: .lrodata {{.*}} Al {{.*}}
51; SMALL-DS: .rodata.rodata {{.*}} A {{.*}}
52; SMALL-DS: .data.rel.ro.relro {{.*}} WA {{.*}}
53; SMALL-DS: .tbss.tbss {{.*}} WAT {{.*}}
54; SMALL-DS: .tdata.tdata {{.*}} WAT {{.*}}
55
56; LARGE: .data {{.*}} WA {{.*}}
57; LARGE: .data.x {{.*}} WA {{.*}}
58; LARGE: .data0 {{.*}} WA {{.*}}
59; LARGE: .ldata {{.*}} WAl {{.*}}
60; LARGE: .ldata.x {{.*}} WAl {{.*}}
61; LARGE: .ldata0 {{.*}} WA {{.*}}
62; LARGE: force_small {{.*}} WA {{.*}}
63; LARGE: force_large {{.*}} WAl {{.*}}
64; LARGE: foo {{.*}} WA {{.*}}
65; LARGE: .bss {{.*}} WA {{.*}}
66; LARGE: .lbss {{.*}} WAl {{.*}}
67; LARGE: .rodata {{.*}} A {{.*}}
68; LARGE: .lrodata {{.*}} Al {{.*}}
69; LARGE: .ldata.rel.ro {{.*}} WAl {{.*}}
70; LARGE: .tbss {{.*}} WAT {{.*}}
71; LARGE: .tdata {{.*}} WAT {{.*}}
72
73; LARGE-DS: .data {{.*}} WA {{.*}}
74; LARGE-DS: .data.x {{.*}} WA {{.*}}
75; LARGE-DS: .data0 {{.*}} WA {{.*}}
76; LARGE-DS: .ldata {{.*}} WAl {{.*}}
77; LARGE-DS: .ldata.x {{.*}} WAl {{.*}}
78; LARGE-DS: .ldata0 {{.*}} WA {{.*}}
79; LARGE-DS: .ldata.data {{.*}} WAl {{.*}}
80; LARGE-DS: force_small {{.*}} WA {{.*}}
81; LARGE-DS: force_large {{.*}} WAl {{.*}}
82; LARGE-DS: foo {{.*}} WA {{.*}}
83; LARGE-DS: .bss {{.*}} WA {{.*}}
84; LARGE-DS: .lbss.bss {{.*}} WAl {{.*}}
85; LARGE-DS: .rodata {{.*}} A {{.*}}
86; LARGE-DS: .lrodata.rodata {{.*}} Al {{.*}}
87; LARGE-DS: .ldata.rel.ro.relro {{.*}} WAl {{.*}}
88; LARGE-DS: .tbss.tbss {{.*}} WAT {{.*}}
89; LARGE-DS: .tdata.tdata {{.*}} WAT {{.*}}
90
91target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
92target triple = "x86_64--linux"
93
94@data_with_explicit_section = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], section ".data"
95@data_with_explicit_section2 = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], section ".data.x"
96@data_with_explicit_section0 = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], section ".data0"
97@ldata_with_explicit_section = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], section ".ldata"
98@ldata_with_explicit_section2 = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], section ".ldata.x"
99@ldata_with_explicit_section0 = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], section ".ldata0"
100@data = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0]
101@data_force_small = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], code_model "small", section "force_small"
102@data_force_large = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], code_model "large", section "force_large"
103@data_force_small_ldata = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], code_model "small", section ".ldata"
104@data_force_large_data = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], code_model "large", section ".data"
105@foo_with_explicit_section = internal global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0], section "foo"
106@bss_with_explicit_section = internal global [10 x i64] zeroinitializer, section ".bss"
107@lbss_with_explicit_section = internal global [10 x i64] zeroinitializer, section ".lbss"
108@bss = internal global [10 x i64] zeroinitializer
109@rodata_with_explicit_section = internal constant [10 x i64] zeroinitializer, section ".rodata"
110@lrodata_with_explicit_section = internal constant [10 x i64] zeroinitializer, section ".lrodata"
111@rodata = internal constant [10 x i64] zeroinitializer
112@relro = internal constant [10 x ptr] [ptr @func, ptr @func, ptr @func, ptr @func, ptr @func, ptr @func, ptr @func, ptr @func, ptr @func, ptr @func]
113@tbss = internal thread_local global [10 x i64] zeroinitializer
114@tdata = internal thread_local global [10 x i64] [i64 1, i64 2, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0]
115
116declare void @func()
117