summaryrefslogtreecommitdiffstats
path: root/binutils-2.25/gold/testsuite/common_test_1_v1.c
diff options
context:
space:
mode:
Diffstat (limited to 'binutils-2.25/gold/testsuite/common_test_1_v1.c')
-rw-r--r--binutils-2.25/gold/testsuite/common_test_1_v1.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/binutils-2.25/gold/testsuite/common_test_1_v1.c b/binutils-2.25/gold/testsuite/common_test_1_v1.c
new file mode 100644
index 00000000..86abc402
--- /dev/null
+++ b/binutils-2.25/gold/testsuite/common_test_1_v1.c
@@ -0,0 +1,79 @@
+/* common_test_1_v1.c -- test common symbol sorting
+
+ Copyright 2008, 2011 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 is a test of a common symbol in the main program and a
+ versioned symbol in a shared library. The common symbol in the
+ main program should override the shared library symbol.
+
+ This file is a modified version of the real test case, to be used
+ while testing the --incremental option. */
+
+#include <assert.h>
+
+/* Common symbols should be sorted by size, largest first, and then by
+ alignment, largest first. We mix up the names, because gas seems
+ to sort common symbols roughly by name. */
+
+int c9[90];
+int c8[80];
+int c7[70];
+int c6[60];
+int c5[10];
+int c4[20];
+int c3[30];
+int c2[40];
+int c1[50];
+
+int a1 __attribute__ ((aligned (1 << 9)));
+int a2 __attribute__ ((aligned (1 << 8)));
+int a3 __attribute__ ((aligned (1 << 7)));
+int a4 __attribute__ ((aligned (1 << 6)));
+int a5 __attribute__ ((aligned (1 << 1)));
+int a6 __attribute__ ((aligned (1 << 2)));
+int a7 __attribute__ ((aligned (1 << 3)));
+int a8 __attribute__ ((aligned (1 << 4)));
+int a9 __attribute__ ((aligned (1 << 5)));
+
+int
+main (int argc __attribute__ ((unused)), char** argv __attribute__ ((unused)))
+{
+ /* These tests are deliberately incorrect. */
+ assert (c5 < c4);
+ assert (c4 < c3);
+ assert (c3 < c2);
+ assert (c2 < c1);
+ assert (c1 < c6);
+ assert (c6 < c7);
+ assert (c7 < c8);
+ assert (c8 < c9);
+
+ assert (&a1 > &a2);
+ assert (&a2 > &a3);
+ assert (&a3 > &a4);
+ assert (&a4 > &a9);
+ assert (&a9 > &a8);
+ assert (&a8 > &a7);
+ assert (&a7 > &a6);
+ assert (&a6 > &a5);
+
+ return 0;
+}