gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gold / testsuite / two_file_test_2_tls.cc
1 // two_file_test_2_tls.cc -- a two file test case for gold, with a TLS symbol
2
3 // Copyright (C) 2006-2020 Free Software Foundation, Inc.
4 // Written by Ian Lance Taylor <iant@google.com>.
5
6 // This file is part of gold.
7
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 3 of the License, or
11 // (at your option) any later version.
12
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
17
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the Free Software
20 // Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
21 // MA 02110-1301, USA.
22
23 // This tests references between files. This is file 2, and
24 // two_file_test_1.cc is file 1. See file 1 for details.
25
26 #include "two_file_test.h"
27
28 // 1 Code in file 1 calls code in file 2.
29
30 __thread int tls1 = 123;
31
32 int
33 t1_2()
34 {
35 return tls1;
36 }
37
38 bool
39 t1a()
40 {
41 return t1_2() == 123;
42 }
43
44 // 2 Code in file 1 refers to global data in file 2.
45
46 int v2 = 456;
47
48 // 3 Code in file 1 referes to common symbol in file 2. This is
49 // initialized at runtime to 789.
50
51 int v3;
52
53 // 4 Code in file 1 refers to offset within global data in file 2.
54
55 char v4[] = "Hello, world";
56
57 // 5 Code in file 1 refers to offset within common symbol in file 2.
58 // This is initialized at runtime to a copy of v4.
59
60 char v5[13];
61
62 // 6 Data in file 1 refers to global data in file 2. This reuses v2.
63
64 // 7 Data in file 1 refers to common symbol in file 2. This reuses v3.
65
66 // 8 Data in file 1 refers to offset within global data in file 2.
67 // This reuses v4.
68
69 // 9 Data in file 1 refers to offset within common symbol in file 2.
70 // This reuses v5.
71
72 // 10 Data in file 1 refers to function in file 2.
73
74 int
75 f10()
76 {
77 return 135;
78 }
79
80 // 11 Pass function pointer from file 1 to file 2.
81
82 int
83 f11b(int (*pfn)())
84 {
85 return (*pfn)();
86 }
87
88 // 12 Compare address of function for equality in both files.
89
90 bool
91 (*f12())()
92 {
93 return &t12;
94 }
95
96 // 13 Compare address of inline function for equality in both files.
97
98 void
99 (*f13())()
100 {
101 return &f13i;
102 }
103
104 // 14 Compare string constants in file 1 and file 2.
105
106 const char*
107 f14()
108 {
109 return TEST_STRING_CONSTANT;
110 }
111
112 // 15 Compare wide string constants in file 1 and file 2.
113
114 const wchar_t*
115 f15()
116 {
117 return TEST_WIDE_STRING_CONSTANT;
118 }
119
120 // 17 File 1 checks array of string constants defined in file 2.
121
122 const char* t17data[T17_COUNT] =
123 {
124 "a", "b", "c", "d", "e"
125 };
126
127 // 18 File 1 checks string constants referenced directly in file 2.
128
129 const char*
130 f18(int i)
131 {
132 switch (i)
133 {
134 case 0:
135 return "a";
136 case 1:
137 return "b";
138 case 2:
139 return "c";
140 case 3:
141 return "d";
142 case 4:
143 return "e";
144 default:
145 return 0;
146 }
147 }
This page took 0.032907 seconds and 4 git commands to generate.