aboutsummaryrefslogtreecommitdiff
path: root/gold/testsuite/two_file_test_1.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-09-23 05:35:51 +0000
committerIan Lance Taylor <iant@google.com>2007-09-23 05:35:51 +0000
commit3bd52c2885dc3ed71bce8b94989e6b53914f9337 (patch)
tree968b1508d27cf968ee2605442701bf257d91115a /gold/testsuite/two_file_test_1.cc
parentab5c9e90a6d088f6b09bdc8f6bee09c911789df6 (diff)
downloadgdb-3bd52c2885dc3ed71bce8b94989e6b53914f9337.zip
gdb-3bd52c2885dc3ed71bce8b94989e6b53914f9337.tar.gz
gdb-3bd52c2885dc3ed71bce8b94989e6b53914f9337.tar.bz2
Add two file test.
Diffstat (limited to 'gold/testsuite/two_file_test_1.cc')
-rw-r--r--gold/testsuite/two_file_test_1.cc168
1 files changed, 168 insertions, 0 deletions
diff --git a/gold/testsuite/two_file_test_1.cc b/gold/testsuite/two_file_test_1.cc
new file mode 100644
index 0000000..8857db4
--- /dev/null
+++ b/gold/testsuite/two_file_test_1.cc
@@ -0,0 +1,168 @@
+// two_file_test_1.cc -- a two file test case for gold, file 1 of 2
+
+// Copyright 2006, 2007 Free Software Foundation, Inc.
+// Written by Ian Lance Taylor <iant@google.com>.
+
+// This file is part of gold.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+// MA 02110-1301, USA.
+
+// This tests references between files. This is file 1, and
+// two_file_test_2.cc is file 2. We test in several different ways:
+
+// Files 1 and 2 linked together in executable.
+// File 1 in executable, file 2 in shared library.
+// File 1 in shared library, file 2 in executable.
+// Files 1 and 2 linked together in shared library.
+// Files 1 and 2 in different shared libraries.
+
+// We test the following cases.
+
+// 1 Code in file 1 calls code in file 2.
+// 2 Code in file 1 refers to global data in file 2.
+// 3 Code in file 1 referes to common symbol in file 2.
+// 4 Code in file 1 refers to offset within global data in file 2.
+// 5 Code in file 1 refers to offset within common symbol in file 2.
+// 6 Data in file 1 refers to global data in file 2.
+// 7 Data in file 1 refers to common symbol in file 2.
+// 8 Data in file 1 refers to offset within global data in file 2.
+// 9 Data in file 1 refers to offset within common symbol in file 2.
+// 10 Data in file 1 refers to function in file 2.
+// 11 Pass function pointer from file 1 to file 2.
+// 12 Compare address of function for equality in both files.
+// 13 Compare address of inline function for equality in both files.
+
+#include "two_file_test.h"
+
+// 1 Code in file 1 calls code in file 2.
+
+bool
+t1()
+{
+ return t1_2() == 123;
+}
+
+// 2 Code in file 1 refers to global data in file 2.
+
+bool
+t2()
+{
+ return v2 == 456;
+}
+
+// 3 Code in file 1 referes to common symbol in file 2.
+
+bool
+t3()
+{
+ return v3 == 789;
+}
+
+// 4 Code in file 1 refers to offset within global data in file 2.
+
+bool
+t4()
+{
+ return v4[5] == ',';
+}
+
+// 5 Code in file 1 refers to offset within common symbol in file 2.
+
+bool
+t5()
+{
+ return v5[7] == 'w';
+}
+
+// 6 Data in file 1 refers to global data in file 2.
+
+int* p6 = &v2;
+
+bool
+t6()
+{
+ return *p6 == 456;
+}
+
+// 7 Data in file 1 refers to common symbol in file 2.
+
+int* p7 = &v3;
+
+bool
+t7()
+{
+ return *p7 == 789;
+}
+
+// 8 Data in file 1 refers to offset within global data in file 2.
+
+char* p8 = &v4[6];
+
+bool
+t8()
+{
+ return *p8 == ' ';
+}
+
+// 9 Data in file 1 refers to offset within common symbol in file 2.
+
+char* p9 = &v5[8];
+
+bool
+t9()
+{
+ return *p9 == 'o';
+}
+
+// 10 Data in file 1 refers to function in file 2.
+
+int (*pfn)() = &f10;
+
+bool
+t10()
+{
+ return (*pfn)() == 135;
+}
+
+// 11 Pass function pointer from file 1 to file 2.
+
+int
+f11a()
+{
+ return 246;
+}
+
+bool
+t11()
+{
+ return f11b(&f11a) == 246;
+}
+
+// 12 Compare address of function for equality in both files.
+
+bool
+t12()
+{
+ return &t12 == f12();
+}
+
+// 13 Compare address of inline function for equality in both files.
+
+bool
+t13()
+{
+ return &f13i == f13();
+}