ChangeLog rotatation and copyright year update
[deliverable/binutils-gdb.git] / gold / testsuite / dwp_test_1.cc
CommitLineData
35c813e2
CC
1// dwp_test_1.cc -- a test case for dwp
2
b90efa5b 3// Copyright (C) 2012-2015 Free Software Foundation, Inc.
35c813e2
CC
4// Written by Cary Coutant <ccoutant@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// Adapted from two_file_test_1.cc.
24
25#include "dwp_test.h"
26
27// 1 Code in file 1 calls code in file 2.
28
29bool
30C1::testcase1()
31{
32 return t1_2() == 123;
33}
34
35// 2 Code in file 1 refers to global data in file 2.
36
37bool
38C1::testcase2()
39{
40 return v2 == 456;
41}
42
43// 3 Code in file 1 referes to common symbol in file 2.
44
45bool
46C1::testcase3()
47{
48 return v3 == 789;
49}
50
51// 4 Code in file 1 refers to offset within global data in file 2.
52
53bool
54C1::testcase4()
55{
56 return v4[5] == ',';
57}
58
59// 5 Code in file 1 refers to offset within common symbol in file 2.
60
61bool
62C2::testcase1()
63{
64 return v5[7] == 'w';
65}
66
67// 6 Data in file 1 refers to global data in file 2.
68
69int* p6 = &v2;
70
71bool
72C2::testcase2()
73{
74 return *p6 == 456;
75}
76
77// 7 Data in file 1 refers to common symbol in file 2.
78
79int* p7 = &v3;
80
81bool
82C2::testcase3()
83{
84 return *p7 == 789;
85}
86
87// 8 Data in file 1 refers to offset within global data in file 2.
88
89char* p8 = &v4[6];
90
91bool
92C2::testcase4()
93{
94 return *p8 == ' ';
95}
96
97// 9 Data in file 1 refers to offset within common symbol in file 2.
98
99char* p9 = &v5[8];
100
101bool
102C3::testcase1()
103{
104 return *p9 == 'o';
105}
106
107// 10 Data in file 1 refers to function in file 2.
108
109int (*pfn)() = &f10;
110
111bool
112C3::testcase2()
113{
114 return (*pfn)() == 135;
115}
116
117// 11 Pass function pointer from file 1 to file 2.
118
119int
120f11a()
121{
122 return 246;
123}
124
125bool
126C3::testcase3()
127{
128 return f11b(&f11a) == 246;
129}
130
131// 12 Compare address of function for equality in both files.
132
133bool
134t12()
135{
136 return &t12 == c3.f4();
137}
138
139// 13 Compare address of inline function for equality in both files.
140
141bool
142t13()
143{
144 return &f13i == f13();
145}
146
147// 14 Compare string constants in file 1 and file 2.
148
149bool
150t14()
151{
152 const char* s1 = TEST_STRING_CONSTANT;
153 const char* s2 = f14();
154 while (*s1 != '\0')
155 if (*s1++ != *s2++)
156 return false;
157 return *s2 == '\0';
158}
159
160// 15 Compare wide string constants in file 1 and file 2.
161
162bool
163t15()
164{
165 const wchar_t* s1 = TEST_WIDE_STRING_CONSTANT;
166 const wchar_t* s2 = f15();
167 while (*s1 != '\0')
168 if (*s1++ != *s2++)
169 return false;
170 return *s2 == '\0';
171}
172
173// 16 Call a function directly after its address has been taken.
174
175bool
176t16()
177{
178 return f10() == 135;
179}
180
181// 17 File 1 checks array of string constants defined in file 2.
182
183bool
184t17()
185{
186 char c = 'a';
187 for (int i = 0; i < T17_COUNT; ++i)
188 {
189 if (t17data[i][0] != c || t17data[i][1] != '\0')
190 return false;
191 ++c;
192 }
193 return true;
194}
195
196// 18 File 1 checks string constants referenced in code in file 2.
197
198bool
199t18()
200{
201 char c = 'a';
202 for (int i = 0; i < T17_COUNT; ++i)
203 {
204 const char* s = f18(i);
205 if (s[0] != c || s[1] != '\0')
206 return false;
207 ++c;
208 }
209 return true;
210}
This page took 0.127102 seconds and 4 git commands to generate.