Add a TLS test case.
[deliverable/binutils-gdb.git] / gold / testsuite / two_file_test_1.cc
CommitLineData
3bd52c28
ILT
1// two_file_test_1.cc -- a two file test case for gold, file 1 of 2
2
3// Copyright 2006, 2007 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 1, and
24// two_file_test_2.cc is file 2. We test in several different ways:
25
26// Files 1 and 2 linked together in executable.
27// File 1 in executable, file 2 in shared library.
28// File 1 in shared library, file 2 in executable.
29// Files 1 and 2 linked together in shared library.
30// Files 1 and 2 in different shared libraries.
31
32// We test the following cases.
33
34// 1 Code in file 1 calls code in file 2.
35// 2 Code in file 1 refers to global data in file 2.
36// 3 Code in file 1 referes to common symbol in file 2.
37// 4 Code in file 1 refers to offset within global data in file 2.
38// 5 Code in file 1 refers to offset within common symbol in file 2.
39// 6 Data in file 1 refers to global data in file 2.
40// 7 Data in file 1 refers to common symbol in file 2.
41// 8 Data in file 1 refers to offset within global data in file 2.
42// 9 Data in file 1 refers to offset within common symbol in file 2.
43// 10 Data in file 1 refers to function in file 2.
44// 11 Pass function pointer from file 1 to file 2.
45// 12 Compare address of function for equality in both files.
46// 13 Compare address of inline function for equality in both files.
47
48#include "two_file_test.h"
49
50// 1 Code in file 1 calls code in file 2.
51
52bool
53t1()
54{
55 return t1_2() == 123;
56}
57
58// 2 Code in file 1 refers to global data in file 2.
59
60bool
61t2()
62{
63 return v2 == 456;
64}
65
66// 3 Code in file 1 referes to common symbol in file 2.
67
68bool
69t3()
70{
71 return v3 == 789;
72}
73
74// 4 Code in file 1 refers to offset within global data in file 2.
75
76bool
77t4()
78{
79 return v4[5] == ',';
80}
81
82// 5 Code in file 1 refers to offset within common symbol in file 2.
83
84bool
85t5()
86{
87 return v5[7] == 'w';
88}
89
90// 6 Data in file 1 refers to global data in file 2.
91
92int* p6 = &v2;
93
94bool
95t6()
96{
97 return *p6 == 456;
98}
99
100// 7 Data in file 1 refers to common symbol in file 2.
101
102int* p7 = &v3;
103
104bool
105t7()
106{
107 return *p7 == 789;
108}
109
110// 8 Data in file 1 refers to offset within global data in file 2.
111
112char* p8 = &v4[6];
113
114bool
115t8()
116{
117 return *p8 == ' ';
118}
119
120// 9 Data in file 1 refers to offset within common symbol in file 2.
121
122char* p9 = &v5[8];
123
124bool
125t9()
126{
127 return *p9 == 'o';
128}
129
130// 10 Data in file 1 refers to function in file 2.
131
132int (*pfn)() = &f10;
133
134bool
135t10()
136{
137 return (*pfn)() == 135;
138}
139
140// 11 Pass function pointer from file 1 to file 2.
141
142int
143f11a()
144{
145 return 246;
146}
147
148bool
149t11()
150{
151 return f11b(&f11a) == 246;
152}
153
154// 12 Compare address of function for equality in both files.
155
156bool
157t12()
158{
159 return &t12 == f12();
160}
161
162// 13 Compare address of inline function for equality in both files.
163
164bool
165t13()
166{
167 return &f13i == f13();
168}
This page took 0.037705 seconds and 4 git commands to generate.