diff options
author | Ben Cheng <bccheng@google.com> | 2012-09-10 17:28:19 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2012-09-10 17:28:19 -0700 |
commit | 112525715ec3dab782959ebe19f96f4454ec405c (patch) | |
tree | 75bd54b67f8356b54904cf95a7135a87945b301e /binutils-2.22/gold/testsuite/initpri2.c | |
parent | 68ba60c0e44c1187cb582474ebb001d95a7170f6 (diff) | |
download | toolchain_binutils-112525715ec3dab782959ebe19f96f4454ec405c.zip toolchain_binutils-112525715ec3dab782959ebe19f96f4454ec405c.tar.gz toolchain_binutils-112525715ec3dab782959ebe19f96f4454ec405c.tar.bz2 |
Initial checkin of unmodified binutils 2.22.
Change-Id: I8c1bf4cf62df8eb16439021f1a1bac6437f5c470
Diffstat (limited to 'binutils-2.22/gold/testsuite/initpri2.c')
-rw-r--r-- | binutils-2.22/gold/testsuite/initpri2.c | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/binutils-2.22/gold/testsuite/initpri2.c b/binutils-2.22/gold/testsuite/initpri2.c new file mode 100644 index 0000000..525661f --- /dev/null +++ b/binutils-2.22/gold/testsuite/initpri2.c @@ -0,0 +1,118 @@ +/* initpri2.c -- test mixing init_array and ctor priorities. + + Copyright 2011 Free Software Foundation, Inc. + Copied from the gcc configury, where the test was contributed by + H.J. Lu <hongjiu.lu@intel.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 that the linker correctly combines .ctor and .init_array + sections when both have priorities. */ + +#include <stdlib.h> + +static int count; + +static void +init1005 (void) +{ + if (count != 0) + abort (); + count = 1005; +} +void (*const init_array1005[]) (void) + __attribute__ ((section (".init_array.01005"), aligned (sizeof (void *)))) + = { init1005 }; +static void +fini1005 (void) +{ + if (count != 1005) + abort (); +} +void (*const fini_array1005[]) (void) + __attribute__ ((section (".fini_array.01005"), aligned (sizeof (void *)))) + = { fini1005 }; + +static void +ctor1007 (void) +{ + if (count != 1005) + abort (); + count = 1007; +} +void (*const ctors1007[]) (void) + __attribute__ ((section (".ctors.64528"), aligned (sizeof (void *)))) + = { ctor1007 }; +static void +dtor1007 (void) +{ + if (count != 1007) + abort (); + count = 1005; +} +void (*const dtors1007[]) (void) + __attribute__ ((section (".dtors.64528"), aligned (sizeof (void *)))) + = { dtor1007 }; + +static void +init65530 (void) +{ + if (count != 1007) + abort (); + count = 65530; +} +void (*const init_array65530[]) (void) + __attribute__ ((section (".init_array.65530"), aligned (sizeof (void *)))) + = { init65530 }; +static void +fini65530 (void) +{ + if (count != 65530) + abort (); + count = 1007; +} +void (*const fini_array65530[]) (void) + __attribute__ ((section (".fini_array.65530"), aligned (sizeof (void *)))) + = { fini65530 }; + +static void +ctor65535 (void) +{ + if (count != 65530) + abort (); + count = 65535; +} +void (*const ctors65535[]) (void) + __attribute__ ((section (".ctors"), aligned (sizeof (void *)))) + = { ctor65535 }; +static void +dtor65535 (void) +{ + if (count != 65535) + abort (); + count = 65530; +} +void (*const dtors65535[]) (void) + __attribute__ ((section (".dtors"), aligned (sizeof (void *)))) + = { dtor65535 }; + +int +main (void) +{ + return 0; +} |