~ubuntu-branches/ubuntu/utopic/binutils-arm64-cross/utopic

« back to all changes in this revision

Viewing changes to binutils-2.23.52.20130611/gold/testsuite/dwp_test_2.cc

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-06-20 17:38:09 UTC
  • Revision ID: package-import@ubuntu.com-20130620173809-app8lzgvymy5fg6c
Tags: 0.7
Build-depend on binutils-source (>= 2.23.52.20130620-1~).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// dwp_test_2.cc -- a test case for dwp
 
2
 
 
3
// Copyright 2012 Free Software Foundation, Inc.
 
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_2.cc.
 
24
 
 
25
#include "dwp_test.h"
 
26
 
 
27
// 1  Code in file 1 calls code in file 2.
 
28
 
 
29
int
 
30
C1::t1_2()
 
31
{
 
32
  return 123;
 
33
}
 
34
 
 
35
bool
 
36
C1::t1a()
 
37
{
 
38
  return t1_2() == 123;
 
39
}
 
40
 
 
41
// 2  Code in file 1 refers to global data in file 2.
 
42
 
 
43
int v2 = 456;
 
44
 
 
45
// 3 Code in file 1 referes to common symbol in file 2.  This is
 
46
// initialized at runtime to 789.
 
47
 
 
48
int v3;
 
49
 
 
50
// 4  Code in file 1 refers to offset within global data in file 2.
 
51
 
 
52
char v4[] = "Hello, world";
 
53
 
 
54
// 5 Code in file 1 refers to offset within common symbol in file 2.
 
55
// This is initialized at runtime to a copy of v4.
 
56
 
 
57
char v5[13];
 
58
 
 
59
// 6  Data in file 1 refers to global data in file 2.  This reuses v2.
 
60
 
 
61
// 7  Data in file 1 refers to common symbol in file 2.  This reuses v3.
 
62
 
 
63
// 8 Data in file 1 refers to offset within global data in file 2.
 
64
// This reuses v4.
 
65
 
 
66
// 9 Data in file 1 refers to offset within common symbol in file 2.
 
67
// This reuses v5.
 
68
 
 
69
// 10 Data in file 1 refers to function in file 2.
 
70
 
 
71
int
 
72
f10()
 
73
{
 
74
  return 135;
 
75
}
 
76
 
 
77
// 11 Pass function pointer from file 1 to file 2.
 
78
 
 
79
int
 
80
f11b(int (*pfn)())
 
81
{
 
82
  return (*pfn)();
 
83
}
 
84
 
 
85
// 12 Compare address of function for equality in both files.
 
86
 
 
87
bool
 
88
(*C3::f4())()
 
89
{
 
90
  return &t12;
 
91
}
 
92
 
 
93
// 13 Compare address of inline function for equality in both files.
 
94
 
 
95
void
 
96
(*f13())()
 
97
{
 
98
  return &f13i;
 
99
}
 
100
 
 
101
// 14 Compare string constants in file 1 and file 2.
 
102
 
 
103
const char*
 
104
f14()
 
105
{
 
106
  return TEST_STRING_CONSTANT;
 
107
}
 
108
 
 
109
// 15 Compare wide string constants in file 1 and file 2.
 
110
 
 
111
const wchar_t*
 
112
f15()
 
113
{
 
114
  return TEST_WIDE_STRING_CONSTANT;
 
115
}
 
116
 
 
117
// 17 File 1 checks array of string constants defined in file 2.
 
118
 
 
119
const char* t17data[T17_COUNT] =
 
120
{
 
121
  "a", "b", "c", "d", "e"
 
122
};
 
123
 
 
124
// 18 File 1 checks string constants referenced directly in file 2.
 
125
 
 
126
const char*
 
127
f18(int i)
 
128
{
 
129
  switch (i)
 
130
    {
 
131
    case 0:
 
132
      return "a";
 
133
    case 1:
 
134
      return "b";
 
135
    case 2:
 
136
      return "c";
 
137
    case 3:
 
138
      return "d";
 
139
    case 4:
 
140
      return "e";
 
141
    default:
 
142
      return 0;
 
143
    }
 
144
}