]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gold/testsuite/two_file_test_2_v1.cc
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / gold / testsuite / two_file_test_2_v1.cc
CommitLineData
2eedd706
CC
1// two_file_test_2_v1.cc -- a two file test case for gold, file 2 of 2
2
250d07de 3// Copyright (C) 2006-2021 Free Software Foundation, Inc.
2eedd706
CC
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 is an alternate version of the source file two_file_test_2.cc,
24// used to test incremental linking. We build a binary first using this
25// source file, then do an incremental link with the primary version of
26// the file.
27
28// This tests references between files. This is file 2, and
29// two_file_test_1.cc is file 1. See file 1 for details.
30
31#include "two_file_test.h"
32
33// 1 Code in file 1 calls code in file 2.
34
35int
36t1_2()
37{
38 return 0;
39}
40
41bool
42t1a()
43{
44 return t1_2() == 0;
45}
46
47// 2 Code in file 1 refers to global data in file 2.
48
61220854 49int v2 = 1;
2eedd706
CC
50
51// 3 Code in file 1 referes to common symbol in file 2. This is
52// initialized at runtime to 789.
53
54int v3;
55
56// 4 Code in file 1 refers to offset within global data in file 2.
57
58char v4[] = "World, hello";
59
60// 5 Code in file 1 refers to offset within common symbol in file 2.
61// This is initialized at runtime to a copy of v4.
62
63char v5[13];
64
65// 6 Data in file 1 refers to global data in file 2. This reuses v2.
66
67// 7 Data in file 1 refers to common symbol in file 2. This reuses v3.
68
69// 8 Data in file 1 refers to offset within global data in file 2.
70// This reuses v4.
71
72// 9 Data in file 1 refers to offset within common symbol in file 2.
73// This reuses v5.
74
75// 10 Data in file 1 refers to function in file 2.
76
77int
78f10()
79{
80 return 0;
81}
82
83// 11 Pass function pointer from file 1 to file 2.
84
85int
86f11b(int (*pfn)())
87{
88 return (*pfn)();
89}
90
91// 12 Compare address of function for equality in both files.
92
93bool
94(*f12())()
95{
96 return &t12;
97}
98
99// 13 Compare address of inline function for equality in both files.
100
101void
102(*f13())()
103{
104 return &f13i;
105}
106
107// 14 Compare string constants in file 1 and file 2.
108
109const char*
110f14()
111{
112 return TEST_STRING_CONSTANT;
113}
114
115// 15 Compare wide string constants in file 1 and file 2.
116
117const wchar_t*
118f15()
119{
120 return TEST_WIDE_STRING_CONSTANT;
121}
122
123// 17 File 1 checks array of string constants defined in file 2.
124
125const char* t17data[T17_COUNT] =
126{
127 "0", "1", "2", "3", "4"
128};
129
130// 18 File 1 checks string constants referenced directly in file 2.
131
132const char*
133f18(int i)
134{
135 switch (i)
136 {
137 case 0:
138 return "0";
139 case 1:
140 return "1";
141 case 2:
142 return "2";
143 case 3:
144 return "3";
145 case 4:
146 return "4";
147 default:
148 return 0;
149 }
150}