OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/gnu-stable/binutils-2.20.1/gold/testsuite
    from Rev 816 to Rev 818
    Reverse comparison

Rev 816 → Rev 818

/hidden_test_main.c
0,0 → 1,61
/* hidden_test_main.c -- test hidden and internal symbols
 
Copyright 2009 Free Software Foundation, Inc.
Written by Cary Coutant <ccoutant@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 symbols of various visibilities in the main program
and attempts to reference those symbols from a shared library.
The linker should issue an error message for references to hidden
and internal symbols. */
 
extern void lib1 (void);
 
void main_default (void);
void main_hidden (void);
void main_internal (void);
void main_protected (void);
 
void __attribute__((visibility ("default")))
main_default (void)
{
}
 
void __attribute__((visibility ("hidden")))
main_hidden (void)
{
}
 
void __attribute__((visibility ("internal")))
main_internal (void)
{
}
 
void __attribute__((visibility ("protected")))
main_protected (void)
{
}
 
int
main (int argc __attribute__ ((unused)),
char** argv __attribute__ ((unused)))
{
lib1 ();
return 0;
}
/weak_plt.sh
0,0 → 1,28
#!/bin/sh
 
# weak_plt.sh -- test calling a weak undefined function.
 
# Copyright 2008 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 a call to a weak undefined function. We use LD_PRELOAD
# to force the function to be defined.
 
LD_PRELOAD=./weak_plt_shared.so ./weak_plt
weak_plt.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: split_x86_64.sh =================================================================== --- split_x86_64.sh (nonexistent) +++ split_x86_64.sh (revision 818) @@ -0,0 +1,54 @@ +#!/bin/sh + +# split_x86_64.sh -- test -fstack-split for x86_64 + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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. + +match() +{ + if ! egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "could not find '$1' in $2" + exit 1 + fi +} + +nomatch() +{ + if egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "found unexpected '$1' in $2" + exit 1 + fi +} + +match 'cmp.*+%fs:[^,]*,%rsp' split_x86_64_1.stdout +match 'callq.*__morestack>?$' split_x86_64_1.stdout +match 'lea.*-0x200\(%rsp\),' split_x86_64_1.stdout + +match 'stc' split_x86_64_2.stdout +match 'callq.*__morestack_non_split>?$' split_x86_64_2.stdout +nomatch 'callq.*__morestack>?$' split_x86_64_2.stdout +match 'lea.*-0x4200\(%rsp\),' split_x86_64_2.stdout + +match 'failed to match' split_x86_64_3.stdout + +match 'callq.*__morestack>?$' split_x86_64_4.stdout + +match 'cannot mix' split_x86_64_r.stdout
split_x86_64.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: icf_test.cc =================================================================== --- icf_test.cc (nonexistent) +++ icf_test.cc (revision 818) @@ -0,0 +1,51 @@ +// icf_test.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// 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. + +// The goal of this program is to verify if identical code folding +// correctly identifies and folds functions. folded_func must be +// folded into kept_func. + +int common() +{ + return 1; +} + +int kept_func() +{ + common(); + // Recursive call. + kept_func(); + return 1; +} + +int folded_func() +{ + common(); + // Recursive call. + folded_func(); + return 1; +} + +int main() +{ + return 0; +} Index: tls_test.cc =================================================================== --- tls_test.cc (nonexistent) +++ tls_test.cc (revision 818) @@ -0,0 +1,224 @@ +// tls_test.cc -- test TLS variables for gold + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 provides a set of test functions for TLS variables. The +// functions are called by a main function in tls_test_main.cc. This +// lets us test TLS access from a shared library. We currently don't +// bother to test TLS access between two different files, on the +// theory that that is no more complicated than ordinary variable +// access between files. + +// We start two threads, and stop the second one. Then we run the +// first thread through the following cases. Then we let the second +// thread continue, and run it through the same set of cases. All the +// actual thread manipulation is in tls_test_main.cc. + +// 1 Access to an uninitialized global thread variable. +// 2 Access to an uninitialized static thread variable. +// 3 Access to an initialized global thread variable. +// 4 Access to an initialized static thread variable. +// 5 Taking the address of a global thread variable. +// 6 Taking the address of a static thread variable. +// 8 Like test 1, but with the thread variable defined in another file. +// 9 Like test 3, but with the thread variable defined in another file. +// 10 Like test 5, but with the thread variable defined in another file. +// last Verify that the above tests left the variables set correctly. + + +#include +#include "config.h" +#include "tls_test.h" + +#define CHECK_EQ_OR_RETURN(var, expected) \ + do \ + { \ + if ((var) != (expected)) \ + { \ + printf(#var ": expected %d, found %d\n", expected, var); \ + return false; \ + } \ + } \ + while (0) + +__thread int v1; +static __thread int v2; + +// We don't use these pointers, but putting them in tests alignment on +// a 64-bit target. +__thread char* p1; +char dummy; +__thread char* p2 = &dummy; + +__thread int v3 = 3; +static __thread int v4 = 4; +__thread int v5; +static __thread int v6; + +struct int128 +{ + long long hi; + long long lo; +}; + +static __thread struct int128 v12 = { 115, 125 }; + +bool +t1() +{ + CHECK_EQ_OR_RETURN(v1, 0); + v1 = 10; + return true; +} + +bool +t2() +{ + CHECK_EQ_OR_RETURN(v2, 0); + v2 = 20; + return true; +} + +bool +t3() +{ + CHECK_EQ_OR_RETURN(v3, 3); + v3 = 30; + return true; +} + +bool +t4() +{ + CHECK_EQ_OR_RETURN(v4, 4); + v4 = 40; + return true; +} + +// For test 5 the main function calls f5b(f5a()), then calls t5(). + +int* +f5a() +{ + return &v5; +} + +void +f5b(int* p) +{ + *p = 50; +} + +bool +t5() +{ + CHECK_EQ_OR_RETURN(v5, 50); + return true; +} + +// For test 6 the main function calls f6b(f6a()), then calls t6(). + +int* +f6a() +{ + return &v6; +} + +void +f6b(int* p) +{ + *p = 60; +} + +bool +t6() +{ + CHECK_EQ_OR_RETURN(v6, 60); + return true; +} + +// The slot for t7() is unused. + +bool +t8() +{ + CHECK_EQ_OR_RETURN(o1, 0); + o1 = -10; + return true; +} + +bool +t9() +{ + CHECK_EQ_OR_RETURN(o2, -2); + o2 = -20; + return true; +} + +// For test 10 the main function calls f10b(f10a()), then calls t10(). + +int* +f10a() +{ + return &o3; +} + +void +f10b(int* p) +{ + *p = -30; +} + +bool +t10() +{ + CHECK_EQ_OR_RETURN(o3, -30); + return true; +} + +bool +t12() +{ + struct int128 newval = { 335, 345 }; + CHECK_EQ_OR_RETURN((int) v12.hi, 115); + CHECK_EQ_OR_RETURN((int) v12.lo, 125); + v12 = newval; + return true; +} + +bool +t_last() +{ + CHECK_EQ_OR_RETURN(v1, 10); + CHECK_EQ_OR_RETURN(v2, 20); + CHECK_EQ_OR_RETURN(v3, 30); + CHECK_EQ_OR_RETURN(v4, 40); + CHECK_EQ_OR_RETURN(v5, 50); + CHECK_EQ_OR_RETURN(v6, 60); + CHECK_EQ_OR_RETURN((int) v12.hi, 335); + CHECK_EQ_OR_RETURN((int) v12.lo, 345); + CHECK_EQ_OR_RETURN(o1, -10); + CHECK_EQ_OR_RETURN(o2, -20); + CHECK_EQ_OR_RETURN(o3, -30); + int check = t11_last(); + CHECK_EQ_OR_RETURN(check, 1); + return true; +} Index: exception_test_main.cc =================================================================== --- exception_test_main.cc (nonexistent) +++ exception_test_main.cc (revision 818) @@ -0,0 +1,35 @@ +// exception_test_main.cc -- an exception test case for gold, main function + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 the main file. See +// two_file_test_1.cc for details. + +#include + +#include "exception_test.h" + +int +main() +{ + assert(t1()); + return 0; +} Index: ver_test_8.script =================================================================== --- ver_test_8.script (nonexistent) +++ ver_test_8.script (revision 818) @@ -0,0 +1,26 @@ +## ver_test_8.script -- a test case for gold + +## Copyright 2008 Free Software Foundation, Inc. +## Written by Ian Lance Taylor + +## 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. + +VER_TEST_8 { + global: + *; +}; Index: common_test_1.c =================================================================== --- common_test_1.c (nonexistent) +++ common_test_1.c (revision 818) @@ -0,0 +1,75 @@ +/* common_test_1.c -- test common symbol sorting + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + 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. */ + +#include + +/* 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))) +{ + 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; +} Index: dynamic_list.sh =================================================================== --- dynamic_list.sh (nonexistent) +++ dynamic_list.sh (revision 818) @@ -0,0 +1,50 @@ +#!/bin/sh + +# dynamic_list.sh -- test --dynamic-list and --dynamic-list-* + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with dynamic_list.t, which is a dynamic-list script. + +check() +{ + if ! grep -qw "$2" "$1" + then + echo "Did not find expected text in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check dynamic_list.stdout "main" # comes via --dynamic-list +check dynamic_list.stdout "_ZdlPv" # "operator delete(void*)" +check dynamic_list.stdout "_Z4t1_6v" # t1_6() +check dynamic_list.stdout "_ZN4t16aC2Ev" # t16a:t16a() +check dynamic_list.stdout "_ZN4t16aD1Ev" # t16a:~t16a() +check dynamic_list.stdout "_ZN4t16a1tEv" # t16a:t() +check dynamic_list.stdout "_ZTI4t16a" # typeinfo for t16a +check dynamic_list.stdout "_ZTI4t16b" # typeinfo for t16b +check dynamic_list.stdout "_ZTS4t16a" # typeinfo name for t16a +check dynamic_list.stdout "_ZTS4t16b" # typeinfo name for t16b +check dynamic_list.stdout "t20v" # comes via --dynamic-list-data
dynamic_list.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: weak_undef_test.cc =================================================================== --- weak_undef_test.cc (nonexistent) +++ weak_undef_test.cc (revision 818) @@ -0,0 +1,89 @@ +// weak_undef_test.cc -- test handling of weak undefined symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +// We test that we correctly deal with weak undefined symbols. +// We need to make sure that a weak undefined symbol in the main +// program is resolved to zero by the linker and that no dynamic +// relocation is generated. We also make sure that a weak undefined +// symbol in a shared library can resolve to a symbol in the main +// program. + +// This file will be linked with a shared library that does not +// define the symbol, so that the symbol remains undefined. +// Through the use of LD_LIBRARY_PATH, the program will load +// an alternate shared library that does define the symbol, +// so that we can detect whether the symbol was left for runtime +// resolution. + + +#include +#include "weak_undef.h" + +extern int no_such_symbol_ __attribute__ ((weak)); + +int *p1 = &no_such_symbol_; + +int v2 = 42; + +int +main() +{ + int status = 0; + int v; + + if ((v = t1()) != 2) + { + fprintf(stderr, "FAILED weak undef test 1: %s\n", + "bound to wrong library"); + status = 1; + } + + if ((v = t2()) != 42) + { + fprintf(stderr, "FAILED weak undef test 2: expected %d, got %d\n", + 42, v); + status = 1; + } + + if ((v = t3()) != 42) + { + fprintf(stderr, "FAILED weak undef test 3: expected %d, got %d\n", + 42, v); + status = 1; + } + + if (&no_such_symbol_ != NULL) + { + fprintf(stderr, "FAILED weak undef test 4: %s\n", + "&no_such_symbol_ is not NULL"); + status = 1; + } + + if (p1 != NULL) + { + fprintf(stderr, "FAILED weak undef test 5: %s\n", + "p1 is not NULL"); + status = 1; + } + + return status; +} Index: protected_1.cc =================================================================== --- protected_1.cc (nonexistent) +++ protected_1.cc (revision 818) @@ -0,0 +1,33 @@ +// protected_1.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// The function f1 is protected, which means that other callers in the +// same shared library will call this version. + +int +f1() __attribute__ ((__visibility__ ("protected"))); + +int +f1() +{ + return 1; +} Index: ver_test_1.cc =================================================================== --- ver_test_1.cc (nonexistent) +++ ver_test_1.cc (revision 818) @@ -0,0 +1,33 @@ +// ver_test_1.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +#include "ver_test.h" + +// Calls an unversioned function in file1 that overrides +// a versioned function in file2. + +bool +t1() +{ + TRACE + return t1_2() == 11; +} Index: searched_file_test.cc =================================================================== --- searched_file_test.cc (nonexistent) +++ searched_file_test.cc (revision 818) @@ -0,0 +1,36 @@ +// searched_file_test.cc -- test -l:foo.a for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Chris Demetriou . + +// 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. + +// The Linux kernel builds an object file using a linker script, and +// then links against that object file using the -R option. This is a +// test for that usage. + +#include + +extern int zero_from_lib; + +int +main(int, char**) +{ + exit(zero_from_lib); +} + Index: exclude_libs_test_3.c =================================================================== --- exclude_libs_test_3.c (nonexistent) +++ exclude_libs_test_3.c (revision 818) @@ -0,0 +1,24 @@ +void lib3_default (void); +void lib3_hidden (void); +void lib3_internal (void); +void lib3_protected (void); + +void __attribute__((visibility ("default"))) +lib3_default (void) +{ +} + +void __attribute__((visibility ("hidden"))) +lib3_hidden (void) +{ +} + +void __attribute__((visibility ("internal"))) +lib3_internal (void) +{ +} + +void __attribute__((visibility ("protected"))) +lib3_protected (void) +{ +} Index: ver_test_9.cc =================================================================== --- ver_test_9.cc (nonexistent) +++ ver_test_9.cc (revision 818) @@ -0,0 +1,50 @@ +// ver_test_9.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include "ver_test.h" + +bool +t1() +{ + return true; +} + +int +t2_2() +{ + TRACE + return 22; +} + +int +t3_2() +{ + TRACE + return 12; +} + +int +t4_2() +{ + TRACE + return 42; +} Index: icf_test.sh =================================================================== --- icf_test.sh (nonexistent) +++ icf_test.sh (revision 818) @@ -0,0 +1,40 @@ +#!/bin/sh + +# icf_test.sh -- test --icf + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# 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. + +# The goal of this program is to verify if icf works as expected. +# File icf_test.cc is in this test. This program checks if the +# identical sections are correctly folded. + +check() +{ + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 != $func_addr_2 ] + then + echo "Identical Code Folding failed to fold" $2 "and" $3 + exit 1 + fi +} + +check icf_test.stdout "folded_func" "kept_func"
icf_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: script_test_5.cc =================================================================== --- script_test_5.cc (nonexistent) +++ script_test_5.cc (revision 818) @@ -0,0 +1,45 @@ +// script_test_5.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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 program checks that the default renaming of ".text.xxx" +// sections does not take place in the presence of a linker script +// with a SECTIONS clause. + +bool +t1() __attribute__ ((section (".text.foo"))); + +bool +t1() +{ + return 1; +} + +// Main function. Initialize variables and call test functions. + +int +main() +{ + if (t1()) + return 0; + else + return 1; +} Index: split_i386.sh =================================================================== --- split_i386.sh (nonexistent) +++ split_i386.sh (revision 818) @@ -0,0 +1,54 @@ +#!/bin/sh + +# split_i386.sh -- test -fstack-split for i386 + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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. + +match() +{ + if ! egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "could not find '$1' in $2" + exit 1 + fi +} + +nomatch() +{ + if egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "found unexpected '$1' in $2" + exit 1 + fi +} + +match 'cmp.*+%gs:[^,]*,%esp' split_i386_1.stdout +match 'call.*__morestack>?$' split_i386_1.stdout +match 'lea.*-0x200\(%esp\),' split_i386_1.stdout + +match 'stc' split_i386_2.stdout +match 'call.*__morestack_non_split>?$' split_i386_2.stdout +nomatch 'call.*__morestack>?$' split_i386_2.stdout +match 'lea.*-0x4200\(%esp\),' split_i386_2.stdout + +match 'failed to match' split_i386_3.stdout + +match 'call.*__morestack>?$' split_i386_4.stdout + +match 'cannot mix' split_i386_r.stdout
split_i386.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: copy_test_2.cc =================================================================== --- copy_test_2.cc (nonexistent) +++ copy_test_2.cc (revision 818) @@ -0,0 +1,23 @@ +// copy_test_2.cc -- test copy relocs variables for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +long long l = 2; Index: undef_symbol_main.cc =================================================================== --- undef_symbol_main.cc (nonexistent) +++ undef_symbol_main.cc (revision 818) @@ -0,0 +1,29 @@ +// undef_symbol_1.cc -- a test case for undefined references + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// Main function for undefined symbol test. + +int +main() +{ + return 0; +} Index: ver_matching_test.sh =================================================================== --- ver_matching_test.sh (nonexistent) +++ ver_matching_test.sh (revision 818) @@ -0,0 +1,88 @@ +#!/bin/sh + +# ver_matching_test.sh -- a test case for version script matching + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with ver_matching_def.cc, a C++ source file +# constructed with several symbols mapped via version_script.map. We +# run readelf on the resulting shared object and check that each +# symbol has the correct version. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_missing() +{ + if grep -q "$2" "$1" + then + echo "Found unexpected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_matching_test.stdout "V1 *sizeof_headers$" +check ver_matching_test.stdout "Base *globaoeufostuff$" +check ver_matching_test.stdout "V1 *globaoeufxstuff$" +check ver_matching_test.stdout "V2 *otherns::stuff$" +check ver_matching_test.stdout "Base *otherns::biz$" +check ver_matching_test.stdout "V1 *foo$" +check ver_matching_test.stdout "V1 *bar()$" +check ver_matching_test.stdout "Base *bar1()$" +check ver_matching_test.stdout "V1 *bar2$" +check ver_matching_test.stdout "V1 *myns::blah()$" +check ver_matching_test.stdout "V1 *myns::bip()$" +check ver_matching_test.stdout "V1 *myns::Stuff::Stuff()$" +check ver_matching_test.stdout "Base *Biz::Biz()$" +check ver_matching_test.stdout "V1 *blaza1$" +check ver_matching_test.stdout "V2 *blaza2$" +check ver_matching_test.stdout "V1 *blaza$" +check ver_matching_test.stdout "Base *bla$" +check ver_matching_test.stdout "V2 *blaz$" +check ver_matching_test.stdout "V2 *blazb$" + +# Stuff inside quotes is matched literally, so "baz(int*, char)" should +# not match the "baz(int *)" entry in the version table. +check ver_matching_test.stdout "V1 *baz(int\\*)$" +check_missing ver_matching_test.stdout "V1 *baz(int\\*, char)$" +check_missing ver_matching_test.stdout "V1 *baz(char\\*, int)$" + +check_missing ver_matching_test.stdout "foo1" + +# This symbols is injected by the linker itself, but should still +# follow local: +check_missing ver_matching_test.stdout "__bss_start" + +exit 0
ver_matching_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: initpri1.c =================================================================== --- initpri1.c (nonexistent) +++ initpri1.c (revision 818) @@ -0,0 +1,105 @@ +/* initpri1.c -- test constructor priorities. + + Copyright 2007, 2008, 2009 Free Software Foundation, Inc. + Copied from the gcc testsuite, where the test was contributed by + Mark Mitchell . + + 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 handles constructor and destructor + priorities correctly. */ + +#include + +/* Constructor priorities in attributes were added in gcc 4.3. */ +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) + +int i; +int j; + +void c1(void) __attribute__((constructor (500))); +void c2(void) __attribute__((constructor (700))); +void c3(void) __attribute__((constructor (600))); + +void c1() { + if (i++ != 0) + abort (); +} + +void c2() { + if (i++ != 2) + abort (); +} + +void c3() { + if (i++ != 1) + abort (); +} + +void d1(void) __attribute__((destructor (500))); +void d2(void) __attribute__((destructor (700))); +void d3(void) __attribute__((destructor (600))); + +void d1() { + if (--i != 0) + abort (); +} + +void d2() { + if (--i != 2) + abort (); +} + +void d3() { + if (j != 4) + abort (); + if (--i != 1) + abort (); +} + +void cd4(void) __attribute__((constructor (800), destructor (800))); + +void cd4() { + if (i != 3) + abort (); + ++j; +} + +void cd5(void) __attribute__((constructor, destructor)); + +void cd5() { + if (i != 3) + abort(); + ++j; +} + +int main (void) { + if (i != 3) + return 1; + if (j != 2) + abort (); + return 0; +} + +#else /* !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) */ + +int main (void) { + exit (0); +} + +#endif /* !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) */ Index: debug_msg.cc =================================================================== --- debug_msg.cc (nonexistent) +++ debug_msg.cc (revision 818) @@ -0,0 +1,79 @@ +// debug_msg.cc -- a test case for printing debug info for missing symbols. + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 file is constructed to have undefined references. In +// debug_msg.sh, we will try to link this file, and analyze the +// error messages that are produced. + +extern int undef_int; +extern float undef_float; +extern void undef_fn1(); +extern void undef_fn2(); + +int* badref1 = &undef_int; +static float* badref2 = &undef_float; +void (*fn_array[])() = +{ + undef_fn1, + undef_fn2 +}; + +template +int testfn(Foo x) +{ + undef_fn1(); + undef_fn2(); + return undef_int; +} + +class Base +{ + virtual void virtfn() { undef_fn1(); } +}; + +class Derived : public Base +{ + virtual void virtfn() { undef_fn2(); } +}; + +// This tests One Definition Rule (ODR) violations. +void SortAscending(int array[], int size); // in odr_violation1.cc +void SortDescending(int array[], int size); // in odr_violation2.cc + +int main() +{ + testfn(5); + testfn(4.0); + + Base b; + Derived d; + + int kInput1[] = {1, 6, 9, 7, 3, 4, 2, 10, 5, 8}; + int kSize1 = sizeof(kInput1) / sizeof(int); + SortAscending(kInput1, kSize1); + + int kInput2[] = {1, 6, 9, 7, 3, 4, 2, 10, 5, 8}; + int kSize2 = sizeof(kInput2) / sizeof(int); + SortDescending(kInput2, kSize2); + + return 0; +} Index: split_i386_n.s =================================================================== --- split_i386_n.s (nonexistent) +++ split_i386_n.s (revision 818) @@ -0,0 +1,12 @@ +# split_i386_n.s: i386 specific, -fsplit-stack calling non-split + + .text + + .global fn3 + .type fn3,@function +fn3: + ret + + .size fn3,. - fn3 + + .section .note.GNU-stack,"",@progbits Index: ver_test_1.sh =================================================================== --- ver_test_1.sh (nonexistent) +++ ver_test_1.sh (revision 818) @@ -0,0 +1,30 @@ +#!/bin/sh + +# ver_test_1.sh -- check that protected symbols are local + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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. + +syms=`grep ' HIDDEN ' ver_test_1.syms | grep ' GLOBAL '` +if test -n "$syms"; then + echo "Found GLOBAL HIDDEN symbols" + echo $syms + exit 1 +fi
ver_test_1.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: searched_file_test_lib.cc =================================================================== --- searched_file_test_lib.cc (nonexistent) +++ searched_file_test_lib.cc (revision 818) @@ -0,0 +1,27 @@ +// searched_file_test_lib.cc -- test -l:foo.a for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Chris Demetriou . + +// 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. + +// The Linux kernel builds an object file using a linker script, and +// then links against that object file using the -R option. This is a +// test for that usage. + +int zero_from_lib = 0; Index: script_test_3.t =================================================================== --- script_test_3.t (nonexistent) +++ script_test_3.t (revision 818) @@ -0,0 +1,47 @@ +/* script_test_3.t -- linker script test 3 for gold + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + 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. */ + +SECTIONS +{ + /* With luck this will work everywhere. */ + . = 0x10000000; + + /* With luck this will be enough to get the program working. */ + .interp : { *(.interp) } :text :interp + .text : { *(.text) } :text + . += 0x100000; + . = ALIGN(0x100); + .dynamic : { *(.dynamic) } :data :dynamic + .data : { *(.data) } :data + . += 0x100000; + . = ALIGN(0x100); + .bss : { *(.bss) } :bss +} + +PHDRS +{ + text PT_LOAD FILEHDR PHDRS FLAGS(5); + interp PT_INTERP; + dynamic PT_DYNAMIC FLAGS(4); + data PT_LOAD; + bss PT_LOAD; +} Index: split_i386_3.s =================================================================== --- split_i386_3.s (nonexistent) +++ split_i386_3.s (revision 818) @@ -0,0 +1,22 @@ +# split_i386_3.s: i386 specific, adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + push %ebp + mov %esp,%ebp + cmp %gs:0x30,%esp + jae 1f + call __morestack + ret +1: + call fn3 + leave + ret + + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits Index: gc_comdat_test.sh =================================================================== --- gc_comdat_test.sh (nonexistent) +++ gc_comdat_test.sh (revision 818) @@ -0,0 +1,42 @@ +#!/bin/sh + +# gc_comdat_test.sh -- test --gc-sections + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# 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. + +# The goal of this program is to verify if comdat's and garbage +# collection work together. Files gc_comdat_test_1.cc and +# gc_comdat_test_2.cc are used in this test. This program checks +# if the kept comdat section is garbage collected. + +check() +{ + if grep -q "$2" "$1" + then + echo "Garbage collection failed to collect :" + echo " $2" + exit 1 + fi +} + +check gc_comdat_test.stdout "foo()" +check gc_comdat_test.stdout "bar()" +check gc_comdat_test.stdout "int GetMax(int, int)"
gc_comdat_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: split_x86_64_1.s =================================================================== --- split_x86_64_1.s (nonexistent) +++ split_x86_64_1.s (revision 818) @@ -0,0 +1,33 @@ +# split_x86_64_1.s: x86_64 specific test case for -fsplit-stack. + + .text + + .global fn1 + .type fn1,@function +fn1: + cmp %fs:0x70,%rsp + jae 1f + callq __morestack + retq +1: + callq fn2 + retq + + .size fn1,. - fn1 + + .global fn2 + .type fn2,@function +fn2: + lea -0x200(%rsp),%r10 + cmp %fs:0x70,%r10 + jae 1f + callq __morestack + retq +1: + callq fn1 + retq + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits Index: script_test_5.sh =================================================================== --- script_test_5.sh (nonexistent) +++ script_test_5.sh (revision 818) @@ -0,0 +1,43 @@ +#!/bin/sh + +# script_test_5.sh -- test linker script with uncovered sections + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# 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 file goes with script_test_5.t, which is a linker script with +# a SECTIONS clause that does not explicitly mention one of the input +# sections in the test object file. We check to make sure that the +# correct output section is generated. + +check_count() +{ + if test "`grep -c "$2" "$1"`" != "$3" + then + echo "Did not find expected number ($3) of '$2' sections in $1" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_count script_test_5.stdout ".text " 1 +check_count script_test_5.stdout ".text.foo " 1
script_test_5.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: ver_test_4.cc =================================================================== --- ver_test_4.cc (nonexistent) +++ ver_test_4.cc (revision 818) @@ -0,0 +1,64 @@ +// ver_test_4.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +#include "ver_test.h" + +__asm__(".symver t1_2_a,t1_2@@VER2"); + +extern "C" +int +t1_2_a() +{ + TRACE + return 12; +} + +__asm__(".symver t2_2_a,t2_2@VER1"); + +extern "C" +int +t2_2_a() +{ + TRACE + return 21; +} + +__asm__(".symver t2_2_b,t2_2@@VER2"); + +extern "C" +int +t2_2_b() +{ + TRACE + return 22; +} + + +// This function is given a version by the version script, and should +// be overridden by the main program. + +int +t4_2a() +{ + TRACE + return -42; +} Index: ver_test_main_2.cc =================================================================== --- ver_test_main_2.cc (nonexistent) +++ ver_test_main_2.cc (revision 818) @@ -0,0 +1,32 @@ +// ver_test_main_2.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include + +#include "ver_test.h" + +int +main() +{ + assert(t1_2() == 12); + return 0; +} Index: test.h =================================================================== --- test.h (nonexistent) +++ test.h (revision 818) @@ -0,0 +1,145 @@ +// test.h -- simplistic test framework for gold unittests -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#ifndef GOLD_TESTSUITE_TEST_H +#define GOLD_TESTSUITE_TEST_H + +namespace gold_testsuite +{ + +class Test_report; + +// This class handles basic test framework functionality. + +class Test_framework +{ + public: + Test_framework() + : testname_(NULL), current_fail_(0), passes_(0), failures_(0) + { } + + // Return number of failures. + unsigned int + failures() const + { return this->failures_; } + + // Run a test. + void + run(const char* name, bool (*pfn)(Test_report*)); + + // Get the current Test_report. This is used by the test support + // macros. + static Test_report* + report() + { return Test_framework::current_report; } + + private: + friend class Test_report; + + // Cause the current test to fail. + void + fail(const char* filename, int lineno); + + // Report an error from the current test. + void + error(const char* message); + + // Current Test_report. This is a static variable valid while a + // test is being run. + static Test_report* current_report; + + // Current test being run. + const char* testname_; + // Whether the current test is failing. + bool current_fail_; + // Total number of passeed tests. + unsigned int passes_; + // Total number of failed tests. + unsigned int failures_; +}; + +// An instance of this class is passed to each test function. + +class Test_report +{ +public: + Test_report(Test_framework* tf) + : tf_(tf) + { } + + // Mark the test as failing. + void + fail(const char* filename, int lineno) + { this->tf_->fail(filename, lineno); } + + // Report an error. + void + error(const char* message) + { this->tf_->error(message); } + +private: + Test_framework* tf_; +}; + +// This class registers a test function so that the testsuite runs it. + +class Register_test +{ + public: + Register_test(const char* name, bool (*pfn)(Test_report*)); + + // Run all registered tests. + static void + run_tests(Test_framework*); + + private: + // Linked list of all tests. + static Register_test* all_tests; + + // Test name. + const char* name_; + // Function to call. It should return true if the test passes, + // false if it fails. + bool (*pfn_)(Test_report*); + // Next test in linked list. + Register_test* next_; +}; + +} // End namespace gold_testsuite. + +// These macros are for convenient use in tests. + +// Check that a condition is true. If it is false, report a failure. + +#define CHECK(cond) \ + ((void) \ + ((cond) \ + ? 0 \ + : (::gold_testsuite::Test_framework::report()->fail(__FILE__, \ + __LINE__), \ + 0))) + +// Report an error during a test. + +#define ERROR(msg) (::gold_testsuite::Test_framework::report()->error(msg)) + +#endif // !defined(GOLD_TESTSUITE_TEST_H) Index: debug_msg.sh =================================================================== --- debug_msg.sh (nonexistent) +++ debug_msg.sh (revision 818) @@ -0,0 +1,95 @@ +#!/bin/sh + +# debug_msg.sh -- a test case for printing debug info for missing symbols. + +# Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with debug_msg.cc, a C++ source file constructed to +# have undefined references. We compile that file with debug +# information and then try to link it, and make sure the proper errors +# are displayed. The errors will be found in debug_msg.err. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +check_missing() +{ + if grep -q "$2" "$1" + then + echo "Found unexpected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +# We don't know how the compiler might order these variables, so we +# can't test for the actual offset from .data, hence the regexp. +check debug_msg.err "debug_msg.o: in function fn_array:debug_msg.cc(.data+0x[0-9a-fA-F]*): error: undefined reference to 'undef_fn1()'" +check debug_msg.err "debug_msg.o: in function fn_array:debug_msg.cc(.data+0x[0-9a-fA-F]*): error: undefined reference to 'undef_fn2()'" +check debug_msg.err "debug_msg.o: in function badref1:debug_msg.cc(.data+0x[0-9a-fA-F]*): error: undefined reference to 'undef_int'" + +# These tests check only for the source file's file name (not the complete +# path) because use of -fdebug-prefix-map may change the path to the source +# file recorded in the objects. +check debug_msg.err "debug_msg.o: in function Base::virtfn():.*/debug_msg.cc:50: error: undefined reference to 'undef_fn1()'" +check debug_msg.err "debug_msg.o: in function Derived::virtfn():.*/debug_msg.cc:55: error: undefined reference to 'undef_fn2()'" +check debug_msg.err "debug_msg.o: in function int testfn(int):.*/debug_msg.cc:43: error: undefined reference to 'undef_fn1()'" +check debug_msg.err "debug_msg.o: in function int testfn(int):.*/debug_msg.cc:44: error: undefined reference to 'undef_fn2()'" +check debug_msg.err "debug_msg.o: in function int testfn(int):.*/debug_msg.cc:45: error: undefined reference to 'undef_int'" +check debug_msg.err "debug_msg.o: in function int testfn(double):.*/debug_msg.cc:43: error: undefined reference to 'undef_fn1()'" +check debug_msg.err "debug_msg.o: in function int testfn(double):.*/debug_msg.cc:44: error: undefined reference to 'undef_fn2()'" +check debug_msg.err "debug_msg.o: in function int testfn(double):.*/debug_msg.cc:45: error: undefined reference to 'undef_int'" + +# Check we detected the ODR (One Definition Rule) violation. +check debug_msg.err ": symbol 'Ordering::operator()(int, int)' defined in multiple places (possible ODR violation):" +check debug_msg.err "odr_violation1.cc:5" +check debug_msg.err "odr_violation2.cc:5" + +# When linking together .so's, we don't catch the line numbers, but we +# still find all the undefined variables, and the ODR violation. +check debug_msg_so.err "debug_msg.so: error: undefined reference to 'undef_fn1()'" +check debug_msg_so.err "debug_msg.so: error: undefined reference to 'undef_fn2()'" +check debug_msg_so.err "debug_msg.so: error: undefined reference to 'undef_int'" +check debug_msg_so.err ": symbol 'Ordering::operator()(int, int)' defined in multiple places (possible ODR violation):" +check debug_msg_so.err "odr_violation1.cc:5" +check debug_msg_so.err "odr_violation2.cc:5" + +# These messages shouldn't need any debug info to detect: +check debug_msg_ndebug.err "debug_msg_ndebug.so: error: undefined reference to 'undef_fn1()'" +check debug_msg_ndebug.err "debug_msg_ndebug.so: error: undefined reference to 'undef_fn2()'" +check debug_msg_ndebug.err "debug_msg_ndebug.so: error: undefined reference to 'undef_int'" +# However, we shouldn't detect or declare any ODR violation +check_missing debug_msg_ndebug.err "(possible ODR violation)" + +exit 0
debug_msg.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: weak_alias_test_3.cc =================================================================== --- weak_alias_test_3.cc (nonexistent) +++ weak_alias_test_3.cc (revision 818) @@ -0,0 +1,26 @@ +// weak_alias_test_3.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 linked into the main program. + +extern int weak_symbol __attribute__ ((weak)); +int weak_symbol = 4; Index: binary_test.cc =================================================================== --- binary_test.cc (nonexistent) +++ binary_test.cc (revision 818) @@ -0,0 +1,46 @@ +// binary_test.cc -- test --format binary for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 program is linked with a small text file named binary.txt +// using --formatbinary. + +#include +#include +#include +#include + +extern char _binary_binary_txt_start[]; +extern char _binary_binary_txt_end[]; +extern char _binary_binary_txt_size[]; + +int +main(int, char**) +{ + int size = reinterpret_cast(_binary_binary_txt_size); + assert(size == _binary_binary_txt_end - _binary_binary_txt_start); + + const char* const txt = "This file is used for the binary test.\n"; + assert(strncmp(txt, _binary_binary_txt_start, size) == 0); + assert(static_cast(size) == strlen(txt)); + + return 0; +} Index: relro_script_test.t =================================================================== --- relro_script_test.t (nonexistent) +++ relro_script_test.t (revision 818) @@ -0,0 +1,52 @@ +/* relro_test.t -- relro script test for gold + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + 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. */ + +/* With luck this will work on all platforms. */ + +using_script = 1; + +SECTIONS +{ + . = SIZEOF_HEADERS; + + .text : { *(.text) } + + .eh_frame : ONLY_IF_RO { KEEP(*(.eh_frame)) } + + . = (ALIGN(CONSTANT(MAXPAGESIZE)) + - ((CONSTANT(MAXPAGESIZE) - .) & (CONSTANT(MAXPAGESIZE) - 1))); + . = DATA_SEGMENT_ALIGN(CONSTANT(MAXPAGESIZE), CONSTANT(COMMONPAGESIZE)); + + .eh_frame : ONLY_IF_RW { KEEP(*(.eh_frame)) } + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) + *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + .dynamic : { *(.dynamic) } + .got : { *(.got) } + + . = DATA_SEGMENT_RELRO_END(0, .); + + .data : { *(.data .data.* .gnu.linkonce.d.*) } + + . = DATA_SEGMENT_END (.); +} Index: plugin_test.c =================================================================== --- plugin_test.c (nonexistent) +++ plugin_test.c (revision 818) @@ -0,0 +1,529 @@ +/* test_plugin.c -- simple linker plugin test + + Copyright 2008, 2009 Free Software Foundation, Inc. + Written by Cary Coutant . + + 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. */ + +#include +#include +#include +#include "plugin-api.h" + +struct claimed_file +{ + const char* name; + void* handle; + int nsyms; + struct ld_plugin_symbol* syms; + struct claimed_file* next; +}; + +struct sym_info +{ + int size; + char* type; + char* bind; + char* vis; + char* sect; + char* name; +}; + +static struct claimed_file* first_claimed_file = NULL; +static struct claimed_file* last_claimed_file = NULL; + +static ld_plugin_register_claim_file register_claim_file_hook = NULL; +static ld_plugin_register_all_symbols_read register_all_symbols_read_hook = NULL; +static ld_plugin_register_cleanup register_cleanup_hook = NULL; +static ld_plugin_add_symbols add_symbols = NULL; +static ld_plugin_get_symbols get_symbols = NULL; +static ld_plugin_add_input_file add_input_file = NULL; +static ld_plugin_message message = NULL; +static ld_plugin_get_input_file get_input_file = NULL; +static ld_plugin_release_input_file release_input_file = NULL; + +#define MAXOPTS 10 + +static const char *opts[MAXOPTS]; +static int nopts = 0; + +enum ld_plugin_status onload(struct ld_plugin_tv *tv); +enum ld_plugin_status claim_file_hook(const struct ld_plugin_input_file *file, + int *claimed); +enum ld_plugin_status all_symbols_read_hook(void); +enum ld_plugin_status cleanup_hook(void); + +static void parse_readelf_line(char*, struct sym_info*); + +enum ld_plugin_status +onload(struct ld_plugin_tv *tv) +{ + struct ld_plugin_tv *entry; + int api_version = 0; + int gold_version = 0; + int i; + + for (entry = tv; entry->tv_tag != LDPT_NULL; ++entry) + { + switch (entry->tv_tag) + { + case LDPT_API_VERSION: + api_version = entry->tv_u.tv_val; + break; + case LDPT_GOLD_VERSION: + gold_version = entry->tv_u.tv_val; + break; + case LDPT_LINKER_OUTPUT: + break; + case LDPT_OPTION: + if (nopts < MAXOPTS) + opts[nopts++] = entry->tv_u.tv_string; + break; + case LDPT_REGISTER_CLAIM_FILE_HOOK: + register_claim_file_hook = entry->tv_u.tv_register_claim_file; + break; + case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: + register_all_symbols_read_hook = + entry->tv_u.tv_register_all_symbols_read; + break; + case LDPT_REGISTER_CLEANUP_HOOK: + register_cleanup_hook = entry->tv_u.tv_register_cleanup; + break; + case LDPT_ADD_SYMBOLS: + add_symbols = entry->tv_u.tv_add_symbols; + break; + case LDPT_GET_SYMBOLS: + get_symbols = entry->tv_u.tv_get_symbols; + break; + case LDPT_ADD_INPUT_FILE: + add_input_file = entry->tv_u.tv_add_input_file; + break; + case LDPT_MESSAGE: + message = entry->tv_u.tv_message; + break; + case LDPT_GET_INPUT_FILE: + get_input_file = entry->tv_u.tv_get_input_file; + break; + case LDPT_RELEASE_INPUT_FILE: + release_input_file = entry->tv_u.tv_release_input_file; + break; + default: + break; + } + } + + if (message == NULL) + { + fprintf(stderr, "tv_message interface missing\n"); + return LDPS_ERR; + } + + if (register_claim_file_hook == NULL) + { + fprintf(stderr, "tv_register_claim_file_hook interface missing\n"); + return LDPS_ERR; + } + + if (register_all_symbols_read_hook == NULL) + { + fprintf(stderr, "tv_register_all_symbols_read_hook interface missing\n"); + return LDPS_ERR; + } + + if (register_cleanup_hook == NULL) + { + fprintf(stderr, "tv_register_cleanup_hook interface missing\n"); + return LDPS_ERR; + } + + (*message)(LDPL_INFO, "API version: %d", api_version); + (*message)(LDPL_INFO, "gold version: %d", gold_version); + + for (i = 0; i < nopts; ++i) + (*message)(LDPL_INFO, "option: %s", opts[i]); + + if ((*register_claim_file_hook)(claim_file_hook) != LDPS_OK) + { + (*message)(LDPL_ERROR, "error registering claim file hook"); + return LDPS_ERR; + } + + if ((*register_all_symbols_read_hook)(all_symbols_read_hook) != LDPS_OK) + { + (*message)(LDPL_ERROR, "error registering all symbols read hook"); + return LDPS_ERR; + } + + if ((*register_cleanup_hook)(cleanup_hook) != LDPS_OK) + { + (*message)(LDPL_ERROR, "error registering cleanup hook"); + return LDPS_ERR; + } + + return LDPS_OK; +} + +enum ld_plugin_status +claim_file_hook (const struct ld_plugin_input_file* file, int* claimed) +{ + int len; + off_t end_offset; + char buf[160]; + struct claimed_file* claimed_file; + struct ld_plugin_symbol* syms; + int nsyms = 0; + int maxsyms = 0; + FILE* irfile; + struct sym_info info; + int weak; + int def; + int vis; + int is_comdat; + int i; + + (*message)(LDPL_INFO, + "%s: claim file hook called (offset = %ld, size = %ld)", + file->name, (long)file->offset, (long)file->filesize); + + /* Look for the beginning of output from readelf -s. */ + irfile = fdopen(file->fd, "r"); + (void)fseek(irfile, file->offset, SEEK_SET); + end_offset = file->offset + file->filesize; + len = fread(buf, 1, 13, irfile); + if (len < 13 || strncmp(buf, "\nSymbol table", 13) != 0) + return LDPS_OK; + + /* Skip the two header lines. */ + (void) fgets(buf, sizeof(buf), irfile); + (void) fgets(buf, sizeof(buf), irfile); + + if (add_symbols == NULL) + { + fprintf(stderr, "tv_add_symbols interface missing\n"); + return LDPS_ERR; + } + + /* Parse the output from readelf. The columns are: + Index Value Size Type Binding Visibility Section Name. */ + syms = (struct ld_plugin_symbol*)malloc(sizeof(struct ld_plugin_symbol) * 8); + if (syms == NULL) + return LDPS_ERR; + maxsyms = 8; + while (ftell(irfile) < end_offset + && fgets(buf, sizeof(buf), irfile) != NULL) + { + parse_readelf_line(buf, &info); + + /* Ignore local symbols. */ + if (strncmp(info.bind, "LOCAL", 5) == 0) + continue; + + weak = strncmp(info.bind, "WEAK", 4) == 0; + if (strncmp(info.sect, "UND", 3) == 0) + def = weak ? LDPK_WEAKUNDEF : LDPK_UNDEF; + else if (strncmp(info.sect, "COM", 3) == 0) + def = LDPK_COMMON; + else + def = weak ? LDPK_WEAKDEF : LDPK_DEF; + + if (strncmp(info.vis, "INTERNAL", 8) == 0) + vis = LDPV_INTERNAL; + else if (strncmp(info.vis, "HIDDEN", 6) == 0) + vis = LDPV_HIDDEN; + else if (strncmp(info.vis, "PROTECTED", 9) == 0) + vis = LDPV_PROTECTED; + else + vis = LDPV_DEFAULT; + + /* If the symbol is listed in the options list, special-case + it as a comdat symbol. */ + is_comdat = 0; + for (i = 0; i < nopts; ++i) + { + if (info.name != NULL && strcmp(info.name, opts[i]) == 0) + { + is_comdat = 1; + break; + } + } + + if (nsyms >= maxsyms) + { + syms = (struct ld_plugin_symbol*) + realloc(syms, sizeof(struct ld_plugin_symbol) * maxsyms * 2); + if (syms == NULL) + return LDPS_ERR; + maxsyms *= 2; + } + + if (info.name == NULL) + syms[nsyms].name = NULL; + else + { + len = strlen(info.name); + syms[nsyms].name = malloc(len + 1); + strncpy(syms[nsyms].name, info.name, len + 1); + } + syms[nsyms].version = NULL; + syms[nsyms].def = def; + syms[nsyms].visibility = vis; + syms[nsyms].size = info.size; + syms[nsyms].comdat_key = is_comdat ? syms[nsyms].name : NULL; + syms[nsyms].resolution = LDPR_UNKNOWN; + ++nsyms; + } + + claimed_file = (struct claimed_file*) malloc(sizeof(struct claimed_file)); + if (claimed_file == NULL) + return LDPS_ERR; + + claimed_file->name = file->name; + claimed_file->handle = file->handle; + claimed_file->nsyms = nsyms; + claimed_file->syms = syms; + claimed_file->next = NULL; + if (last_claimed_file == NULL) + first_claimed_file = claimed_file; + else + last_claimed_file->next = claimed_file; + last_claimed_file = claimed_file; + + (*message)(LDPL_INFO, "%s: claiming file, adding %d symbols", + file->name, nsyms); + + if (nsyms > 0) + (*add_symbols)(file->handle, nsyms, syms); + + *claimed = 1; + return LDPS_OK; +} + +enum ld_plugin_status +all_symbols_read_hook(void) +{ + int i; + const char* res; + struct claimed_file* claimed_file; + struct ld_plugin_input_file file; + FILE* irfile; + off_t end_offset; + struct sym_info info; + int len; + char buf[160]; + char* p; + const char* filename; + + (*message)(LDPL_INFO, "all symbols read hook called"); + + if (get_symbols == NULL) + { + fprintf(stderr, "tv_get_symbols interface missing\n"); + return LDPS_ERR; + } + + for (claimed_file = first_claimed_file; + claimed_file != NULL; + claimed_file = claimed_file->next) + { + (*get_symbols)(claimed_file->handle, claimed_file->nsyms, + claimed_file->syms); + + for (i = 0; i < claimed_file->nsyms; ++i) + { + switch (claimed_file->syms[i].resolution) + { + case LDPR_UNKNOWN: + res = "UNKNOWN"; + break; + case LDPR_UNDEF: + res = "UNDEF"; + break; + case LDPR_PREVAILING_DEF: + res = "PREVAILING_DEF_REG"; + break; + case LDPR_PREVAILING_DEF_IRONLY: + res = "PREVAILING_DEF_IRONLY"; + break; + case LDPR_PREEMPTED_REG: + res = "PREEMPTED_REG"; + break; + case LDPR_PREEMPTED_IR: + res = "PREEMPTED_IR"; + break; + case LDPR_RESOLVED_IR: + res = "RESOLVED_IR"; + break; + case LDPR_RESOLVED_EXEC: + res = "RESOLVED_EXEC"; + break; + case LDPR_RESOLVED_DYN: + res = "RESOLVED_DYN"; + break; + default: + res = "?"; + break; + } + (*message)(LDPL_INFO, "%s: %s: %s", claimed_file->name, + claimed_file->syms[i].name, res); + } + } + + if (add_input_file == NULL) + { + fprintf(stderr, "tv_add_input_file interface missing\n"); + return LDPS_ERR; + } + if (get_input_file == NULL) + { + fprintf(stderr, "tv_get_input_file interface missing\n"); + return LDPS_ERR; + } + if (release_input_file == NULL) + { + fprintf(stderr, "tv_release_input_file interface missing\n"); + return LDPS_ERR; + } + + for (claimed_file = first_claimed_file; + claimed_file != NULL; + claimed_file = claimed_file->next) + { + (*get_input_file) (claimed_file->handle, &file); + + /* Look for the beginning of output from readelf -s. */ + irfile = fdopen(file.fd, "r"); + (void)fseek(irfile, file.offset, SEEK_SET); + end_offset = file.offset + file.filesize; + len = fread(buf, 1, 13, irfile); + if (len < 13 || strncmp(buf, "\nSymbol table", 13) != 0) + { + fprintf(stderr, "%s: can't re-read original input file\n", + claimed_file->name); + return LDPS_ERR; + } + + /* Skip the two header lines. */ + (void) fgets(buf, sizeof(buf), irfile); + (void) fgets(buf, sizeof(buf), irfile); + + filename = NULL; + while (ftell(irfile) < end_offset + && fgets(buf, sizeof(buf), irfile) != NULL) + { + parse_readelf_line(buf, &info); + + /* Look for file name. */ + if (strncmp(info.type, "FILE", 4) == 0) + { + len = strlen(info.name); + p = malloc(len + 1); + strncpy(p, info.name, len + 1); + filename = p; + break; + } + } + + (*release_input_file) (claimed_file->handle); + + if (filename == NULL) + filename = claimed_file->name; + + if (claimed_file->nsyms == 0) + continue; + + if (strlen(filename) >= sizeof(buf)) + { + (*message)(LDPL_FATAL, "%s: filename too long", filename); + return LDPS_ERR; + } + strcpy(buf, filename); + p = strrchr(buf, '.'); + if (p == NULL + || (strcmp(p, ".syms") != 0 + && strcmp(p, ".c") != 0 + && strcmp(p, ".cc") != 0)) + { + (*message)(LDPL_FATAL, "%s: filename has unknown suffix", + filename); + return LDPS_ERR; + } + p[1] = 'o'; + p[2] = '\0'; + (*message)(LDPL_INFO, "%s: adding new input file", buf); + (*add_input_file)(buf); + } + + return LDPS_OK; +} + +enum ld_plugin_status +cleanup_hook(void) +{ + (*message)(LDPL_INFO, "cleanup hook called"); + return LDPS_OK; +} + +static void +parse_readelf_line(char* p, struct sym_info* info) +{ + int len; + + p += strspn(p, " "); + + /* Index field. */ + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Value field. */ + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Size field. */ + info->size = atoi(p); + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Type field. */ + info->type = p; + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Binding field. */ + info->bind = p; + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Visibility field. */ + info->vis = p; + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Section field. */ + info->sect = p; + p += strcspn(p, " "); + p += strspn(p, " "); + + /* Name field. */ + /* FIXME: Look for version. */ + len = strlen(p); + if (len == 0) + p = NULL; + else if (p[len-1] == '\n') + p[--len] = '\0'; + info->name = p; +} Index: discard_locals_test.c =================================================================== --- discard_locals_test.c (nonexistent) +++ discard_locals_test.c (revision 818) @@ -0,0 +1,40 @@ +/* discard_locals_test.c -- test --discard-locals option. + + Copyright 2009 Free Software Foundation, Inc. + Doug Kwan . + + 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. */ + +/* Local symbol format for generic ELF target. */ +asm (".Lshould_be_discarded:"); + +#ifdef __i386__ +/* Additional local symbol format for the i386 target. */ +asm (".Xshould_be_discarded:"); +#endif + +int +main (void) +{ + return 0; +} + Index: tls_test.h =================================================================== --- tls_test.h (nonexistent) +++ tls_test.h (revision 818) @@ -0,0 +1,56 @@ +// tls_test.h -- test TLS variables for gold, header file -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 the header file for the TLS test. See tls_test.cc for more +// information. + +extern bool t1(); +extern bool t2(); +extern bool t3(); +extern bool t4(); + +extern int* f5a(); +extern void f5b(int*); +extern bool t5(); + +extern int* f6a(); +extern void f6b(int*); +extern bool t6(); + +extern bool t8(); +extern bool t9(); + +extern int* f10a(); +extern void f10b(int*); +extern bool t10(); + +extern "C" int t11(); +extern "C" int t11_last(); + +extern bool t12(); + +extern bool t_last(); + +// These variables are defined in tls_test_file2.cc +extern __thread int o1; +extern __thread int o2; +extern __thread int o3; Index: ver_test_4.sh =================================================================== --- ver_test_4.sh (nonexistent) +++ ver_test_4.sh (revision 818) @@ -0,0 +1,44 @@ +#!/bin/sh + +# ver_test_4.sh -- test that version symbol is visible. + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_4.syms "t1_2@@VER2" +check ver_test_4.syms "t2_2@VER1" +check ver_test_4.syms "t2_2@@VER2" +check ver_test_4.syms "GLOBAL.*ABS.*VER1" +check ver_test_4.syms "GLOBAL.*ABS.*VER2" + +exit 0
ver_test_4.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: weak_alias_test_main.cc =================================================================== --- weak_alias_test_main.cc (nonexistent) +++ weak_alias_test_main.cc (revision 818) @@ -0,0 +1,67 @@ +// weak_alias_test_main.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include + +// Defined in both weak_alias_test_1.cc and weak_alias_test_2.cc, but +// we should get the one in weak_alias_test_1.cc. +extern int weak_symbol; + +// Defined in weak_alias_test_2.cc. +extern int strong_symbol; + +// weak_aliased is an alias for this. +int strong_aliased = 3; + +// Defined as a weak alias in weak_alias_test_1.cc. +int weak_aliased_2 = 6; + +// Defined in weak_alias_test_1.cc +extern int strong_aliased_3; +extern int weak_aliased_4; + +extern bool t1(); + +int +main() +{ + // weak_symbol should come from weak_alias_test_3.cc. + assert(weak_symbol == 4); + + // strong_symbol should come from weak_alias_test_2.cc. + assert(strong_symbol == 2); + + // strong_aliased should come from this file, above. + assert(strong_aliased == 3); + + // weak_aliased_2 should come from this file, above. + assert(weak_aliased_2 == 6); + + // strong_aliased_3 should come from weak_alias_test_1.cc. + assert(strong_aliased_3 == 7); + + // weak_aliased_4 should come from weak_alias_test_1.cc. + assert(weak_aliased_4 == 8); + + // Make sure the symbols look right from a shared library. + assert(t1()); +} Index: plugin_test_3.sh =================================================================== --- plugin_test_3.sh (nonexistent) +++ plugin_test_3.sh (revision 818) @@ -0,0 +1,59 @@ +#!/bin/sh + +# plugin_test_3.sh -- a test case for the plugin API. + +# Copyright 2008, 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# 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 file goes with plugin_test.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_3.err "API version:" +check plugin_test_3.err "gold version:" +check plugin_test_3.err "option: _Z4f13iv" +check plugin_test_3.err "two_file_test_main.o: claim file hook called" +check plugin_test_3.err "two_file_test_1.syms: claim file hook called" +check plugin_test_3.err "two_file_test_1b.syms: claim file hook called" +check plugin_test_3.err "two_file_test_2.syms: claim file hook called" +check plugin_test_3.err "two_file_test_1.syms: _Z4f13iv: PREVAILING_DEF_REG" +check plugin_test_3.err "two_file_test_1.syms: _Z2t2v: PREVAILING_DEF_REG" +check plugin_test_3.err "two_file_test_1.syms: v2: RESOLVED_IR" +check plugin_test_3.err "two_file_test_1.syms: t17data: RESOLVED_IR" +check plugin_test_3.err "two_file_test_2.syms: _Z4f13iv: PREEMPTED_IR" +check plugin_test_3.err "two_file_test_1.o: adding new input file" +check plugin_test_3.err "two_file_test_1b.o: adding new input file" +check plugin_test_3.err "two_file_test_2.o: adding new input file" +check plugin_test_3.err "cleanup hook called" + +exit 0
plugin_test_3.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: thin_archive_main.cc =================================================================== --- thin_archive_main.cc (nonexistent) +++ thin_archive_main.cc (revision 818) @@ -0,0 +1,39 @@ +// thin_archive_main.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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 the main program for the thin archive tests. It calls a single +// routine, t1, defined in libthin1.a or libthin3.a, which then references +// other routines in the same and other libraries, to make sure that all +// archive members are linked properly. + +#include + +extern int t1(); + +// Main function. Call the test function. + +int +main() +{ + assert(t1() == 0x4321); + return 0; +} Index: many_sections_test.cc =================================================================== --- many_sections_test.cc (nonexistent) +++ many_sections_test.cc (revision 818) @@ -0,0 +1,51 @@ +// many_sections_test.cc -- test lots of sections for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 program tests having many sections. It uses a generated .h +// files to define 70,000 variables, each in a different section. It +// uses another generated .h file to verify that they all have the +// right value. + +#include + +#include "many_sections_define.h" + +// This tests a section group. +template +class C +{ + public: + static T val() { return C::val_; } + private: + static T val_; +}; + +template +T C::val_; + +int +main(int, char**) +{ +#include "many_sections_check.h" + assert(C::val() == 0); + return 0; +} Index: ver_test_6.c =================================================================== --- ver_test_6.c (nonexistent) +++ ver_test_6.c (revision 818) @@ -0,0 +1,35 @@ +/* ver_test_6.c -- test common symbol with shared library version + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + 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. */ + +int t3_2; + +/* Since we don't use any of the arguments to main, we give it a void + prototype, so as to quiet gcc -Wstrict-prototypes. */ +int +main(void) +{ + return t3_2; +} Index: exception_test_2.cc =================================================================== --- exception_test_2.cc (nonexistent) +++ exception_test_2.cc (revision 818) @@ -0,0 +1,31 @@ +// exception_test_1.cc -- test exception handling for gold, file 1 of 2 + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// Second part of exception test. See exception_test_1.cc for details. + +#include "exception_test.h" + +void +f1() +{ + throw 0; +} Index: testfile.cc =================================================================== --- testfile.cc (nonexistent) +++ testfile.cc (revision 818) @@ -0,0 +1,944 @@ +// testfile.cc -- Dummy ELF objects for testing purposes. + +// Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include "gold.h" + +#include "target.h" +#include "target-select.h" + +#include "test.h" +#include "testfile.h" + +namespace gold_testsuite +{ + +using namespace gold; + +// A Target used for testing purposes. + +template +class Target_test : public Sized_target +{ + public: + Target_test() + : Sized_target(&test_target_info) + { } + + void + gc_process_relocs(const General_options&, Symbol_table*, Layout*, + Sized_relobj*, unsigned int, + unsigned int, const unsigned char*, size_t, Output_section*, + bool, size_t, const unsigned char*) + { ERROR("call to Target_test::gc_process_relocs"); } + + void + scan_relocs(const General_options&, Symbol_table*, Layout*, + Sized_relobj*, unsigned int, + unsigned int, const unsigned char*, size_t, Output_section*, + bool, size_t, const unsigned char*) + { ERROR("call to Target_test::scan_relocs"); } + + void + relocate_section(const Relocate_info*, unsigned int, + const unsigned char*, size_t, Output_section*, bool, + unsigned char*, typename elfcpp::Elf_types::Elf_Addr, + section_size_type, const Reloc_symbol_changes*) + { ERROR("call to Target_test::relocate_section"); } + + void + scan_relocatable_relocs(const General_options&, Symbol_table*, Layout*, + Sized_relobj*, unsigned int, + unsigned int, const unsigned char*, + size_t, Output_section*, bool, size_t, + const unsigned char*, Relocatable_relocs*) + { ERROR("call to Target_test::scan_relocatable_relocs"); } + + void + relocate_for_relocatable(const Relocate_info*, + unsigned int, const unsigned char*, size_t, + Output_section*, off_t, const Relocatable_relocs*, + unsigned char*, + typename elfcpp::Elf_types::Elf_Addr, + section_size_type, unsigned char*, + section_size_type) + { ERROR("call to Target_test::relocate_for_relocatable"); } + + static const Target::Target_info test_target_info; +}; + +template +const Target::Target_info Target_test::test_target_info = +{ + size, // size + big_endian, // is_big_endian + static_cast(0xffff), // machine_code + false, // has_make_symbol + false, // has_resolve + false, // has_code_fill + false, // is_default_stack_executable + '\0', // wrap_char + "/dummy", // dynamic_linker + 0x08000000, // default_text_segment_address + 0x1000, // abi_pagesize + 0x1000, // common_pagesize + elfcpp::SHN_UNDEF, // small_common_shndx + elfcpp::SHN_UNDEF, // large_common_shndx + 0, // small_common_section_flags + 0 // large_common_section_flags +}; + +// The test targets. + +#ifdef HAVE_TARGET_32_LITTLE +Target_test<32, false> target_test_32_little; +#endif + +#ifdef HAVE_TARGET_32_BIG +Target_test<32, true> target_test_32_big; +#endif + +#ifdef HAVE_TARGET_64_LITTLE +Target_test<64, false> target_test_64_little; +#endif + +#ifdef HAVE_TARGET_64_BIG +Target_test<64, true> target_test_64_big; +#endif + +// A pointer to the test targets. This is used in CHECKs. + +#ifdef HAVE_TARGET_32_LITTLE +Target* target_test_pointer_32_little = &target_test_32_little; +#endif + +#ifdef HAVE_TARGET_32_BIG +Target* target_test_pointer_32_big = &target_test_32_big; +#endif + +#ifdef HAVE_TARGET_64_LITTLE +Target* target_test_pointer_64_little = &target_test_64_little; +#endif + +#ifdef HAVE_TARGET_64_BIG +Target* target_test_pointer_64_big = &target_test_64_big; +#endif + +// Select the test targets. + +template +class Target_selector_test : public Target_selector +{ + public: + Target_selector_test() + : Target_selector(0xffff, size, big_endian, NULL) + { } + + Target* + do_instantiate_target() + { + gold_unreachable(); + return NULL; + } + + Target* + do_recognize(int, int, int) + { + if (size == 32) + { + if (!big_endian) + { +#ifdef HAVE_TARGET_32_LITTLE + return &target_test_32_little; +#endif + } + else + { +#ifdef HAVE_TARGET_32_BIG + return &target_test_32_big; +#endif + } + } + else + { + if (!big_endian) + { +#ifdef HAVE_TARGET_64_LITTLE + return &target_test_64_little; +#endif + } + else + { +#ifdef HAVE_TARGET_64_BIG + return &target_test_64_big; +#endif + } + } + + return NULL; + } + + Target* + do_recognize_by_name(const char*) + { return NULL; } + + void + do_supported_names(std::vector*) + { } +}; + +// Register the test target selectors. These don't need to be +// conditionally compiled, as they will return NULL if there is no +// support for them. + +Target_selector_test<32, false> target_selector_test_32_little; +Target_selector_test<32, true> target_selector_test_32_big; +Target_selector_test<64, false> target_selector_test_64_little; +Target_selector_test<64, true> target_selector_test_64_big; + +// A simple ELF object with one empty section, named ".test" and one +// globally visible symbol named "test". + +const unsigned char test_file_1_32_little[] = +{ + // Ehdr + // EI_MAG[0-3] + 0x7f, 'E', 'L', 'F', + // EI_CLASS: 32 bit. + 1, + // EI_DATA: little endian + 1, + // EI_VERSION + 1, + // EI_OSABI + 0, + // EI_ABIVERSION + 0, + // EI_PAD + 0, 0, 0, 0, 0, 0, 0, + // e_type: ET_REL + 1, 0, + // e_machine: a magic value used for testing. + 0xff, 0xff, + // e_version + 1, 0, 0, 0, + // e_entry + 0, 0, 0, 0, + // e_phoff + 0, 0, 0, 0, + // e_shoff: starts right after file header + 52, 0, 0, 0, + // e_flags + 0, 0, 0, 0, + // e_ehsize + 52, 0, + // e_phentsize + 32, 0, + // e_phnum + 0, 0, + // e_shentsize + 40, 0, + // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab + 5, 0, + // e_shstrndx + 4, 0, + + // Offset 52 + // Shdr 0: dummy entry + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 92 + // Shdr 1: .test + // sh_name: after initial null + 1, 0, 0, 0, + // sh_type: SHT_PROGBITS + 1, 0, 0, 0, + // sh_flags: SHF_ALLOC + 2, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + 252, 0, 0, 0, + // sh_size + 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, + + // Offset 132 + // Shdr 2: .symtab + // sh_name: 1 null byte + ".test\0" + 7, 0, 0, 0, + // sh_type: SHT_SYMTAB + 2, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + empty section + 252, 0, 0, 0, + // sh_size: two symbols: dummy symbol + test symbol + 32, 0, 0, 0, + // sh_link: to .strtab + 3, 0, 0, 0, + // sh_info: one local symbol, the dummy symbol + 1, 0, 0, 0, + // sh_addralign + 4, 0, 0, 0, + // sh_entsize: size of symbol + 16, 0, 0, 0, + + // Offset 172 + // Shdr 3: .strtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + 15, 0, 0, 0, + // sh_type: SHT_STRTAB + 3, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after .symtab section. 284 == 0x11c + 0x1c, 0x1, 0, 0, + // sh_size: 1 null byte + "test\0" + 6, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, + + // Offset 212 + // Shdr 4: .shstrtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0" + 23, 0, 0, 0, + // sh_type: SHT_STRTAB + 3, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after .strtab section. 290 == 0x122 + 0x22, 0x1, 0, 0, + // sh_size: all section names + 33, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, + + // Offset 252 + // Contents of .symtab section + // Symbol 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 268 + // Symbol 1 + // st_name + 1, 0, 0, 0, + // st_value + 0, 0, 0, 0, + // st_size + 0, 0, 0, 0, + // st_info: STT_NOTYPE, STB_GLOBAL + 0x10, + // st_other + 0, + // st_shndx: In .test + 1, 0, + + // Offset 284 + // Contents of .strtab section + '\0', + 't', 'e', 's', 't', '\0', + + // Offset 290 + // Contents of .shstrtab section + '\0', + '.', 't', 'e', 's', 't', '\0', + '.', 's', 'y', 'm', 't', 'a', 'b', '\0', + '.', 's', 't', 'r', 't', 'a', 'b', '\0', + '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0' +}; + +const unsigned int test_file_1_size_32_little = sizeof test_file_1_32_little; + +// 32-bit big-endian version of test_file_1_32_little. + +const unsigned char test_file_1_32_big[] = +{ + // Ehdr + // EI_MAG[0-3] + 0x7f, 'E', 'L', 'F', + // EI_CLASS: 32 bit. + 1, + // EI_DATA: big endian + 2, + // EI_VERSION + 1, + // EI_OSABI + 0, + // EI_ABIVERSION + 0, + // EI_PAD + 0, 0, 0, 0, 0, 0, 0, + // e_type: ET_REL + 0, 1, + // e_machine: a magic value used for testing. + 0xff, 0xff, + // e_version + 0, 0, 0, 1, + // e_entry + 0, 0, 0, 0, + // e_phoff + 0, 0, 0, 0, + // e_shoff: starts right after file header + 0, 0, 0, 52, + // e_flags + 0, 0, 0, 0, + // e_ehsize + 0, 52, + // e_phentsize + 0, 32, + // e_phnum + 0, 0, + // e_shentsize + 0, 40, + // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab + 0, 5, + // e_shstrndx + 0, 4, + + // Offset 52 + // Shdr 0: dummy entry + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 92 + // Shdr 1: .test + // sh_name: after initial null + 0, 0, 0, 1, + // sh_type: SHT_PROGBITS + 0, 0, 0, 1, + // sh_flags: SHF_ALLOC + 0, 0, 0, 2, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + 0, 0, 0, 252, + // sh_size + 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, + + // Offset 132 + // Shdr 2: .symtab + // sh_name: 1 null byte + ".test\0" + 0, 0, 0, 7, + // sh_type: SHT_SYMTAB + 0, 0, 0, 2, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + empty section + 0, 0, 0, 252, + // sh_size: two symbols: dummy symbol + test symbol + 0, 0, 0, 32, + // sh_link: to .strtab + 0, 0, 0, 3, + // sh_info: one local symbol, the dummy symbol + 0, 0, 0, 1, + // sh_addralign + 0, 0, 0, 4, + // sh_entsize: size of symbol + 0, 0, 0, 16, + + // Offset 172 + // Shdr 3: .strtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + 0, 0, 0, 15, + // sh_type: SHT_STRTAB + 0, 0, 0, 3, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after .symtab section. 284 == 0x11c + 0, 0, 0x1, 0x1c, + // sh_size: 1 null byte + "test\0" + 0, 0, 0, 6, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, + + // Offset 212 + // Shdr 4: .shstrtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0" + 0, 0, 0, 23, + // sh_type: SHT_STRTAB + 0, 0, 0, 3, + // sh_flags + 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, + // sh_offset: after .strtab section. 290 == 0x122 + 0, 0, 0x1, 0x22, + // sh_size: all section names + 0, 0, 0, 33, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, + + // Offset 252 + // Contents of .symtab section + // Symbol 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 268 + // Symbol 1 + // st_name + 0, 0, 0, 1, + // st_value + 0, 0, 0, 0, + // st_size + 0, 0, 0, 0, + // st_info: STT_NOTYPE, STB_GLOBAL + 0x10, + // st_other + 0, + // st_shndx: In .test + 0, 1, + + // Offset 284 + // Contents of .strtab section + '\0', + 't', 'e', 's', 't', '\0', + + // Offset 290 + // Contents of .shstrtab section + '\0', + '.', 't', 'e', 's', 't', '\0', + '.', 's', 'y', 'm', 't', 'a', 'b', '\0', + '.', 's', 't', 'r', 't', 'a', 'b', '\0', + '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0' +}; + +const unsigned int test_file_1_size_32_big = sizeof test_file_1_32_big; + +// 64-bit little-endian version of test_file_1_32_little. + +const unsigned char test_file_1_64_little[] = +{ + // Ehdr + // EI_MAG[0-3] + 0x7f, 'E', 'L', 'F', + // EI_CLASS: 64 bit. + 2, + // EI_DATA: little endian + 1, + // EI_VERSION + 1, + // EI_OSABI + 0, + // EI_ABIVERSION + 0, + // EI_PAD + 0, 0, 0, 0, 0, 0, 0, + // e_type: ET_REL + 1, 0, + // e_machine: a magic value used for testing. + 0xff, 0xff, + // e_version + 1, 0, 0, 0, + // e_entry + 0, 0, 0, 0, 0, 0, 0, 0, + // e_phoff + 0, 0, 0, 0, 0, 0, 0, 0, + // e_shoff: starts right after file header + 64, 0, 0, 0, 0, 0, 0, 0, + // e_flags + 0, 0, 0, 0, + // e_ehsize + 64, 0, + // e_phentsize + 56, 0, + // e_phnum + 0, 0, + // e_shentsize + 64, 0, + // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab + 5, 0, + // e_shstrndx + 4, 0, + + // Offset 64 + // Shdr 0: dummy entry + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 128 + // Shdr 1: .test + // sh_name: after initial null + 1, 0, 0, 0, + // sh_type: SHT_PROGBITS + 1, 0, 0, 0, + // sh_flags: SHF_ALLOC + 2, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers. 384 == 0x180. + 0x80, 0x1, 0, 0, 0, 0, 0, 0, + // sh_size + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, 0, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 192 + // Shdr 2: .symtab + // sh_name: 1 null byte + ".test\0" + 7, 0, 0, 0, + // sh_type: SHT_SYMTAB + 2, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + empty section + // 384 == 0x180. + 0x80, 0x1, 0, 0, 0, 0, 0, 0, + // sh_size: two symbols: dummy symbol + test symbol + 48, 0, 0, 0, 0, 0, 0, 0, + // sh_link: to .strtab + 3, 0, 0, 0, + // sh_info: one local symbol, the dummy symbol + 1, 0, 0, 0, + // sh_addralign + 8, 0, 0, 0, 0, 0, 0, 0, + // sh_entsize: size of symbol + 24, 0, 0, 0, 0, 0, 0, 0, + + // Offset 256 + // Shdr 3: .strtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + 15, 0, 0, 0, + // sh_type: SHT_STRTAB + 3, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after .symtab section. 432 == 0x1b0 + 0xb0, 0x1, 0, 0, 0, 0, 0, 0, + // sh_size: 1 null byte + "test\0" + 6, 0, 0, 0, 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, 0, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 320 + // Shdr 4: .shstrtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0" + 23, 0, 0, 0, + // sh_type: SHT_STRTAB + 3, 0, 0, 0, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after .strtab section. 438 == 0x1b6 + 0xb6, 0x1, 0, 0, 0, 0, 0, 0, + // sh_size: all section names + 33, 0, 0, 0, 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 1, 0, 0, 0, 0, 0, 0, 0, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 384 + // Contents of .symtab section + // Symbol 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 408 + // Symbol 1 + // st_name + 1, 0, 0, 0, + // st_info: STT_NOTYPE, STB_GLOBAL + 0x10, + // st_other + 0, + // st_shndx: In .test + 1, 0, + // st_value + 0, 0, 0, 0, 0, 0, 0, 0, + // st_size + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 432 + // Contents of .strtab section + '\0', + 't', 'e', 's', 't', '\0', + + // Offset 438 + // Contents of .shstrtab section + '\0', + '.', 't', 'e', 's', 't', '\0', + '.', 's', 'y', 'm', 't', 'a', 'b', '\0', + '.', 's', 't', 'r', 't', 'a', 'b', '\0', + '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0' +}; + +const unsigned int test_file_1_size_64_little = sizeof test_file_1_64_little; + +// 64-bit big-endian version of test_file_1_32_little. + +const unsigned char test_file_1_64_big[] = +{ + // Ehdr + // EI_MAG[0-3] + 0x7f, 'E', 'L', 'F', + // EI_CLASS: 64 bit. + 2, + // EI_DATA: big endian + 2, + // EI_VERSION + 1, + // EI_OSABI + 0, + // EI_ABIVERSION + 0, + // EI_PAD + 0, 0, 0, 0, 0, 0, 0, + // e_type: ET_REL + 0, 1, + // e_machine: a magic value used for testing. + 0xff, 0xff, + // e_version + 0, 0, 0, 1, + // e_entry + 0, 0, 0, 0, 0, 0, 0, 0, + // e_phoff + 0, 0, 0, 0, 0, 0, 0, 0, + // e_shoff: starts right after file header + 0, 0, 0, 0, 0, 0, 0, 64, + // e_flags + 0, 0, 0, 0, + // e_ehsize + 0, 64, + // e_phentsize + 0, 56, + // e_phnum + 0, 0, + // e_shentsize + 0, 64, + // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab + 0, 5, + // e_shstrndx + 0, 4, + + // Offset 64 + // Shdr 0: dummy entry + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 128 + // Shdr 1: .test + // sh_name: after initial null + 0, 0, 0, 1, + // sh_type: SHT_PROGBITS + 0, 0, 0, 1, + // sh_flags: SHF_ALLOC + 0, 0, 0, 0, 0, 0, 0, 2, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers. 384 == 0x180. + 0, 0, 0, 0, 0, 0, 0x1, 0x80, + // sh_size + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 0, 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 192 + // Shdr 2: .symtab + // sh_name: 1 null byte + ".test\0" + 0, 0, 0, 7, + // sh_type: SHT_SYMTAB + 0, 0, 0, 2, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after file header + 5 section headers + empty section + // 384 == 0x180. + 0, 0, 0, 0, 0, 0, 0x1, 0x80, + // sh_size: two symbols: dummy symbol + test symbol + 0, 0, 0, 0, 0, 0, 0, 48, + // sh_link: to .strtab + 0, 0, 0, 3, + // sh_info: one local symbol, the dummy symbol + 0, 0, 0, 1, + // sh_addralign + 0, 0, 0, 0, 0, 0, 0, 8, + // sh_entsize: size of symbol + 0, 0, 0, 0, 0, 0, 0, 24, + + // Offset 256 + // Shdr 3: .strtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + 0, 0, 0, 15, + // sh_type: SHT_STRTAB + 0, 0, 0, 3, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after .symtab section. 432 == 0x1b0 + 0, 0, 0, 0, 0, 0, 0x1, 0xb0, + // sh_size: 1 null byte + "test\0" + 0, 0, 0, 0, 0, 0, 0, 6, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 0, 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 320 + // Shdr 4: .shstrtab + // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0" + 0, 0, 0, 23, + // sh_type: SHT_STRTAB + 0, 0, 0, 3, + // sh_flags + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_addr + 0, 0, 0, 0, 0, 0, 0, 0, + // sh_offset: after .strtab section. 438 == 0x1b6 + 0, 0, 0, 0, 0, 0, 0x1, 0xb6, + // sh_size: all section names + 0, 0, 0, 0, 0, 0, 0, 33, + // sh_link + 0, 0, 0, 0, + // sh_info + 0, 0, 0, 0, + // sh_addralign + 0, 0, 0, 0, 0, 0, 0, 1, + // sh_entsize + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 384 + // Contents of .symtab section + // Symbol 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 408 + // Symbol 1 + // st_name + 0, 0, 0, 1, + // st_info: STT_NOTYPE, STB_GLOBAL + 0x10, + // st_other + 0, + // st_shndx: In .test + 0, 1, + // st_value + 0, 0, 0, 0, 0, 0, 0, 0, + // st_size + 0, 0, 0, 0, 0, 0, 0, 0, + + // Offset 432 + // Contents of .strtab section + '\0', + 't', 'e', 's', 't', '\0', + + // Offset 438 + // Contents of .shstrtab section + '\0', + '.', 't', 'e', 's', 't', '\0', + '.', 's', 'y', 'm', 't', 'a', 'b', '\0', + '.', 's', 't', 'r', 't', 'a', 'b', '\0', + '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0' +}; + +const unsigned int test_file_1_size_64_big = sizeof test_file_1_64_big; + +} // End namespace gold_testsuite. Index: hidden_test.sh =================================================================== --- hidden_test.sh (nonexistent) +++ hidden_test.sh (revision 818) @@ -0,0 +1,66 @@ +#!/bin/sh + +# hidden_test.sh -- a test case for hidden and internal symbols. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# 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 file goes with hidden_test_main.c and hidden_test_1.c. +# The main program defines several symbols with each of the ELF +# visibilities, and the shared library attempts to reference the +# symbols. We try to link the program and check that the expected +# error messages are issued for the references to internal and +# hidden symbols. The errors will be found in hidden_test.err. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +check_missing() +{ + if grep -q "$2" "$1" + then + echo "Found unexpected error in $1:" + echo " $2" + echo "" + echo "Actual error output below:" + cat "$1" + exit 1 + fi +} + +# We should see errors for hidden and internal symbols. +check hidden_test.err "hidden symbol 'main_hidden' in hidden_test_main.o is referenced by DSO libhidden.so" +check hidden_test.err "internal symbol 'main_internal' in hidden_test_main.o is referenced by DSO libhidden.so" + +# We shouldn't see errors for the default and protected symbols. +check_missing hidden_test.err "main_default" +check_missing hidden_test.err "main_protected" + +exit 0
hidden_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: protected_main_3.cc =================================================================== --- protected_main_3.cc (nonexistent) +++ protected_main_3.cc (revision 818) @@ -0,0 +1,31 @@ +// protected_main_3.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 should call the unprotected version of f1. + +extern int f1(); + +bool +t2() +{ + return f1() == 2; +} Index: ver_test_7.cc =================================================================== --- ver_test_7.cc (nonexistent) +++ ver_test_7.cc (revision 818) @@ -0,0 +1,37 @@ +// ver_test_7.cc -- test weak duplicate symbol with version + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor + +// 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. + +#include "ver_test.h" + +// This tests having a weak symbol which matches an entry in the +// version script following a hidden definition from .symver. There +// was a bug in which the weak symbol would cause the earlier symbol +// to become globally visible when it should have been hidden. + +extern "C" int t2_2() __attribute__ ((weak)); + +extern "C" +int +t2_2() +{ + return 23; +} Index: thin_archive_test_3.cc =================================================================== --- thin_archive_test_3.cc (nonexistent) +++ thin_archive_test_3.cc (revision 818) @@ -0,0 +1,37 @@ +// thin_archive_test_3.cc -- part of a test case for thin archives + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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 and archives. This is file 3 of 4. +// Each of the first three files contains a reference to the next. +// We test the archives as follows: + +// Files 1 and 2 in libthin1.a, files 3 and 4 in libthin2.a. +// Files 1 and 4 in libthin3.a, files 2 and 3 in libthin4.a, with +// libthin3.a and libthin4.a nested inside libthinall.a. + +extern int t4(); + +int +t3() +{ + return (t4() << 4) | 3; +} Index: script_test_2a.cc =================================================================== --- script_test_2a.cc (nonexistent) +++ script_test_2a.cc (revision 818) @@ -0,0 +1,24 @@ +// script_test_2a.cc -- linker script test 2, file 1 -*- C++ -*- + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +char script_test_string_a[] __attribute__ ((section(".gold_test"))) = + "test aa"; Index: weak_undef_file1.cc =================================================================== --- weak_undef_file1.cc (nonexistent) +++ weak_undef_file1.cc (revision 818) @@ -0,0 +1,69 @@ +// weak_undef_file1.cc -- test handling of weak undefined symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +// We test that we correctly deal with weak undefined symbols. +// We need to make sure that the symbol is resolved to zero +// by the linker and that no dynamic relocation is generated. + +// This source is used to build a shared library that defines +// an arbitrary symbol other than the weak undefined symbol +// referenced by the main program. The main program will be +// linked with this library so that the symbol remains undefined. +// Through the use of the embedded RPATH, the program will load +// an alternate shared library that does define the symbol, +// so that we can detect whether the symbol was left for runtime +// resolution. + + +#include + +#include "weak_undef.h" + +int is_such_symbol_ = 1; + +extern int v2 __attribute__ ((weak)); + +int *v3 = &v2; + +int +t1() +{ + return is_such_symbol_; +} + +// Test that a weak reference from a shared library to a symbol +// defined in the main program does get resolved. + +int +t2() +{ + return (&v2 == NULL) ? -1 : v2; +} + +// Test that a weak reference from a shared library to a symbol +// defined in the main program does get resolved. + +int +t3() +{ + return (v3 == NULL) ? -1 : *v3; +} Index: ver_test_5.script =================================================================== --- ver_test_5.script (nonexistent) +++ ver_test_5.script (revision 818) @@ -0,0 +1,31 @@ +## ver_test_5.script -- a test case for gold + +## Copyright 2008 Free Software Foundation, Inc. +## Written by Ian Lance Taylor + +## 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 we don't break when assigning a version to an +# undefined symbol. This is used with ver_test_2.cc, which defines +# t3_2 but only refers to t2_2. + +VER5 { + global: + t2_2; + t3_2; +}; Index: ver_test_main.cc =================================================================== --- ver_test_main.cc (nonexistent) +++ ver_test_main.cc (revision 818) @@ -0,0 +1,74 @@ +// ver_test_main.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +#include + +#include "ver_test.h" + +int +main() +{ + assert(t1()); + assert(t2()); + assert(t3()); + assert(t4()); + return 0; +} + +// Calls a function in file2 that has two versions and verifies +// that the default version is called. + +bool +t2() +{ + TRACE + return t2_2() == 22; +} + +// Call a function in a shared library that calls explicitly +// the version of t1_2() defined in another shared library. + +bool +t3() +{ + TRACE + return t3_2() == 12; +} + +// Call a function in a shared library that calls a function which is +// defined in the main program and defined with a default version in +// the shared library. The symbol in the main program should override +// even though it doesn't have a version. + +bool +t4() +{ + TRACE + return t4_2() == 42; +} + +int +t4_2a() +{ + TRACE + return 42; +} Index: split_i386_4.s =================================================================== --- split_i386_4.s (nonexistent) +++ split_i386_4.s (revision 818) @@ -0,0 +1,23 @@ +# split_i386_4.s: i386 specific, permitted adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + push %ebp + mov %esp,%ebp + cmp %gs:0x30,%esp + jae 1f + call __morestack + ret +1: + call fn3 + leave + ret + + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits + .section .note.GNU-no-split-stack,"",@progbits Index: script_test_4.t =================================================================== --- script_test_4.t (nonexistent) +++ script_test_4.t (revision 818) @@ -0,0 +1,40 @@ +/* script_test_4.t -- linker script test 4 for gold + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + 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. */ + +/* We won't try to run this program, just ensure that it links + as expected. */ + +SECTIONS +{ + . = 0x10000400; + + /* With luck this will be enough to get the program working. */ + .interp : { *(.interp) } + .text : { *(.text) } + . += 0x100000; + . = ALIGN(0x100); + .dynamic : { *(.dynamic) } + .data : { *(.data) } + . += 0x100000; + . = ALIGN(0x100); + .bss : { *(.bss) } +} Index: ver_test_7.sh =================================================================== --- ver_test_7.sh (nonexistent) +++ ver_test_7.sh (revision 818) @@ -0,0 +1,44 @@ +#!/bin/sh + +# ver_test_7.sh -- test that symbol has correct version + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with ver_test_4.script and ver_test_5.script. The +# symbol t2_2 is not defined when ver_test_5.script is used. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_7.syms "t2_2@@VER2" +check ver_test_7.syms "t2_2@VER1" + +exit 0
ver_test_7.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: split_x86_64_2.s =================================================================== --- split_x86_64_2.s (nonexistent) +++ split_x86_64_2.s (revision 818) @@ -0,0 +1,33 @@ +# split_x86_64_2.s: x86_64 specific, -fsplit-stack calling non-split + + .text + + .global fn1 + .type fn1,@function +fn1: + cmp %fs:0x70,%rsp + jae 1f + callq __morestack + retq +1: + callq fn3 + retq + + .size fn1,. - fn1 + + .global fn2 + .type fn2,@function +fn2: + lea -0x200(%rsp),%r10 + cmp %fs:0x70,%r10 + jae 1f + callq __morestack + retq +1: + callq fn3 + retq + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits Index: script_test_3.sh =================================================================== --- script_test_3.sh (nonexistent) +++ script_test_3.sh (revision 818) @@ -0,0 +1,88 @@ +#!/bin/sh + +# script_test_3.sh -- test PHDRS + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with script_test_3.t, which is a linker script which +# uses a PHDRS clause. We run objdump -p on a program linked with +# that linker script. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected segment in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_count() +{ + if test "`grep -c "$2" "$1"`" != "$3" + then + echo "Did not find expected segment in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check_count script_test_3.stdout "^ INTERP" 1 +check_count script_test_3.stdout "^ LOAD" 3 +check_count script_test_3.stdout "^ DYNAMIC" 1 + +# Make sure that the size of the INTERP segment is the same as the +# size of the .interp section. +section=`fgrep .interp script_test_3.stdout | grep PROGBITS` +if test "$section" = ""; then + echo "Did not find .interp section" + echo "" + echo "Actual output below:" + cat script_test_3.stdout + exit 1 +fi +# Remove the brackets around the section number, since they can give +# an unpredictable number of fields. +section=`echo "$section" | sed -e 's/[][]*//g'` +section_size=`echo "$section" | awk '{ print $6; }'` + +segment=`grep '^ INTERP' script_test_3.stdout` +# We already checked above that we have an INTERP segment. +segment_size=`echo "$segment" | awk '{ print $5; }'` + +# Now $section_size looks like 000013 and $segment_size looks like +# 0x00013. Both numbers are in hex. +section_size=`echo "$section_size" | sed -e 's/^0*//'` +segment_size=`echo "$segment_size" | sed -e 's/^0x//' -e 's/^0*//'` + +if test "$section_size" != "$segment_size"; then + echo ".interp size $section_size != PT_INTERP size $segment_size" + exit 1 +fi + +exit 0
script_test_3.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: protected_2.cc =================================================================== --- protected_2.cc (nonexistent) +++ protected_2.cc (revision 818) @@ -0,0 +1,31 @@ +// protected_2.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 should call the protected version of f1. + +extern int f1(); + +bool +t1() +{ + return f1() == 1; +} Index: weak_undef.h =================================================================== --- weak_undef.h (nonexistent) +++ weak_undef.h (revision 818) @@ -0,0 +1,25 @@ +// weak_undef.h -- test handling of weak undefined symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +extern int t1(); +extern int t2(); +extern int t3(); Index: two_file_test_main.cc =================================================================== --- two_file_test_main.cc (nonexistent) +++ two_file_test_main.cc (revision 818) @@ -0,0 +1,57 @@ +// two_file_test_main.cc -- a two file test case for gold, main function + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 the main file. See +// two_file_test_1.cc for details. + +#include + +#include "two_file_test.h" + +int +main() +{ + // Initialize common data. + v3 = 789; + for (int i = 0; i < 13; ++i) + v5[i] = v4[i]; + + assert(t1()); + assert(t1a()); + assert(t2()); + assert(t3()); + assert(t4()); + assert(t5()); + assert(t6()); + assert(t7()); + assert(t8()); + assert(t9()); + assert(t10()); + assert(t11()); + assert(t12()); + assert(t13()); + assert(t16()); + assert(t16a()); + assert(t17()); + assert(t18()); + return 0; +} Index: ver_test_2.cc =================================================================== --- ver_test_2.cc (nonexistent) +++ ver_test_2.cc (revision 818) @@ -0,0 +1,40 @@ +// ver_test_2.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +#include "ver_test.h" + +int +t3_2() +{ + TRACE + return t1_2(); +} + +// Calls a versioned function in ver_test_4.cc which should be +// overridden by an unversioned function in the main program. + +int +t4_2() +{ + TRACE + return t4_2a(); +} Index: weak_alias_test_1.cc =================================================================== --- weak_alias_test_1.cc (nonexistent) +++ weak_alias_test_1.cc (revision 818) @@ -0,0 +1,52 @@ +// weak_alias_test_1.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// Define a weak symbol. + +extern int weak_symbol __attribute__ ((weak)); +int weak_symbol = 1; + +// Define a strong symbol with a weak alias. + +int strong_aliased = 2; +extern int weak_aliased __attribute__ ((weak, alias ("strong_aliased"))); + +// And another one. + +int strong_aliased_2 = 5; +extern int weak_aliased_2 __attribute__ ((weak, alias ("strong_aliased_2"))); + +// And a third. + +int strong_aliased_3 = 7; +extern int weak_aliased_3 __attribute__ ((weak, alias ("strong_aliased_3"))); + +// And a fourth. + +int strong_aliased_4 = 8; +extern int weak_aliased_4 __attribute__ ((weak, alias ("strong_aliased_4"))); + +// We want a symbol whose name is the same length as "strong_symbol", +// so that weak_symbol here lines up with weak_symbol in +// weak_alias_test_2.so. + +int Strong_Symbol = 101; Index: basic_test.cc =================================================================== --- basic_test.cc (nonexistent) +++ basic_test.cc (revision 818) @@ -0,0 +1,318 @@ +// basic_test.cc -- a test case for gold + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// The goal of this program is to produce as many different types of +// relocations as we can in a stand-alone program that does not use +// TLS. This program is compiled without optimization. + +// 1 Code reference to global data. +// 2 Code reference to static data. +// 3 Code reference to BSS data. +// 4 Code reference to offset within global data. +// 5 Code reference to offset within static data. +// 6 Code reference to offset within BSS data. +// 7 Switch statement with a table of destinations. +// 8 Taking the address of a label (a gcc extension). +// 9 Taking the address of a nested function (a gcc extension). +// 10 Data reference to global data. +// 11 Data reference to static data. +// 12 Data reference to BSS data. +// 13 Data reference to offset within global data. +// 14 Data reference to offset within static data. +// 15 Data reference to offset within BSS data. +// 16 Virtual table. +// 17 Inline function. +// 18 Call through pointer to method. +// 19 Initialize variable to pointer to method. +// 20 Global constructor and destructor. + +// 1 Code reference to global data. +int t1 = 11; + +// 2 Code reference to static data. +static int t2 = 22; + +// 3 Code reference to BSS data (initialized after program starts, to +// 33). +int t3; + +// 4 Code reference to offset within global data. +char t4[] = "Hello, world"; + +// 5 Code reference to offset within static data. +static char t5[] = "Hello, world"; + +// 6 Code reference to offset within BSS data (initialized after +// program starts, to contents of t4). +char t6[13]; + +// Test cases 1 through 6. + +bool +t1_6() +{ + return (t1 == 11 + && t2 == 22 + && t3 == 33 + && t4[5] == ',' + && t5[7] == 'w' + && t6[9] == 'r'); +} + +// 7 Switch statement with a table of destinations. + +int +t7(int i) +{ + switch (i) + { + case 0: + return 12; + case 1: + return 34; + case 2: + return 56; + case 3: + return 78; + case 4: + return 90; + case 5: + return 13; + case 6: + return 0; + case 7: + return 57; + case 8: + return 79; + case 9: + return 81; + default: + return 144; + } +} + +// 8 Taking the address of a label (a gcc extension). + +int +t8(int i) +{ + for (int j = 0; j < 10; ++j) + { + void* p; + if (i + j > 6) + p = &&lab1; + else + p = &&lab2; + if (j == 7) + goto *p; + } + return 15; + lab1: + return 0; + lab2: + return 12; +} + +// 9 Taking the address of a nested function (a gcc extension). +// Disabled because this is only supported in C, not C++. + +int +t9a(int (*pfn)(int)) +{ + return (*pfn)(10) - 10; +} + +int +t9(int i) +{ +#if 0 + int + t9c(int j) + { + return i + j; + } + return t9a(&t9c); +#else + return i; +#endif +} + +// 10 Data reference to global data. +int* t10 = &t1; + +// 11 Data reference to static data. +int* t11 = &t2; + +// 12 Data reference to BSS data. +int* t12 = &t3; + +// 13 Data reference to offset within global data. +char* t13 = &t4[6]; + +// 14 Data reference to offset within static data. +char* t14 = &t5[8]; + +// 15 Data reference to offset within BSS data. +char* t15 = &t6[10]; + +// Test cases 10 through 15. + +bool +t10_15() +{ + return (*t10 == 11 + && *t11 == 22 + && *t12 == 33 + && *t13 == ' ' + && *t14 == 'o' + && *t15 == 'l'); +} + +// 16 Virtual table. + +class t16a +{ + public: + virtual + ~t16a() + { } + virtual int + t() + { return 83; } +}; + +class t16b : public t16a +{ + public: + virtual int + t() + { return 92; } +}; + +t16b t16v; + +bool +t16() +{ + return t16v.t() == 92; +} + +// 17 Inline function. + +inline int +t17a() +{ + return 74; +} + +bool +t17() +{ + return t17a() == 74; +} + +// 18 Call through pointer to method. + +class t18a +{ + public: + int + ta() + { return 65; } + + int + tb() + { return 90; } +}; + +t18a t18v; + +int +t18f(int (t18a::* p)()) +{ + return (t18v.*p)(); +} + +bool +t18() +{ + return t18f(&t18a::ta) == 65; +} + +// 19 Initialize variable to pointer to method. + +int (t18a::* t19v)() = &t18a::tb; + +bool +t19() +{ + return (t18v.*t19v)() == 90; +} + +// 20 Global constructor and destructor. + +class t20a +{ + public: + t20a() + : i(96) + { } + ~t20a() + { } + int + get() const + { return this->i; } + private: + int i; +}; + +t20a t20v; + +bool +t20() +{ + return t20v.get() == 96; +} + +// Main function. Initialize variables and call test functions. + +int +main() +{ + t3 = 33; + for (int i = 0; i < 13; ++i) + t6[i] = t4[i]; + + if (t1_6() + && t7(6) == 0 + && t8(0) == 0 + && t9(5) == 5 + && t10_15() + && t16() + && t17() + && t18() + && t19() + && t20()) + return 0; + else + return 1; +} Index: justsyms_1.cc =================================================================== --- justsyms_1.cc (nonexistent) +++ justsyms_1.cc (revision 818) @@ -0,0 +1,54 @@ +// justsyms_1.cc -- test --just-symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// The Linux kernel builds an object file using a linker script, and +// then links against that object file using the -R option. This is a +// test for that usage. + +#include +#include +#include +#include +#include + +extern char justsyms_string[]; + +// We expect to get a SIGSEGV. +static void +handle_sigsegv(int) +{ + exit(0); +} + +int +main(int, char**) +{ + // The linker script should arrange for this symbol to be exactly at + // address 0x10000. + assert(reinterpret_cast(justsyms_string) == 0x100); + + // However, since the file was linked with --just-symbols, we should + // not be able to actually access the symbol. + signal(SIGSEGV, handle_sigsegv); + char c = justsyms_string[0]; + exit(c == '\0' ? 1 : c); +} Index: relro_test.cc =================================================================== --- relro_test.cc (nonexistent) +++ relro_test.cc (revision 818) @@ -0,0 +1,156 @@ +// relro_test.cc -- test -z relro for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include +#include +#include +#include +#include +#include +#include + +// This tests we were linked with a script. If we were linked with a +// script, relro currently does not work. + +extern char using_script[] __attribute__ ((weak)); + +// This code is put into a shared library linked with -z relro. + +// i1 and i2 are not relro variables. +int i1 = 1; +static int i2 = 2; + +// P1 is a global relro variable. +int* const p1 = &i1; + +// P2 is a local relro variable. +int* const p2 = &i2; + +// Test symbol addresses. + +bool +t1() +{ + if (using_script) + return true; + + void* i1addr = static_cast(&i1); + void* i2addr = static_cast(&i2); + const void* p1addr = static_cast(&p1); + const void* p2addr = static_cast(&p2); + + // The relro variables should precede the non-relro variables in the + // memory image. + assert(i1addr > p1addr); + assert(i1addr > p2addr); + assert(i2addr > p1addr); + assert(i2addr > p2addr); + + // The relro variables should not be on the same page as the + // non-relro variables. + const size_t page_size = getpagesize(); + uintptr_t i1page = reinterpret_cast(i1addr) & ~ (page_size - 1); + uintptr_t i2page = reinterpret_cast(i2addr) & ~ (page_size - 1); + uintptr_t p1page = reinterpret_cast(p1addr) & ~ (page_size - 1); + uintptr_t p2page = reinterpret_cast(p2addr) & ~ (page_size - 1); + assert(i1page != p1page); + assert(i1page != p2page); + assert(i2page != p1page); + assert(i2page != p2page); + + return true; +} + +// Tell terminate handler that we are throwing from a signal handler. + +static bool throwing; + +// A signal handler for SIGSEGV. + +extern "C" +void +sigsegv_handler(int) +{ + throwing = true; + throw 0; +} + +// The original terminate handler. + +std::terminate_handler orig_terminate; + +// Throwing an exception out of a signal handler doesn't always work +// reliably. When that happens the program will call terminate. We +// set a terminate handler to indicate that the test probably passed. + +void +terminate_handler() +{ + if (!throwing) + { + orig_terminate(); + ::exit(EXIT_FAILURE); + } + fprintf(stderr, + "relro_test: terminate called due to failure to throw through signal handler\n"); + fprintf(stderr, "relro_test: assuming test succeeded\n"); + ::exit(EXIT_SUCCESS); +} + +// Use a separate function to throw the exception, so that we don't +// need to use -fnon-call-exceptions. + +void f2() __attribute__ ((noinline)); +void +f2() +{ + int** pp1 = const_cast(&p1); + *pp1 = &i2; + + // We shouldn't get here--the assignment to *pp1 should write to + // memory which the dynamic linker marked as read-only, giving us a + // SIGSEGV, causing sigsegv_handler to be invoked, to throw past us. + assert(0); +} + +// Changing a relro variable should give us a SIGSEGV. + +bool +t2() +{ + if (using_script) + return true; + + signal(SIGSEGV, sigsegv_handler); + orig_terminate = std::set_terminate(terminate_handler); + + try + { + f2(); + return false; + } + catch (int i) + { + assert(i == 0); + return true; + } +} Index: tls_test_file2.cc =================================================================== --- tls_test_file2.cc (nonexistent) +++ tls_test_file2.cc (revision 818) @@ -0,0 +1,30 @@ +// tls_test.cc -- test TLS variables for gold + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 the definition of a thread-local variable in another file. +// See tls_test.cc for more information. + +#include "tls_test.h" + +__thread int o1; +__thread int o2 = -2; +__thread int o3; Index: binary_unittest.cc =================================================================== --- binary_unittest.cc (nonexistent) +++ binary_unittest.cc (revision 818) @@ -0,0 +1,156 @@ +// binary_unittest.cc -- test Binary_to_elf + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include "gold.h" + +#include +#include +#include +#include + +#include "elfcpp.h" +#include "parameters.h" +#include "errors.h" +#include "options.h" +#include "binary.h" +#include "object.h" + +#include "test.h" +#include "testfile.h" + +namespace gold_testsuite +{ + +using namespace gold; + +template +bool +Sized_binary_test() +{ + parameters_clear_target(); + // We need a pretend Task. + const Task* task = reinterpret_cast(-1); + + // Use the executable itself as the binary data. + struct stat st; + CHECK(::stat(gold::program_name, &st) == 0); + int o = ::open(gold::program_name, O_RDONLY); + CHECK(o >= 0); + unsigned char* filedata = new unsigned char[st.st_size]; + CHECK(::read(o, filedata, st.st_size) == st.st_size); + CHECK(::close(o) == 0); + + Binary_to_elf binary(static_cast(0xffff), size, big_endian, + gold::program_name); + + CHECK(binary.convert(task)); + + Input_file input_file(task, "test.o", binary.converted_data(), + binary.converted_size()); + Object* object = make_elf_object("test.o", &input_file, 0, + binary.converted_data(), + binary.converted_size(), NULL); + CHECK(object != NULL); + if (object == NULL) + return false; + + CHECK(!object->is_dynamic()); + CHECK(object->shnum() == 5); + CHECK(object->section_name(1) == ".data"); + CHECK(object->section_flags(1) == (elfcpp::SHF_ALLOC | elfcpp::SHF_WRITE)); + section_size_type len; + const unsigned char* contents = object->section_contents(1, &len, false); + CHECK(len == convert_to_section_size_type(st.st_size)); + CHECK(memcmp(filedata, contents, len) == 0); + + // Force the symbols to be read internally, so that + // symbol_section_and_value will work. + Read_symbols_data sd; + object->read_symbols(&sd); + delete sd.section_headers; + delete sd.section_names; + delete sd.symbols; + delete sd.symbol_names; + + Sized_relobj* relobj = + static_cast*>(object); + typename Sized_relobj::Address value; + bool is_ordinary; + CHECK(relobj->symbol_section_and_value(0, &value, &is_ordinary) == 0); + CHECK(is_ordinary); + CHECK(value == 0); + CHECK(relobj->symbol_section_and_value(1, &value, &is_ordinary) == 1); + CHECK(is_ordinary); + CHECK(value == 0); + CHECK(relobj->symbol_section_and_value(2, &value, &is_ordinary) == 1); + CHECK(is_ordinary); + CHECK(static_cast(value) == st.st_size); + CHECK(relobj->symbol_section_and_value(3, &value, &is_ordinary) + == elfcpp::SHN_ABS); + CHECK(!is_ordinary); + CHECK(static_cast(value) == st.st_size); + + object->unlock(task); + return true; +} + +bool +Binary_test(Test_report*) +{ + Errors errors(gold::program_name); + set_parameters_errors(&errors); + + General_options options; + set_parameters_options(&options); + + int fail = 0; + +#ifdef HAVE_TARGET_32_LITTLE + if (!Sized_binary_test<32, false>()) + ++fail; + CHECK(¶meters->target() == target_test_pointer_32_little); +#endif + +#ifdef HAVE_TARGET_32_BIG + if (!Sized_binary_test<32, true>()) + ++fail; + CHECK(¶meters->target() == target_test_pointer_32_big); +#endif + +#ifdef HAVE_TARGET_64_LITTLE + if (!Sized_binary_test<64, false>()) + ++fail; + CHECK(¶meters->target() == target_test_pointer_64_little); +#endif + +#ifdef HAVE_TARGET_64_BIG + if (!Sized_binary_test<64, true>()) + ++fail; + CHECK(¶meters->target() == target_test_pointer_64_big); +#endif + + return fail == 0; +} + +Register_test binary_register("Binary", Binary_test); + +} // End namespace gold_testsuite. Index: testmain.cc =================================================================== --- testmain.cc (nonexistent) +++ testmain.cc (revision 818) @@ -0,0 +1,40 @@ +// testmain.cc -- main function for simplisitic gold test framework. + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include "gold.h" + +#include + +#include "test.h" + +using namespace gold_testsuite; + +int +main(int, char** argv) +{ + gold::program_name = argv[0]; + + Test_framework tf; + Register_test::run_tests(&tf); + + exit(tf.failures()); +} Index: Makefile.am =================================================================== --- Makefile.am (nonexistent) +++ Makefile.am (revision 818) @@ -0,0 +1,1303 @@ +# Process this file with automake to generate Makefile.in + +# As far as I can tell automake testing support assumes that the build +# system and the host system are the same. So these tests will not +# work when building with a cross-compiler. + +# Ignore warning about AM_PROG_CC_C_O due to large_CFLAGS +AUTOMAKE_OPTIONS = foreign -Wno-portability + +# The two_file_test tests -fmerge-constants, so we simply always turn +# it on. This may need to be controlled by a configure option +# eventually. +AM_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS) -fmerge-constants +AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) -fmerge-constants + +AM_CPPFLAGS = \ + -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../../include \ + -I$(srcdir)/../../elfcpp -I.. \ + -DLOCALEDIR="\"$(datadir)/locale\"" \ + @INCINTL@ + +TEST_READELF = $(top_builddir)/../binutils/readelf +TEST_OBJDUMP = $(top_builddir)/../binutils/objdump +TEST_CXXFILT = $(top_builddir)/../binutils/cxxfilt +TEST_STRIP = $(top_builddir)/../binutils/strip-new +TEST_AR = $(top_builddir)/../binutils/ar +TEST_NM = $(top_builddir)/../binutils/nm-new +TEST_AS = $(top_builddir)/../gas/as-new + +if PLUGINS +LIBDL = -ldl +endif + +if THREADS +THREADSLIB = -lpthread +endif + +if OMP_SUPPORT +TLS_TEST_C_CFLAGS = -fopenmp +endif + +# 'make clean' is good about deleting some intermediate files (such as +# .o's), but not all of them (such as .so's and .err files). We +# improve on that here. automake-1.9 info docs say "mostlyclean" is +# the right choice for files 'make' builds that people rebuild. +MOSTLYCLEANFILES = *.so *.syms *.stdout + + +# We will add to these later, for each individual test. Note +# that we add each test under check_SCRIPTS or check_PROGRAMS; +# the TESTS variable is automatically populated from these. +check_SCRIPTS = +check_DATA = +check_PROGRAMS = +BUILT_SOURCES = + +TESTS = $(check_SCRIPTS) $(check_PROGRAMS) + +# --------------------------------------------------------------------- +# These tests test the internals of gold (unittests). + +# Infrastucture needed for the unittests +check_LIBRARIES = libgoldtest.a +libgoldtest_a_SOURCES = test.cc testmain.cc testfile.cc + +DEPENDENCIES = \ + libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL_DEP) +LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \ + $(THREADSLIB) $(LIBDL) + + +# The unittests themselves +check_PROGRAMS += object_unittest +object_unittest_SOURCES = object_unittest.cc + +check_PROGRAMS += binary_unittest +binary_unittest_SOURCES = binary_unittest.cc + + +# --------------------------------------------------------------------- +# These tests test the output of gold (end-to-end tests). In +# particular, they make sure that gold can link "difficult" object +# files, and the resulting object files run correctly. These can only +# run if we've built ld-new for the native architecture (that is, +# we're not cross-compiling it), since we run ld-new as part of these +# tests. We use the gcc-specific flag '-B' to use our linker instead +# of the default linker, which is why we only run our tests under gcc. + +if NATIVE_LINKER +if GCC + +# Infrastucture needed for the unittests: a directory where the linker +# is named 'ld'. This is because the -B flag appends 'ld' to its arg. +gcctestdir/ld: ../ld-new + test -d gcctestdir || mkdir -p gcctestdir + rm -f gcctestdir/ld + (cd gcctestdir && $(LN_S) ../../ld-new ld) + +# Each of these .o's is a useful, small complete program. They're +# particularly useful for making sure ld-new's flags do what they're +# supposed to (hence their names), but are used for many tests that +# don't actually involve analyzing input data. +flagstest_debug.o: constructor_test.cc + $(CXXCOMPILE) -O0 -g -c -o $@ $< +flagstest_ndebug.o: constructor_test.cc + $(CXXCOMPILE) -O0 -c -o $@ $< + + +check_SCRIPTS += gc_comdat_test.sh +check_DATA += gc_comdat_test.stdout +MOSTLYCLEANFILES += gc_comdat_test +gc_comdat_test_1.o: gc_comdat_test_1.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +gc_comdat_test_2.o: gc_comdat_test_2.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +gc_comdat_test: gc_comdat_test_1.o gc_comdat_test_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_comdat_test_1.o gc_comdat_test_2.o +gc_comdat_test.stdout: gc_comdat_test + $(TEST_NM) -C gc_comdat_test > gc_comdat_test.stdout + +check_SCRIPTS += gc_tls_test.sh +check_DATA += gc_tls_test.stdout +MOSTLYCLEANFILES += gc_tls_test +gc_tls_test.o: gc_tls_test.cc + $(CXXCOMPILE) -O0 -c -g -o $@ $< +gc_tls_test:gc_tls_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_tls_test.o +gc_tls_test.stdout: gc_tls_test + $(TEST_NM) -C gc_tls_test > gc_tls_test.stdout + +check_SCRIPTS += icf_test.sh +check_DATA += icf_test.stdout +MOSTLYCLEANFILES += icf_test +icf_test.o: icf_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +icf_test: icf_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_test.o +icf_test.stdout: icf_test + $(TEST_NM) -C icf_test > icf_test.stdout + +check_SCRIPTS += icf_keep_unique_test.sh +check_DATA += icf_keep_unique_test.stdout +MOSTLYCLEANFILES += icf_keep_unique_test +icf_keep_unique_test.o: icf_keep_unique_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +icf_keep_unique_test: icf_keep_unique_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all -Wl,--keep-unique,_Z11unique_funcv icf_keep_unique_test.o +icf_keep_unique_test.stdout: icf_keep_unique_test + $(TEST_NM) -C icf_keep_unique_test > icf_keep_unique_test.stdout + +check_SCRIPTS += icf_safe_test.sh +check_DATA += icf_safe_test.stdout +MOSTLYCLEANFILES += icf_safe_test +icf_safe_test.o: icf_safe_test.cc + $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +icf_safe_test: icf_safe_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -Wl,--icf=safe icf_safe_test.o +icf_safe_test.stdout: icf_safe_test + $(TEST_NM) icf_safe_test > icf_safe_test.stdout + +check_PROGRAMS += basic_test +check_PROGRAMS += basic_static_test +check_PROGRAMS += basic_pic_test +check_PROGRAMS += basic_static_pic_test +basic_test.o: basic_test.cc + $(CXXCOMPILE) -O0 -c -o $@ $< +basic_test: basic_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ basic_test.o +basic_static_test: basic_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -static basic_test.o + +basic_pic_test.o: basic_test.cc + $(CXXCOMPILE) -O0 -c -fpic -o $@ $< +basic_pic_test: basic_pic_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ basic_pic_test.o +basic_static_pic_test: basic_pic_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o + +check_PROGRAMS += basic_pie_test +basic_pie_test.o: basic_test.cc + $(CXXCOMPILE) -O0 -c -fpie -o $@ $< +basic_pie_test: basic_pie_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -pie basic_pie_test.o + +check_PROGRAMS += constructor_test +check_PROGRAMS += constructor_static_test +constructor_test_SOURCES = constructor_test.cc +constructor_test_DEPENDENCIES = gcctestdir/ld +constructor_test_LDFLAGS = -Bgcctestdir/ + +constructor_static_test_SOURCES = $(constructor_test_SOURCES) +constructor_static_test_DEPENDENCIES = $(constructor_test_DEPENDENCIES) +constructor_static_test_LDFLAGS = $(constructor_test_LDFLAGS) -static + + +check_PROGRAMS += two_file_test +check_PROGRAMS += two_file_static_test +check_PROGRAMS += two_file_pic_test +two_file_test_SOURCES = \ + two_file_test_1.cc \ + two_file_test_1b.cc \ + two_file_test_2.cc \ + two_file_test_main.cc \ + two_file_test.h +two_file_test_DEPENDENCIES = gcctestdir/ld +two_file_test_LDFLAGS = -Bgcctestdir/ + +two_file_static_test_SOURCES = $(two_file_test_SOURCES) +two_file_static_test_DEPENDENCIES = $(two_file_test_DEPENDENCIES) +two_file_static_test_LDFLAGS = $(two_file_test_LDFLAGS) -static + +two_file_pic_test_SOURCES = two_file_test_main.cc +two_file_pic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o +two_file_pic_test_LDFLAGS = -Bgcctestdir/ +two_file_pic_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o + + +check_PROGRAMS += two_file_shared_1_test +check_PROGRAMS += two_file_shared_2_test +check_PROGRAMS += two_file_shared_1_pic_2_test +check_PROGRAMS += two_file_shared_2_pic_1_test +check_PROGRAMS += two_file_same_shared_test +check_PROGRAMS += two_file_separate_shared_12_test +check_PROGRAMS += two_file_separate_shared_21_test +two_file_test_1_pic.o: two_file_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +two_file_test_1b_pic.o: two_file_test_1b.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +two_file_test_2_pic.o: two_file_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +two_file_shared_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o +two_file_shared_2.so: two_file_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2_pic.o +two_file_shared.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o + +two_file_shared_1_test_SOURCES = two_file_test_2.cc two_file_test_main.cc +two_file_shared_1_test_DEPENDENCIES = gcctestdir/ld two_file_shared_1.so +two_file_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_1_test_LDADD = two_file_shared_1.so + +two_file_shared_2_test_SOURCES = two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc +two_file_shared_2_test_DEPENDENCIES = gcctestdir/ld two_file_shared_2.so +two_file_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_2_test_LDADD = two_file_shared_2.so + +two_file_shared_1_pic_2_test_SOURCES = two_file_test_main.cc +two_file_shared_1_pic_2_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1.so two_file_test_1_pic.o two_file_test_1b_pic.o +two_file_shared_1_pic_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_1_pic_2_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_shared_2.so + +two_file_shared_2_pic_1_test_SOURCES = two_file_test_main.cc +two_file_shared_2_pic_1_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_2.so two_file_test_2_pic.o +two_file_shared_2_pic_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_2_pic_1_test_LDADD = two_file_test_2_pic.o two_file_shared_1.so + +two_file_same_shared_test_SOURCES = two_file_test_main.cc +two_file_same_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared.so +two_file_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_same_shared_test_LDADD = two_file_shared.so + +two_file_separate_shared_12_test_SOURCES = two_file_test_main.cc +two_file_separate_shared_12_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1.so two_file_shared_2.so +two_file_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_separate_shared_12_test_LDADD = \ + two_file_shared_1.so two_file_shared_2.so + +two_file_separate_shared_21_test_SOURCES = two_file_test_main.cc +two_file_separate_shared_21_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1.so two_file_shared_2.so +two_file_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_separate_shared_21_test_LDADD = \ + two_file_shared_2.so two_file_shared_1.so + +check_PROGRAMS += two_file_relocatable_test +two_file_relocatable_test_SOURCES = two_file_test_main.cc +two_file_relocatable_test_DEPENDENCIES = \ + gcctestdir/ld two_file_relocatable.o +two_file_relocatable_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_relocatable_test_LDADD = two_file_relocatable.o +two_file_relocatable.o: gcctestdir/ld two_file_test_1.o two_file_test_1b.o two_file_test_2.o + gcctestdir/ld -r -o $@ two_file_test_1.o two_file_test_1b.o two_file_test_2.o + +check_PROGRAMS += two_file_pie_test +two_file_test_1_pie.o: two_file_test_1.cc + $(CXXCOMPILE) -c -fpie -o $@ $< +two_file_test_1b_pie.o: two_file_test_1b.cc + $(CXXCOMPILE) -c -fpie -o $@ $< +two_file_test_2_pie.o: two_file_test_2.cc + $(CXXCOMPILE) -c -fpie -o $@ $< +two_file_test_main_pie.o: two_file_test_main.cc + $(CXXCOMPILE) -c -fpie -o $@ $< +two_file_pie_test: two_file_test_1_pie.o two_file_test_1b_pie.o \ + two_file_test_2_pie.o two_file_test_main_pie.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -pie two_file_test_1_pie.o two_file_test_1b_pie.o two_file_test_2_pie.o two_file_test_main_pie.o + +check_SCRIPTS += two_file_shared.sh +check_DATA += two_file_shared.dbg +MOSTLYCLEANFILES += two_file_shared.dbg +two_file_shared.dbg: two_file_shared.so + $(TEST_READELF) -w $< >$@ 2>/dev/null + +# The nonpic tests will fail on platforms which can not put non-PIC +# code into shared libraries, so we just don't run them in that case. +if FN_PTRS_IN_SO_WITHOUT_PIC + +check_PROGRAMS += two_file_shared_1_nonpic_test +check_PROGRAMS += two_file_shared_2_nonpic_test +check_PROGRAMS += two_file_same_shared_nonpic_test +check_PROGRAMS += two_file_separate_shared_12_nonpic_test +check_PROGRAMS += two_file_separate_shared_21_nonpic_test +check_PROGRAMS += two_file_mixed_shared_test +check_PROGRAMS += two_file_mixed_2_shared_test +two_file_shared_1_nonpic.so: two_file_test_1.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o +two_file_shared_2_nonpic.so: two_file_test_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2.o +two_file_shared_nonpic.so: two_file_test_1.o two_file_test_1b.o two_file_test_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o two_file_test_2.o +two_file_shared_mixed.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o +two_file_shared_mixed_1.so: two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so + +two_file_shared_1_nonpic_test_SOURCES = \ + two_file_test_2.cc two_file_test_main.cc +two_file_shared_1_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1_nonpic.so +two_file_shared_1_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_1_nonpic_test_LDADD = two_file_shared_1_nonpic.so + +two_file_shared_2_nonpic_test_SOURCES = \ + two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc +two_file_shared_2_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_2_nonpic.so +two_file_shared_2_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_shared_2_nonpic_test_LDADD = two_file_shared_2_nonpic.so + +two_file_same_shared_nonpic_test_SOURCES = two_file_test_main.cc +two_file_same_shared_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_nonpic.so +two_file_same_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_same_shared_nonpic_test_LDADD = two_file_shared_nonpic.so + +two_file_separate_shared_12_nonpic_test_SOURCES = two_file_test_main.cc +two_file_separate_shared_12_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so +two_file_separate_shared_12_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_separate_shared_12_nonpic_test_LDADD = \ + two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so + +two_file_separate_shared_21_nonpic_test_SOURCES = two_file_test_main.cc +two_file_separate_shared_21_nonpic_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so +two_file_separate_shared_21_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_separate_shared_21_nonpic_test_LDADD = \ + two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so + +two_file_mixed_shared_test_SOURCES = two_file_test_main.cc +two_file_mixed_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed.so +two_file_mixed_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_mixed_shared_test_LDADD = two_file_shared_mixed.so + +two_file_mixed_2_shared_test_SOURCES = two_file_test_main.cc +two_file_mixed_2_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed_1.so two_file_shared_2.so +two_file_mixed_2_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +two_file_mixed_2_shared_test_LDADD = two_file_shared_mixed_1.so two_file_shared_2.so + +endif FN_PTRS_IN_SO_WITHOUT_PIC + +check_PROGRAMS += two_file_strip_test +two_file_strip_test: two_file_test + $(TEST_STRIP) -o two_file_strip_test two_file_test + +check_PROGRAMS += two_file_same_shared_strip_test +two_file_same_shared_strip_test_SOURCES = two_file_test_main.cc +two_file_same_shared_strip_test_DEPENDENCIES = \ + gcctestdir/ld two_file_shared_strip.so +two_file_same_shared_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R. +two_file_same_shared_strip_test_LDADD = two_file_shared_strip.so +two_file_shared_strip.so: two_file_shared.so + $(TEST_STRIP) -S -o two_file_shared_strip.so two_file_shared.so + +check_PROGRAMS += common_test_1 +common_test_1_SOURCES = common_test_1.c +common_test_1_DEPENDENCIES = gcctestdir/ld +common_test_1_LDFLAGS = -Bgcctestdir/ + +check_PROGRAMS += exception_test +check_PROGRAMS += exception_static_test +check_PROGRAMS += exception_shared_1_test +check_PROGRAMS += exception_shared_2_test +check_PROGRAMS += exception_same_shared_test +check_PROGRAMS += exception_separate_shared_12_test +check_PROGRAMS += exception_separate_shared_21_test +exception_test_1_pic.o: exception_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +exception_test_2_pic.o: exception_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +exception_shared_1.so: exception_test_1_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o +exception_shared_2.so: exception_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared exception_test_2_pic.o +exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o exception_test_2_pic.o + +exception_test_SOURCES = \ + exception_test_main.cc \ + exception_test_1.cc \ + exception_test_2.cc \ + exception_test.h +exception_test_DEPENDENCIES = gcctestdir/ld +exception_test_LDFLAGS = -Bgcctestdir/ + +exception_static_test_SOURCES = $(exception_test_SOURCES) +exception_static_test_DEPENDENCIES = $(exception_test_DEPENDENCIES) +exception_static_test_LDFLAGS = $(exception_test_LDFLAGS) -static + +exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc +exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so +exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +exception_shared_1_test_LDADD = exception_shared_1.so + +exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc +exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so +exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +exception_shared_2_test_LDADD = exception_shared_2.so + +exception_same_shared_test_SOURCES = exception_test_main.cc +exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so +exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +exception_same_shared_test_LDADD = exception_shared.so + +exception_separate_shared_12_test_SOURCES = exception_test_main.cc +exception_separate_shared_12_test_DEPENDENCIES = \ + gcctestdir/ld exception_shared_1.so exception_shared_2.so +exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +exception_separate_shared_12_test_LDADD = \ + exception_shared_1.so exception_shared_2.so + +exception_separate_shared_21_test_SOURCES = exception_test_main.cc +exception_separate_shared_21_test_DEPENDENCIES = \ + gcctestdir/ld exception_shared_1.so exception_shared_2.so +exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +exception_separate_shared_21_test_LDADD = \ + exception_shared_2.so exception_shared_1.so + + +check_PROGRAMS += weak_test +weak_test_SOURCES = weak_test.cc +weak_test_DEPENDENCIES = gcctestdir/ld +weak_test_LDFLAGS = -Bgcctestdir/ + +check_PROGRAMS += weak_undef_test +MOSTLYCLEANFILES += alt/weak_undef_lib.so +weak_undef_test_SOURCES = weak_undef_test.cc +weak_undef_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib.so alt/weak_undef_lib.so +weak_undef_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt +weak_undef_test_LDADD = -L . weak_undef_lib.so +weak_undef_file1.o: weak_undef_file1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_undef_file2.o: weak_undef_file2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_undef_lib.so: weak_undef_file1.o + $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1.o +alt/weak_undef_lib.so: weak_undef_file2.o + test -d alt || mkdir -p alt + $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2.o + +if FN_PTRS_IN_SO_WITHOUT_PIC +check_PROGRAMS += weak_undef_nonpic_test +MOSTLYCLEANFILES += alt/weak_undef_lib_nonpic.so +weak_undef_nonpic_test_SOURCES = weak_undef_test.cc +weak_undef_nonpic_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib_nonpic.so alt/weak_undef_lib_nonpic.so +weak_undef_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt +weak_undef_nonpic_test_LDADD = -L . weak_undef_lib_nonpic.so +weak_undef_file1_nonpic.o: weak_undef_file1.cc + $(CXXCOMPILE) -c -o $@ $< +weak_undef_file2_nonpic.o: weak_undef_file2.cc + $(CXXCOMPILE) -c -o $@ $< +weak_undef_lib_nonpic.so: weak_undef_file1_nonpic.o + $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1_nonpic.o +alt/weak_undef_lib_nonpic.so: weak_undef_file2_nonpic.o + test -d alt || mkdir -p alt + $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2_nonpic.o +endif FN_PTRS_IN_SO_WITHOUT_PIC + + +check_PROGRAMS += weak_alias_test +weak_alias_test_SOURCES = weak_alias_test_main.cc +weak_alias_test_DEPENDENCIES = \ + gcctestdir/ld weak_alias_test_1.so weak_alias_test_2.so \ + weak_alias_test_3.o weak_alias_test_4.so +weak_alias_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +weak_alias_test_LDADD = \ + weak_alias_test_1.so weak_alias_test_2.so weak_alias_test_3.o \ + weak_alias_test_4.so +weak_alias_test_1_pic.o: weak_alias_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_alias_test_1.so: weak_alias_test_1_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_1_pic.o +weak_alias_test_2_pic.o: weak_alias_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_alias_test_2.so: weak_alias_test_2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_2_pic.o +weak_alias_test_3.o: weak_alias_test_3.cc + $(CXXCOMPILE) -c -o $@ $< +weak_alias_test_4_pic.o: weak_alias_test_4.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_alias_test_4.so: weak_alias_test_4_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_4_pic.o + +check_SCRIPTS += weak_plt.sh +check_PROGRAMS += weak_plt +check_DATA += weak_plt_shared.so +weak_plt_main_pic.o: weak_plt_main.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_plt: weak_plt_main_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ weak_plt_main_pic.o +weak_plt_shared_pic.o: weak_plt_shared.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +weak_plt_shared.so: weak_plt_shared_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared weak_plt_shared_pic.o + +check_PROGRAMS += copy_test +copy_test_SOURCES = copy_test.cc +copy_test_DEPENDENCIES = gcctestdir/ld copy_test_1.so copy_test_2.so +copy_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +copy_test_LDADD = copy_test_1.so copy_test_2.so +copy_test_1_pic.o: copy_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +copy_test_1.so: gcctestdir/ld copy_test_1_pic.o + $(CXXLINK) -Bgcctestdir/ -shared copy_test_1_pic.o +copy_test_2_pic.o: copy_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +copy_test_2.so: gcctestdir/ld copy_test_2_pic.o + $(CXXLINK) -Bgcctestdir/ -shared copy_test_2_pic.o + +if TLS + +check_PROGRAMS += tls_test +check_PROGRAMS += tls_pic_test +check_PROGRAMS += tls_shared_test +check_PROGRAMS += tls_shared_ie_test +check_PROGRAMS += tls_shared_gd_to_ie_test +tls_test_pic.o: tls_test.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +tls_test_file2_pic.o: tls_test_file2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +tls_test_c_pic.o: tls_test_c.c + $(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $< +tls_test_shared.so: tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o -Wl,-z,defs +tls_test_shared2.so: tls_test_file2_pic.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_pic.o + +tls_test_pic_ie.o: tls_test.cc + $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $< +tls_test_file2_pic_ie.o: tls_test_file2.cc + $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $< +tls_test_c_pic_ie.o: tls_test_c.c + $(COMPILE) -c -fpic -ftls-model=initial-exec $(TLS_TEST_C_CFLAGS) -o $@ $< +tls_test_ie_shared.so: tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o + +tls_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc tls_test.h +tls_test_DEPENDENCIES = gcctestdir/ld tls_test_c.o +tls_test_LDFLAGS = -Bgcctestdir/ +tls_test_LDADD = tls_test_c.o -lpthread +tls_test_c.o: tls_test_c.c + $(COMPILE) -c $(TLS_TEST_C_CFLAGS) -o $@ $< + +tls_pic_test_SOURCES = tls_test_main.cc +tls_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o \ + tls_test_c_pic.o +tls_pic_test_LDFLAGS = -Bgcctestdir/ +tls_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o \ + -lpthread + +tls_shared_test_SOURCES = tls_test_main.cc +tls_shared_test_DEPENDENCIES = gcctestdir/ld tls_test_shared.so +tls_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_test_LDADD = tls_test_shared.so -lpthread + +tls_shared_ie_test_SOURCES = tls_test_main.cc +tls_shared_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_ie_shared.so +tls_shared_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_ie_test_LDADD = tls_test_ie_shared.so -lpthread + +tls_shared_gd_to_ie_test_SOURCES = tls_test_main.cc +tls_shared_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o \ + tls_test_c_pic.o tls_test_shared2.so +tls_shared_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_gd_to_ie_test_LDADD = tls_test_pic.o tls_test_c_pic.o \ + tls_test_shared2.so -lpthread + +if TLS_GNU2_DIALECT + +check_PROGRAMS += tls_shared_gnu2_gd_to_ie_test + +tls_test_gnu2.o: tls_test.cc + $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $< +tls_test_file2_gnu2.o: tls_test_file2.cc + $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $< +tls_test_c_gnu2.o: tls_test_c.c + $(COMPILE) -c -fpic -mtls-dialect=gnu2 $(TLS_TEST_C_CFLAGS) -o $@ $< +tls_test_gnu2_shared2.so: tls_test_file2_gnu2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_gnu2.o + +tls_shared_gnu2_gd_to_ie_test_SOURCES = tls_test_main.cc +tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2.o \ + tls_test_c_gnu2.o tls_test_gnu2_shared2.so +tls_shared_gnu2_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_gnu2_gd_to_ie_test_LDADD = tls_test_gnu2.o tls_test_c_gnu2.o \ + tls_test_gnu2_shared2.so -lpthread + +if TLS_DESCRIPTORS + +check_PROGRAMS += tls_shared_gnu2_test + +tls_test_gnu2_shared.so: tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o + +tls_shared_gnu2_test_SOURCES = tls_test_main.cc +tls_shared_gnu2_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2_shared.so +tls_shared_gnu2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_gnu2_test_LDADD = tls_test_gnu2_shared.so -lpthread + +endif TLS_DESCRIPTORS + +endif TLS_GNU2_DIALECT + +if STATIC_TLS +check_PROGRAMS += tls_static_test +check_PROGRAMS += tls_static_pic_test + +tls_static_test_SOURCES = $(tls_test_SOURCES) +tls_static_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) +tls_static_test_LDFLAGS = $(tls_test_LDFLAGS) -static +tls_static_test_LDADD = $(tls_test_LDADD) + +tls_static_pic_test_SOURCES = $(tls_pic_test_SOURCES) +tls_static_pic_test_DEPENDENCIES = $(tls_pic_test_DEPENDENCIES) +tls_static_pic_test_LDFLAGS = $(tls_pic_test_LDFLAGS) -static +tls_static_pic_test_LDADD = $(tls_pic_test_LDADD) +endif + +if FN_PTRS_IN_SO_WITHOUT_PIC +check_PROGRAMS += tls_shared_nonpic_test +tls_test_shared_nonpic.so: tls_test.o tls_test_file2.o tls_test_c.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared tls_test.o tls_test_file2.o tls_test_c.o + +tls_shared_nonpic_test_SOURCES = tls_test_main.cc +tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so +tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread +endif FN_PTRS_IN_SO_WITHOUT_PIC + +endif TLS + +check_PROGRAMS += many_sections_test +many_sections_test_SOURCES = many_sections_test.cc +many_sections_test_DEPENDENCIES = gcctestdir/ld +many_sections_test_LDFLAGS = -Bgcctestdir/ -rdynamic + +BUILT_SOURCES += many_sections_define.h +MOSTLYCLEANFILES += many_sections_define.h +many_sections_define.h: + (for i in `seq 1 70000`; do \ + echo "int var_$$i __attribute__((section(\"section_$$i\"))) = $$i;"; \ + done) > $@.tmp + mv -f $@.tmp $@ + +BUILT_SOURCES += many_sections_check.h +MOSTLYCLEANFILES += many_sections_check.h +many_sections_check.h: + (for i in `seq 1 1000 70000`; do \ + echo "assert(var_$$i == $$i);"; \ + done) > $@.tmp + mv -f $@.tmp $@ + +check_PROGRAMS += many_sections_r_test +many_sections_r_test.o: many_sections_test.o gcctestdir/ld + gcctestdir/ld -r -o $@ many_sections_test.o +many_sections_r_test: many_sections_r_test.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ many_sections_r_test.o $(LIBS) + +if CONSTRUCTOR_PRIORITY + +check_PROGRAMS += initpri1 +initpri1_SOURCES = initpri1.c +initpri1_DEPENDENCIES = gcctestdir/ld +initpri1_LDFLAGS = -Bgcctestdir/ + +endif + + +# Test --detect-odr-violations +check_SCRIPTS += debug_msg.sh + +# Create the data files that debug_msg.sh analyzes. +check_DATA += debug_msg.err +MOSTLYCLEANFILES += debug_msg.err +debug_msg.o: debug_msg.cc + $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/debug_msg.cc +odr_violation1.o: odr_violation1.cc + $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation1.cc +odr_violation2.o: odr_violation2.cc + $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation2.cc +debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld + @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o 2>$@; \ + then \ + echo 1>&2 "Link of debug_msg should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + +# See if we can also detect problems when we're linking .so's, not .o's. +check_DATA += debug_msg_so.err +MOSTLYCLEANFILES += debug_msg_so.err +debug_msg.so: debug_msg.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc +odr_violation1.so: odr_violation1.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc +odr_violation2.so: odr_violation2.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc +debug_msg_so.err: debug_msg.so odr_violation1.so odr_violation2.so gcctestdir/ld + @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so 2>$@; \ + then \ + echo 1>&2 "Link of debug_msg_so should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + +# We also want to make sure we do something reasonable when there's no +# debug info available. For the best test, we use .so's. +check_DATA += debug_msg_ndebug.err +MOSTLYCLEANFILES += debug_msg_ndebug.err +debug_msg_ndebug.so: debug_msg.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc +odr_violation1_ndebug.so: odr_violation1.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc +odr_violation2_ndebug.so: odr_violation2.cc gcctestdir/ld + $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc +debug_msg_ndebug.err: debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so gcctestdir/ld + @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so 2>$@; \ + then \ + echo 1>&2 "Link of debug_msg_ndebug should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + + +# Similar to --detect-odr-violations: check for undefined symbols in .so's +check_SCRIPTS += undef_symbol.sh +check_DATA += undef_symbol.err +MOSTLYCLEANFILES += undef_symbol.err +undef_symbol.o: undef_symbol.cc + $(CXXCOMPILE) -O0 -g -c -fPIC $< +undef_symbol.so: undef_symbol.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared undef_symbol.o +undef_symbol.err: undef_symbol_main.o undef_symbol.so gcctestdir/ld + @echo $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so "2>$@" + @if $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so 2>$@; \ + then \ + echo 1>&2 "Link of undef_symbol_test should have failed"; \ + rm -f $@; \ + exit 1; \ + fi + + +# Test -o when emitting to a special file (such as something in /dev). +check_PROGRAMS += flagstest_o_specialfile +flagstest_o_specialfile: flagstest_debug.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< 2>&1 | cat > $@ + chmod a+x $@ + test -s $@ + +if HAVE_ZLIB + +# Test --compress-debug-sections. FIXME: check we actually compress. +check_PROGRAMS += flagstest_compress_debug_sections +flagstest_compress_debug_sections: flagstest_debug.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib + test -s $@ + + +# The specialfile output has a tricky case when we also compress debug +# sections, because it requires output-file resizing. +check_PROGRAMS += flagstest_o_specialfile_and_compress_debug_sections +flagstest_o_specialfile_and_compress_debug_sections: flagstest_debug.o \ + gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< -Wl,--compress-debug-sections=zlib 2>&1 | cat > $@ + chmod a+x $@ + test -s $@ + +endif HAVE_ZLIB + +# Test symbol versioning. +check_PROGRAMS += ver_test +ver_test_SOURCES = ver_test_main.cc +ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so +ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so +ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so +ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_2.script ver_test_2.o ver_test_4.so +ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o +ver_test_1.o: ver_test_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +ver_test_2.o: ver_test_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +ver_test_3.o: ver_test_3.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +ver_test_4.o: ver_test_4.cc + $(CXXCOMPILE) -c -fpic -o $@ $< + +check_SCRIPTS += ver_test_1.sh +check_DATA += ver_test_1.syms +ver_test_1.syms: ver_test_1.so + $(TEST_READELF) -s $< >$@ 2>/dev/null + +check_PROGRAMS += ver_test_2 +ver_test_2_SOURCES = ver_test_main_2.cc +ver_test_2_DEPENDENCIES = gcctestdir/ld ver_test_4.so ver_test_2.so +ver_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_2_LDADD = ver_test_4.so ver_test_2.so + +check_SCRIPTS += ver_test_2.sh +check_DATA += ver_test_2.syms +ver_test_2.syms: ver_test_2 + $(TEST_READELF) -s $< >$@ 2>/dev/null + +check_SCRIPTS += ver_test_4.sh +check_DATA += ver_test_4.syms +ver_test_4.syms: ver_test_4.so + $(TEST_READELF) -s $< >$@ 2>/dev/null + +ver_test_5.so: ver_test_5.o $(srcdir)/ver_test_5.script ver_test_4.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_5.script ver_test_5.o ver_test_4.so +ver_test_5.o: ver_test_5.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +check_SCRIPTS += ver_test_5.sh +check_DATA += ver_test_5.syms +ver_test_5.syms: ver_test_5.so + $(TEST_READELF) -s $< >$@ 2>/dev/null + +check_PROGRAMS += ver_test_6 +ver_test_6_SOURCES = ver_test_6.c +ver_test_6_DEPENDENCIES = gcctestdir/ld ver_test_2.so +ver_test_6_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_6_LDADD = ver_test_2.so + +ver_test_7.so: ver_test_4.o $(srcdir)/ver_test_4.script ver_test_7.o gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o ver_test_7.o +ver_test_7.o: ver_test_7.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +check_SCRIPTS += ver_test_7.sh +check_DATA += ver_test_7.syms +ver_test_7.syms: ver_test_7.so + $(TEST_READELF) -s $< >$@ 2>/dev/null + +check_PROGRAMS += ver_test_8 +ver_test_8_SOURCES = two_file_test_main.cc +ver_test_8_DEPENDENCIES = gcctestdir/ld ver_test_8_1.so ver_test_8_2.so +ver_test_8_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_8_LDADD = ver_test_8_1.so ver_test_8_2.so +ver_test_8_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so +ver_test_8_2.so: two_file_test_2_pic.o $(srcdir)/ver_test_8.script gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_8.script two_file_test_2_pic.o + +check_PROGRAMS += ver_test_9 +ver_test_9_SOURCES = ver_test_main.cc +ver_test_9_DEPENDENCIES = gcctestdir/ld ver_test_9.so +ver_test_9_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_9_LDADD = ver_test_9.so +ver_test_9.so: ver_test_9.o ver_test_4.so ver_test_5.so gcctestdir/ld + $(CXXLINK) -Bgcctestdir/ -shared ver_test_9.o ver_test_5.so ver_test_4.so +ver_test_9.o: ver_test_9.cc + $(CXXCOMPILE) -c -fpic -o $@ $< + +check_SCRIPTS += ver_test_10.sh +check_DATA += ver_test_10.syms +ver_test_10.syms: ver_test_10.so + $(TEST_READELF) -s $< >$@ 2>/dev/null +ver_test_10.so: gcctestdir/ld ver_test_2.o ver_test_10.script + $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_10.script ver_test_2.o + +check_PROGRAMS += ver_test_11 +MOSTLYCLEANFILES += ver_test_11.a +ver_test_11_SOURCES = ver_test_main_2.cc +ver_test_11_DEPENDENCIES = gcctestdir/ld ver_test_11.a +ver_test_11_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +ver_test_11_LDADD = ver_test_11.a +ver_test_11.a: ver_test_1.o ver_test_2.o ver_test_4.o + $(TEST_AR) rc $@ $^ + +check_PROGRAMS += protected_1 +protected_1_SOURCES = \ + protected_main_1.cc protected_main_2.cc protected_main_3.cc +protected_1_DEPENDENCIES = gcctestdir/ld protected_1.so +protected_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +protected_1_LDADD = protected_1.so + +protected_1.so: gcctestdir/ld protected_1_pic.o protected_2_pic.o protected_3_pic.o + $(CXXLINK) -Bgcctestdir/ -shared protected_1_pic.o protected_2_pic.o protected_3_pic.o +protected_1_pic.o: protected_1.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +protected_2_pic.o: protected_2.cc + $(CXXCOMPILE) -c -fpic -o $@ $< +protected_3_pic.o: protected_3.cc + $(CXXCOMPILE) -c -fpic -o $@ $< + +check_PROGRAMS += protected_2 +protected_2_SOURCES = protected_main_1.cc protected_3.cc +protected_2_DEPENDENCIES = gcctestdir/ld protected_1.so +protected_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +protected_2_LDADD = protected_1.so + +check_PROGRAMS += relro_test +relro_test_SOURCES = relro_test_main.cc +relro_test_DEPENDENCIES = gcctestdir/ld relro_test.so +relro_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +relro_test_LDADD = relro_test.so +relro_test.so: gcctestdir/ld relro_test_pic.o + $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro relro_test_pic.o +relro_test_pic.o: relro_test.cc + $(CXXCOMPILE) -c -fpic -o $@ $< + +check_PROGRAMS += relro_script_test +relro_script_test_SOURCES = relro_test_main.cc +relro_script_test_DEPENDENCIES = gcctestdir/ld relro_script_test.so +relro_script_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +relro_script_test_LDADD = relro_script_test.so +relro_script_test.so: gcctestdir/ld relro_script_test.t relro_test_pic.o + $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -T $(srcdir)/relro_script_test.t relro_test_pic.o + +check_PROGRAMS += script_test_1 +script_test_1_SOURCES = script_test_1.cc +script_test_1_DEPENDENCIES = gcctestdir/ld script_test_1.t +script_test_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_1.t + +check_PROGRAMS += script_test_2 +script_test_2_SOURCES = script_test_2.cc script_test_2a.cc script_test_2b.cc +script_test_2_DEPENDENCIES = gcctestdir/ld script_test_2.t +script_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_2.t + +check_PROGRAMS += justsyms +justsyms_SOURCES = justsyms_1.cc +justsyms_DEPENDENCIES = gcctestdir/ld justsyms_2r.o +justsyms_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_2r.o +justsyms_2.o: justsyms_2.cc + $(CXXCOMPILE) -c -o $@ $< +justsyms_2r.o: justsyms_2.o gcctestdir/ld $(srcdir)/justsyms.t + gcctestdir/ld -o $@ -r -T $(srcdir)/justsyms.t justsyms_2.o + +check_PROGRAMS += binary_test +MOSTLYCLEANFILES += binary.txt +binary_test_SOURCES = binary_test.cc +binary_test_DEPENDENCIES = gcctestdir/ld binary.txt +binary_test_LDFLAGS = -Bgcctestdir/ -Wl,--format,binary,binary.txt,--format,elf +# Copy the file to the build directory to avoid worrying about the +# full pathname in the generated symbols. +binary.txt: $(srcdir)/binary.in + rm -f $@ + $(LN_S) $< $@ + +check_SCRIPTS += ver_matching_test.sh +check_DATA += ver_matching_test.stdout +MOSTLYCLEANFILES += ver_matching_test.stdout +ver_matching_def.so: ver_matching_def.cc gcctestdir/ld + $(CXXLINK) -O0 -Bgcctestdir/ -shared $(srcdir)/ver_matching_def.cc -Wl,--version-script=$(srcdir)/version_script.map +ver_matching_test.stdout: ver_matching_def.so + $(TEST_OBJDUMP) -T ver_matching_def.so | $(TEST_CXXFILT) > ver_matching_test.stdout + +check_PROGRAMS += script_test_3 +check_SCRIPTS += script_test_3.sh +check_DATA += script_test_3.stdout +MOSTLYCLEANFILES += script_test_3.stdout +script_test_3: basic_test.o gcctestdir/ld script_test_3.t + $(CXXLINK) -Bgcctestdir/ basic_test.o -T $(srcdir)/script_test_3.t +script_test_3.stdout: script_test_3 + $(TEST_READELF) -SlW script_test_3 > script_test_3.stdout + +check_SCRIPTS += script_test_4.sh +check_DATA += script_test_4.stdout +MOSTLYCLEANFILES += script_test_4 +script_test_4: basic_test.o gcctestdir/ld $(srcdir)/script_test_4.t + $(CXXLINK) -Bgcctestdir/ basic_test.o -T $(srcdir)/script_test_4.t +script_test_4.stdout: script_test_4 + $(TEST_READELF) -SlW script_test_4 > script_test_4.stdout + +check_SCRIPTS += script_test_5.sh +check_DATA += script_test_5.stdout +MOSTLYCLEANFILES += script_test_5 +script_test_5: script_test_5.o gcctestdir/ld $(srcdir)/script_test_5.t + $(CXXLINK) -Bgcctestdir/ script_test_5.o -T $(srcdir)/script_test_5.t +script_test_5.stdout: script_test_5 + $(TEST_READELF) -SW script_test_5 > script_test_5.stdout + +# Test --dynamic-list, --dynamic-list-data, --dynamic-list-cpp-new, +# and --dynamic-list-cpp-typeinfo + +check_SCRIPTS += dynamic_list.sh +check_DATA += dynamic_list.stdout +MOSTLYCLEANFILES += dynamic_list dynamic_list.stdout +dynamic_list: basic_test.o gcctestdir/ld $(srcdir)/dynamic_list.t + $(CXXLINK) -Bgcctestdir/ basic_test.o \ + -Wl,--dynamic-list $(srcdir)/dynamic_list.t \ + -Wl,--dynamic-list-data \ + -Wl,--dynamic-list-cpp-new \ + -Wl,--dynamic-list-cpp-typeinfo +dynamic_list.stdout: dynamic_list + $(TEST_READELF) -DWs dynamic_list > dynamic_list.stdout + +check_PROGRAMS += thin_archive_test_1 +MOSTLYCLEANFILES += libthin1.a libthin3.a libthinall.a \ + alt/thin_archive_test_2.o alt/thin_archive_test_4.o \ + alt/libthin2.a alt/libthin4.a +thin_archive_test_1_SOURCES = thin_archive_main.cc +thin_archive_test_1_DEPENDENCIES = gcctestdir/ld libthin1.a alt/libthin2.a +thin_archive_test_1_LDFLAGS = -Bgcctestdir/ -Lalt +thin_archive_test_1_LDADD = libthin1.a -lthin2 + +check_PROGRAMS += thin_archive_test_2 +thin_archive_test_2_SOURCES = thin_archive_main.cc +thin_archive_test_2_DEPENDENCIES = gcctestdir/ld libthinall.a +thin_archive_test_2_LDFLAGS = -Bgcctestdir/ -L. +thin_archive_test_2_LDADD = -lthinall + +libthin1.a: thin_archive_test_1.o alt/thin_archive_test_2.o + rm -f $@ + $(TEST_AR) crT $@ $^ +alt/libthin2.a: thin_archive_test_3.o alt/thin_archive_test_4.o + rm -f $@ + $(TEST_AR) crT $@ $^ +libthin3.a: thin_archive_test_1.o alt/thin_archive_test_4.o + rm -f $@ + $(TEST_AR) crT $@ $^ +alt/libthin4.a: alt/thin_archive_test_2.o thin_archive_test_3.o + rm -f $@ + $(TEST_AR) crT $@ $^ +libthinall.a: libthin3.a alt/libthin4.a + rm -f $@ + $(TEST_AR) crT $@ $^ +alt/thin_archive_test_2.o: thin_archive_test_2.cc + test -d alt || mkdir -p alt + $(CXXCOMPILE) -c -o $@ $< +alt/thin_archive_test_4.o: thin_archive_test_4.cc + test -d alt || mkdir -p alt + $(CXXCOMPILE) -c -o $@ $< + +if PLUGINS + +check_PROGRAMS += plugin_test_1 +check_SCRIPTS += plugin_test_1.sh +check_DATA += plugin_test_1.err +MOSTLYCLEANFILES += plugin_test_1.err +plugin_test_1: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_1.err +plugin_test_1.err: plugin_test_1 + @touch plugin_test_1.err + +check_PROGRAMS += plugin_test_2 +check_SCRIPTS += plugin_test_2.sh +check_DATA += plugin_test_2.err +MOSTLYCLEANFILES += plugin_test_2.err +plugin_test_2: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,-R,.,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so 2>plugin_test_2.err +plugin_test_2.err: plugin_test_2 + @touch plugin_test_2.err + +check_PROGRAMS += plugin_test_3 +check_SCRIPTS += plugin_test_3.sh +check_DATA += plugin_test_3.err +MOSTLYCLEANFILES += plugin_test_3.err +plugin_test_3: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--export-dynamic -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_3.err +plugin_test_3.err: plugin_test_3 + @touch plugin_test_3.err + +check_PROGRAMS += plugin_test_4 +check_SCRIPTS += plugin_test_4.sh +check_DATA += plugin_test_4.err +MOSTLYCLEANFILES += plugin_test_4.a plugin_test_4.err +plugin_test_4: two_file_test_main.o plugin_test_4.a gcctestdir/ld plugin_test.so + $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o -Wl,--whole-archive,plugin_test_4.a,--no-whole-archive 2>plugin_test_4.err +plugin_test_4.err: plugin_test_4 + @touch plugin_test_4.err + +plugin_test_4.a: two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms + $(TEST_AR) cr $@ $^ + +plugin_test.so: plugin_test.o + $(LINK) -Bgcctestdir/ -shared plugin_test.o +plugin_test.o: plugin_test.c + $(COMPILE) -O0 -c -fpic -o $@ $< + +two_file_test_main.syms: two_file_test_main.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +two_file_test_1.syms: two_file_test_1.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +two_file_test_1b.syms: two_file_test_1b.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +two_file_test_2.syms: two_file_test_2.o + $(TEST_READELF) -sW $< >$@ 2>/dev/null +empty.syms: + @echo "" >empty.syms + @echo "Symbol table" >>empty.syms + +endif PLUGINS + +check_PROGRAMS += exclude_libs_test +check_SCRIPTS += exclude_libs_test.sh +check_DATA += exclude_libs_test.syms +MOSTLYCLEANFILES += exclude_libs_test.syms libexclude_libs_test_1.a \ + libexclude_libs_test_2.a alt/libexclude_libs_test_3.a +exclude_libs_test_SOURCES = exclude_libs_test.c +exclude_libs_test_DEPENDENCIES = gcctestdir/ld libexclude_libs_test_1.a \ + libexclude_libs_test_2.a alt/libexclude_libs_test_3.a +exclude_libs_test_LDFLAGS = -Bgcctestdir/ -L. -Lalt \ + -Wl,--exclude-libs,dummy:libexclude_libs_test_1 \ + -Wl,--exclude-libs,libexclude_libs_test_3 +exclude_libs_test_LDADD = -lexclude_libs_test_1 -lexclude_libs_test_2 \ + alt/libexclude_libs_test_3.a +exclude_libs_test.syms: exclude_libs_test + $(TEST_READELF) -sW $< >$@ 2>/dev/null +libexclude_libs_test_1.a: exclude_libs_test_1.o + $(TEST_AR) rc $@ $^ +libexclude_libs_test_2.a: exclude_libs_test_2.o + $(TEST_AR) rc $@ $^ +alt/libexclude_libs_test_3.a: exclude_libs_test_3.o + test -d alt || mkdir -p alt + $(TEST_AR) rc $@ $^ + +check_PROGRAMS += local_labels_test +local_labels_test.o: ver_test_6.c + $(COMPILE) -g -c -Wa,-L -o $@ $< +local_labels_test: local_labels_test.o + $(LINK) -Bgcctestdir/ local_labels_test.o + +check_PROGRAMS += discard_locals_test +check_SCRIPTS += discard_locals_test.sh +check_DATA += discard_locals_test.syms +MOSTLYCLEANFILES += discard_locals_test.syms +discard_locals_test_SOURCES = discard_locals_test.c +discard_locals_test_LDFLAGS = -Bgcctestdir/ -Wl,--discard-locals +discard_locals_test.syms: discard_locals_test + $(TEST_READELF) -sW $< >$@ 2>/dev/null +# '-Wa,-L' is required to preserve the local label used for testing. +discard_locals_test.o: discard_locals_test.c + $(COMPILE) -c -Wa,-L -o $@ $< + +if MCMODEL_MEDIUM +check_PROGRAMS += large +large_SOURCES = large.c +large_CFLAGS = -mcmodel=medium +large_DEPENDENCIES = gcctestdir/ld +large_LDFLAGS = -Bgcctestdir/ +endif MCMODEL_MEDIUM + +# Test that hidden and internal symbols in the main program cannot be +# referenced by a shared library. +check_SCRIPTS += hidden_test.sh +check_DATA += hidden_test.err +MOSTLYCLEANFILES += hidden_test hidden_test.err +libhidden.so: hidden_test_1.c gcctestdir/ld + $(COMPILE) -Bgcctestdir/ -g -shared -fPIC -w -o $@ $(srcdir)/hidden_test_1.c +hidden_test: hidden_test_main.o libhidden.so gcctestdir/ld + $(LINK) -Bgcctestdir/ -Wl,-R,. hidden_test_main.o libhidden.so 2>hidden_test.err +hidden_test.err: hidden_test + @touch hidden_test.err + +# Test -retain-symbols-file. +check_SCRIPTS += retain_symbols_file_test.sh +check_DATA += retain_symbols_file_test.stdout +MOSTLYCLEANFILES += retain_symbols_file_test retain_symbols_file_test.in \ + retain_symbols_file_test.stdout +retain_symbols_file_test.so: basic_pic_test.o gcctestdir/ld + echo 'main' > retain_symbols_file_test.in + echo 't1' >> retain_symbols_file_test.in + echo '_ZN4t16bC1Ev' >> retain_symbols_file_test.in + echo '_ZNK4t20a3getEv' >> retain_symbols_file_test.in + echo '_Z3t18v' >> retain_symbols_file_test.in + echo '__tcf_0' >> retain_symbols_file_test.in + $(CXXLINK) -Bgcctestdir/ -shared -Wl,-retain-symbols-file,retain_symbols_file_test.in basic_pic_test.o +retain_symbols_file_test.stdout: retain_symbols_file_test.so + $(TEST_NM) -C retain_symbols_file_test.so > $@ + + +# Test that if the output file already exists and is empty, +# it will get execute permission. +check_PROGRAMS += permission_test +permission_test: basic_test.o gcctestdir/ld + umask 022; \ + rm -f $@; \ + touch $@; \ + chmod 600 $@; \ + $(CXXLINK) -Bgcctestdir/ basic_test.o + +# Check -l:foo.a +check_PROGRAMS += searched_file_test +MOSTLYCLEANFILES += searched_file_test searched_file_test_lib.o \ + alt/searched_file_test_lib.a +searched_file_test_SOURCES = searched_file_test.cc +searched_file_test_DEPENDENCIES = alt/searched_file_test_lib.a +searched_file_test_LDFLAGS = -Bgcctestdir/ -Lalt +searched_file_test_LDADD = -l:searched_file_test_lib.a +searched_file_test_lib.o: searched_file_test_lib.cc + $(CXXCOMPILE) -c -o $@ $< +alt/searched_file_test_lib.a: searched_file_test_lib.o + test -d alt || mkdir -p alt + $(TEST_AR) rc $@ $^ + +endif GCC +endif NATIVE_LINKER + +# These tests work with cross linkers. + +if DEFAULT_TARGET_I386 + +check_SCRIPTS += split_i386.sh +check_DATA += split_i386_1.stdout split_i386_2.stdout \ + split_i386_3.stdout split_i386_4.stdout split_i386_r.stdout +SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +split_i386_1.o: split_i386_1.s + $(TEST_AS) -o $@ $< +split_i386_2.o: split_i386_2.s + $(TEST_AS) -o $@ $< +split_i386_3.o: split_i386_3.s + $(TEST_AS) -o $@ $< +split_i386_4.o: split_i386_4.s + $(TEST_AS) -o $@ $< +split_i386_n.o: split_i386_n.s + $(TEST_AS) -o $@ $< +split_i386_1: split_i386_1.o split_i386_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_1.o split_i386_n.o +split_i386_1.stdout: split_i386_1 + $(TEST_OBJDUMP) -d $< > $@ +split_i386_2: split_i386_2.o split_i386_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_2.o split_i386_n.o +split_i386_2.stdout: split_i386_2 + $(TEST_OBJDUMP) -d $< > $@ +split_i386_3.stdout: split_i386_3.o split_i386_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o split_i386_3 split_i386_3.o split_i386_n.o > $@ 2>&1 || exit 0 +split_i386_4: split_i386_4.o split_i386_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_4.o split_i386_n.o +split_i386_4.stdout: split_i386_4 + $(TEST_OBJDUMP) -d $< > $@ +split_i386_r.stdout: split_i386_1.o split_i386_n.o ../ld-new + ../ld-new -r split_i386_1.o split_i386_n.o -o split_i386_r > $@ 2>&1 || exit 0 +MOSTLYCLEANFILES += split_i386_1 split_i386_2 split_i386_3 \ + split_i386_4 split_i386_r + +endif DEFAULT_TARGET_I386 + +if DEFAULT_TARGET_X86_64 + +check_SCRIPTS += split_x86_64.sh +check_DATA += split_x86_64_1.stdout split_x86_64_2.stdout \ + split_x86_64_3.stdout split_x86_64_4.stdout split_x86_64_r.stdout +SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +split_x86_64_1.o: split_x86_64_1.s + $(TEST_AS) -o $@ $< +split_x86_64_2.o: split_x86_64_2.s + $(TEST_AS) -o $@ $< +split_x86_64_3.o: split_x86_64_3.s + $(TEST_AS) -o $@ $< +split_x86_64_4.o: split_x86_64_4.s + $(TEST_AS) -o $@ $< +split_x86_64_n.o: split_x86_64_n.s + $(TEST_AS) -o $@ $< +split_x86_64_1: split_x86_64_1.o split_x86_64_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_1.o split_x86_64_n.o +split_x86_64_1.stdout: split_x86_64_1 + $(TEST_OBJDUMP) -d $< > $@ +split_x86_64_2: split_x86_64_2.o split_x86_64_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_2.o split_x86_64_n.o +split_x86_64_2.stdout: split_x86_64_2 + $(TEST_OBJDUMP) -d $< > $@ +split_x86_64_3.stdout: split_x86_64_3.o split_x86_64_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o split_x86_64_3 split_x86_64_3.o split_x86_64_n.o > $@ 2>&1 || exit 0 +split_x86_64_4: split_x86_64_4.o split_x86_64_n.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_4.o split_x86_64_n.o +split_x86_64_4.stdout: split_x86_64_4 + $(TEST_OBJDUMP) -d $< > $@ +split_x86_64_r.stdout: split_x86_64_1.o split_x86_64_n.o ../ld-new + ../ld-new -r split_x86_64_1.o split_x86_64_n.o -o split_x86_64_r > $@ 2>&1 || exit 0 +MOSTLYCLEANFILES += split_x86_64_1 split_x86_64_2 split_x86_64_3 \ + split_x86_64_4 split_x86_64_r + +endif DEFAULT_TARGET_X86_64 Index: exclude_libs_test.sh =================================================================== --- exclude_libs_test.sh (nonexistent) +++ exclude_libs_test.sh (revision 818) @@ -0,0 +1,63 @@ +#!/bin/sh + +# exclude_libs_test.sh -- test that library symbols are not exported. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Doug Kwan + +# 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 file goes with exclude_libs_test.c, a C source file +# linked with option -Wl,--exclude-libs. We run readelf on +# the resulting executable and check that symbols from two test library +# archives are correctly hidden or left unmodified. + +check() +{ + file=$1 + sym=$2 + vis=$3 + + found=`grep " $sym\$" $file` + if test -z "$found"; then + echo "Symbol $sym not found." + exit 1 + fi + + match_vis=`grep " $sym\$" $file | grep " $vis "` + if test -z "$match_vis"; then + echo "Expected symbol $sym to have visibility $vis but found" + echo "$found" + exit 1 + fi +} + +check "exclude_libs_test.syms" "lib1_default" "HIDDEN" +check "exclude_libs_test.syms" "lib1_protected" "HIDDEN" +check "exclude_libs_test.syms" "lib1_internal" "INTERNAL" +check "exclude_libs_test.syms" "lib1_hidden" "HIDDEN" +check "exclude_libs_test.syms" "lib2_default" "DEFAULT" +check "exclude_libs_test.syms" "lib2_protected" "PROTECTED" +check "exclude_libs_test.syms" "lib2_internal" "INTERNAL" +check "exclude_libs_test.syms" "lib2_hidden" "HIDDEN" +check "exclude_libs_test.syms" "lib3_default" "HIDDEN" +check "exclude_libs_test.syms" "lib3_protected" "HIDDEN" +check "exclude_libs_test.syms" "lib3_internal" "INTERNAL" +check "exclude_libs_test.syms" "lib3_hidden" "HIDDEN" + +exit 0
exclude_libs_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: undef_symbol.cc =================================================================== --- undef_symbol.cc (nonexistent) +++ undef_symbol.cc (revision 818) @@ -0,0 +1,38 @@ +// undef_symbol.cc -- a test case for undefined references + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 file is constructed to have an undefined reference to the +// global variable a. We should get an error when we link. + +extern int a; + +class Foo +{ + public: + Foo() + : a_(a) + { } + private: + int a_; +}; + +static Foo foo; Index: odr_violation1.cc =================================================================== --- odr_violation1.cc (nonexistent) +++ odr_violation1.cc (revision 818) @@ -0,0 +1,12 @@ +#include + +class Ordering { + public: + bool operator()(int a, int b) { + return a < b; + } +}; + +void SortAscending(int array[], int size) { + std::sort(array, array + size, Ordering()); +} Index: dynamic_list.t =================================================================== --- dynamic_list.t (nonexistent) +++ dynamic_list.t (revision 818) @@ -0,0 +1,11 @@ +{ + main; + not_a_symbol; + global; + extern "C++" { t1_6* }; +}; +{ + extern "C++" { t16a* }; + local; + extern; +}; Index: ver_test_4.script =================================================================== --- ver_test_4.script (nonexistent) +++ ver_test_4.script (revision 818) @@ -0,0 +1,36 @@ +## ver_test_4.script -- a test case for gold + +## Copyright 2007, 2008 Free Software Foundation, Inc. +## Written by Cary Coutant . + +## 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. + +VER1 { + global: + t2_2; + local: + *; +}; + +VER2 { + global: + t1_2; + t2_2; + t4_2a; +} VER1; + Index: Makefile.in =================================================================== --- Makefile.in (nonexistent) +++ Makefile.in (revision 818) @@ -0,0 +1,3141 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Process this file with automake to generate Makefile.in + +# As far as I can tell automake testing support assumes that the build +# system and the host system are the same. So these tests will not +# work when building with a cross-compiler. +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +check_PROGRAMS = object_unittest$(EXEEXT) binary_unittest$(EXEEXT) \ + $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ + $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \ + $(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \ + $(am__EXEEXT_10) $(am__EXEEXT_11) $(am__EXEEXT_12) \ + $(am__EXEEXT_13) $(am__EXEEXT_14) $(am__EXEEXT_15) \ + $(am__EXEEXT_16) $(am__EXEEXT_17) $(am__EXEEXT_18) \ + $(am__EXEEXT_19) + +# Test --detect-odr-violations + +# Similar to --detect-odr-violations: check for undefined symbols in .so's + +# Test --dynamic-list, --dynamic-list-data, --dynamic-list-cpp-new, +# and --dynamic-list-cpp-typeinfo +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_1 = gc_comdat_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_tls_test.sh icf_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_keep_unique_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared.sh weak_plt.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg.sh undef_symbol.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_1.sh ver_test_2.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_4.sh ver_test_5.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_7.sh ver_test_10.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_matching_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_3.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_4.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_5.sh dynamic_list.sh + +# Create the data files that debug_msg.sh analyzes. + +# See if we can also detect problems when we're linking .so's, not .o's. + +# We also want to make sure we do something reasonable when there's no +# debug info available. For the best test, we use .so's. +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_2 = gc_comdat_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_tls_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_keep_unique_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared.dbg \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_plt_shared.so debug_msg.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg_so.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg_ndebug.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ undef_symbol.err ver_test_1.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_2.syms ver_test_4.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_5.syms ver_test_7.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_10.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_matching_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_3.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_4.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_5.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ dynamic_list.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_3 = gc_comdat_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gc_tls_test icf_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_keep_unique_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ icf_safe_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared.dbg \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/weak_undef_lib.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_4 = basic_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_static_test basic_pic_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_static_pic_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_pie_test constructor_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_static_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_static_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_pic_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1_pic_2_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_pic_1_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_relocatable_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_pie_test +@GCC_FALSE@constructor_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@constructor_test_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@constructor_static_test_DEPENDENCIES = libgoldtest.a \ +@GCC_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@constructor_static_test_DEPENDENCIES = \ +@NATIVE_LINKER_FALSE@ libgoldtest.a ../libgold.a \ +@NATIVE_LINKER_FALSE@ ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@two_file_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@two_file_test_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@two_file_static_test_DEPENDENCIES = libgoldtest.a \ +@GCC_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@two_file_static_test_DEPENDENCIES = \ +@NATIVE_LINKER_FALSE@ libgoldtest.a ../libgold.a \ +@NATIVE_LINKER_FALSE@ ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) + +# The nonpic tests will fail on platforms which can not put non-PIC +# code into shared libraries, so we just don't run them in that case. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_5 = two_file_shared_1_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_nonpic_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_shared_test \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_2_shared_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_6 = two_file_strip_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_strip_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ common_test_1 exception_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_static_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_1_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_2_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_same_shared_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_12_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_21_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_test weak_undef_test +@GCC_FALSE@common_test_1_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@common_test_1_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@exception_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@exception_test_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@exception_static_test_DEPENDENCIES = libgoldtest.a \ +@GCC_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@exception_static_test_DEPENDENCIES = \ +@NATIVE_LINKER_FALSE@ libgoldtest.a ../libgold.a \ +@NATIVE_LINKER_FALSE@ ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@weak_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@weak_test_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_7 = weak_undef_nonpic_test +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_8 = alt/weak_undef_lib_nonpic.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_9 = weak_alias_test weak_plt \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ copy_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__append_10 = tls_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_pic_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_ie_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_gd_to_ie_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am__append_11 = tls_shared_gnu2_gd_to_ie_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am__append_12 = tls_shared_gnu2_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@am__append_13 = tls_static_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@ tls_static_pic_test +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__append_14 = tls_shared_nonpic_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_15 = many_sections_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_r_test +@GCC_FALSE@many_sections_test_DEPENDENCIES = libgoldtest.a \ +@GCC_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@many_sections_test_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_16 = many_sections_define.h \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_check.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_17 = many_sections_define.h \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_check.h \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg.err debug_msg_so.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg_ndebug.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ undef_symbol.err ver_test_11.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ binary.txt \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_matching_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_3.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_4 script_test_5 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ dynamic_list dynamic_list.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libthin1.a libthin3.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libthinall.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/thin_archive_test_2.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/thin_archive_test_4.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/libthin2.a alt/libthin4.a +@CONSTRUCTOR_PRIORITY_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_18 = initpri1 +@CONSTRUCTOR_PRIORITY_FALSE@initpri1_DEPENDENCIES = libgoldtest.a \ +@CONSTRUCTOR_PRIORITY_FALSE@ ../libgold.a \ +@CONSTRUCTOR_PRIORITY_FALSE@ ../../libiberty/libiberty.a \ +@CONSTRUCTOR_PRIORITY_FALSE@ $(am__DEPENDENCIES_1) \ +@CONSTRUCTOR_PRIORITY_FALSE@ $(am__DEPENDENCIES_1) \ +@CONSTRUCTOR_PRIORITY_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@initpri1_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@initpri1_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) + +# Test -o when emitting to a special file (such as something in /dev). +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_19 = flagstest_o_specialfile + +# Test --compress-debug-sections. FIXME: check we actually compress. + +# The specialfile output has a tricky case when we also compress debug +# sections, because it requires output-file resizing. +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__append_20 = flagstest_compress_debug_sections \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile_and_compress_debug_sections + +# Test symbol versioning. +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_21 = ver_test ver_test_2 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_6 ver_test_8 ver_test_9 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_11 protected_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_2 relro_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_script_test script_test_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2 justsyms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ binary_test script_test_3 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_2 +@GCC_FALSE@script_test_1_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@script_test_1_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@script_test_2_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@script_test_2_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@justsyms_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@justsyms_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@binary_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@binary_test_DEPENDENCIES = libgoldtest.a \ +@NATIVE_LINKER_FALSE@ ../libgold.a ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) +@GCC_FALSE@thin_archive_test_2_DEPENDENCIES = +@NATIVE_LINKER_FALSE@thin_archive_test_2_DEPENDENCIES = +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_22 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_23 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.sh +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_24 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_25 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_26 = exclude_libs_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test + +# Test that hidden and internal symbols in the main program cannot be +# referenced by a shared library. + +# Test -retain-symbols-file. +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_27 = exclude_libs_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ hidden_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.sh +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_28 = exclude_libs_test.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ hidden_test.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_29 = exclude_libs_test.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_1.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_2.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/libexclude_libs_test_3.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ hidden_test hidden_test.err \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.in \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.stdout \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test_lib.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/searched_file_test_lib.a +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__append_30 = large +@GCC_FALSE@large_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@GCC_FALSE@ ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ +@GCC_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@MCMODEL_MEDIUM_FALSE@large_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@MCMODEL_MEDIUM_FALSE@ ../../libiberty/libiberty.a \ +@MCMODEL_MEDIUM_FALSE@ $(am__DEPENDENCIES_1) \ +@MCMODEL_MEDIUM_FALSE@ $(am__DEPENDENCIES_1) \ +@MCMODEL_MEDIUM_FALSE@ $(am__DEPENDENCIES_1) +@NATIVE_LINKER_FALSE@large_DEPENDENCIES = libgoldtest.a ../libgold.a \ +@NATIVE_LINKER_FALSE@ ../../libiberty/libiberty.a \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \ +@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) + +# Test that if the output file already exists and is empty, +# it will get execute permission. + +# Check -l:foo.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_31 = permission_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test +@GCC_FALSE@searched_file_test_DEPENDENCIES = +@NATIVE_LINKER_FALSE@searched_file_test_DEPENDENCIES = + +# These tests work with cross linkers. +@DEFAULT_TARGET_I386_TRUE@am__append_32 = split_i386.sh +@DEFAULT_TARGET_I386_TRUE@am__append_33 = split_i386_1.stdout split_i386_2.stdout \ +@DEFAULT_TARGET_I386_TRUE@ split_i386_3.stdout split_i386_4.stdout split_i386_r.stdout + +@DEFAULT_TARGET_I386_TRUE@am__append_34 = split_i386_1 split_i386_2 split_i386_3 \ +@DEFAULT_TARGET_I386_TRUE@ split_i386_4 split_i386_r + +@DEFAULT_TARGET_X86_64_TRUE@am__append_35 = split_x86_64.sh +@DEFAULT_TARGET_X86_64_TRUE@am__append_36 = split_x86_64_1.stdout split_x86_64_2.stdout \ +@DEFAULT_TARGET_X86_64_TRUE@ split_x86_64_3.stdout split_x86_64_4.stdout split_x86_64_r.stdout + +@DEFAULT_TARGET_X86_64_TRUE@am__append_37 = split_x86_64_1 split_x86_64_2 split_x86_64_3 \ +@DEFAULT_TARGET_X86_64_TRUE@ split_x86_64_4 split_x86_64_r + +subdir = testsuite +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/gettext-sister.m4 \ + $(top_srcdir)/../config/lead-dot.m4 \ + $(top_srcdir)/../config/nls.m4 \ + $(top_srcdir)/../config/override.m4 \ + $(top_srcdir)/../config/po.m4 \ + $(top_srcdir)/../config/progtest.m4 \ + $(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AR = ar +ARFLAGS = cru +libgoldtest_a_AR = $(AR) $(ARFLAGS) +libgoldtest_a_LIBADD = +am_libgoldtest_a_OBJECTS = test.$(OBJEXT) testmain.$(OBJEXT) \ + testfile.$(OBJEXT) +libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_1 = basic_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_static_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_pic_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_static_pic_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_pie_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_static_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_static_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_pic_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1_pic_2_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_pic_1_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_relocatable_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_pie_test$(EXEEXT) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_2 = two_file_shared_1_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_nonpic_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_shared_test$(EXEEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_mixed_2_shared_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_3 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_strip_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_strip_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ common_test_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_static_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_1_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_2_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_same_shared_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_12_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_21_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_undef_test$(EXEEXT) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_4 = weak_undef_nonpic_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_5 = weak_alias_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_plt$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ copy_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__EXEEXT_6 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_pic_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_ie_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_gd_to_ie_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am__EXEEXT_7 = tls_shared_gnu2_gd_to_ie_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am__EXEEXT_8 = tls_shared_gnu2_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@am__EXEEXT_9 = tls_static_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@ tls_static_pic_test$(EXEEXT) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__EXEEXT_10 = tls_shared_nonpic_test$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_11 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_r_test$(EXEEXT) +@CONSTRUCTOR_PRIORITY_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_12 = initpri1$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_13 = flagstest_o_specialfile$(EXEEXT) +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_14 = flagstest_compress_debug_sections$(EXEEXT) \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_15 = ver_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_6$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_8$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_9$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_11$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_script_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ justsyms$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ binary_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_3$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_2$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__EXEEXT_16 = plugin_test_1$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_17 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exclude_libs_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test$(EXEEXT) +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_18 = large$(EXEEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_19 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ permission_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test$(EXEEXT) +basic_pic_test_SOURCES = basic_pic_test.c +basic_pic_test_OBJECTS = basic_pic_test.$(OBJEXT) +basic_pic_test_LDADD = $(LDADD) +am__DEPENDENCIES_1 = +basic_pic_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +basic_pie_test_SOURCES = basic_pie_test.c +basic_pie_test_OBJECTS = basic_pie_test.$(OBJEXT) +basic_pie_test_LDADD = $(LDADD) +basic_pie_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +basic_static_pic_test_SOURCES = basic_static_pic_test.c +basic_static_pic_test_OBJECTS = basic_static_pic_test.$(OBJEXT) +basic_static_pic_test_LDADD = $(LDADD) +basic_static_pic_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +basic_static_test_SOURCES = basic_static_test.c +basic_static_test_OBJECTS = basic_static_test.$(OBJEXT) +basic_static_test_LDADD = $(LDADD) +basic_static_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +basic_test_SOURCES = basic_test.c +basic_test_OBJECTS = basic_test.$(OBJEXT) +basic_test_LDADD = $(LDADD) +basic_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__binary_test_SOURCES_DIST = binary_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_binary_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ binary_test.$(OBJEXT) +binary_test_OBJECTS = $(am_binary_test_OBJECTS) +binary_test_LDADD = $(LDADD) +binary_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(binary_test_LDFLAGS) $(LDFLAGS) -o $@ +am_binary_unittest_OBJECTS = binary_unittest.$(OBJEXT) +binary_unittest_OBJECTS = $(am_binary_unittest_OBJECTS) +binary_unittest_LDADD = $(LDADD) +binary_unittest_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__common_test_1_SOURCES_DIST = common_test_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_common_test_1_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ common_test_1.$(OBJEXT) +common_test_1_OBJECTS = $(am_common_test_1_OBJECTS) +common_test_1_LDADD = $(LDADD) +common_test_1_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(common_test_1_LDFLAGS) $(LDFLAGS) -o $@ +am__constructor_static_test_SOURCES_DIST = constructor_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__objects_1 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_test.$(OBJEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_constructor_static_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(am__objects_1) +constructor_static_test_OBJECTS = \ + $(am_constructor_static_test_OBJECTS) +constructor_static_test_LDADD = $(LDADD) +constructor_static_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(constructor_static_test_LDFLAGS) $(LDFLAGS) -o $@ +am__constructor_test_SOURCES_DIST = constructor_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_constructor_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_test.$(OBJEXT) +constructor_test_OBJECTS = $(am_constructor_test_OBJECTS) +constructor_test_LDADD = $(LDADD) +constructor_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(constructor_test_LDFLAGS) $(LDFLAGS) -o $@ +am__copy_test_SOURCES_DIST = copy_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_copy_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ copy_test.$(OBJEXT) +copy_test_OBJECTS = $(am_copy_test_OBJECTS) +copy_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(copy_test_LDFLAGS) $(LDFLAGS) -o $@ +am__discard_locals_test_SOURCES_DIST = discard_locals_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_discard_locals_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.$(OBJEXT) +discard_locals_test_OBJECTS = $(am_discard_locals_test_OBJECTS) +discard_locals_test_LDADD = $(LDADD) +discard_locals_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +discard_locals_test_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(discard_locals_test_LDFLAGS) $(LDFLAGS) -o $@ +am__exception_same_shared_test_SOURCES_DIST = exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_same_shared_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_same_shared_test_OBJECTS = \ + $(am_exception_same_shared_test_OBJECTS) +exception_same_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_same_shared_test_LDFLAGS) $(LDFLAGS) -o $@ +am__exception_separate_shared_12_test_SOURCES_DIST = \ + exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_separate_shared_12_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_separate_shared_12_test_OBJECTS = \ + $(am_exception_separate_shared_12_test_OBJECTS) +exception_separate_shared_12_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(exception_separate_shared_12_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__exception_separate_shared_21_test_SOURCES_DIST = \ + exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_separate_shared_21_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_separate_shared_21_test_OBJECTS = \ + $(am_exception_separate_shared_21_test_OBJECTS) +exception_separate_shared_21_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(exception_separate_shared_21_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__exception_shared_1_test_SOURCES_DIST = exception_test_2.cc \ + exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_shared_1_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_shared_1_test_OBJECTS = \ + $(am_exception_shared_1_test_OBJECTS) +exception_shared_1_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_shared_1_test_LDFLAGS) $(LDFLAGS) -o $@ +am__exception_shared_2_test_SOURCES_DIST = exception_test_1.cc \ + exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_shared_2_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) +exception_shared_2_test_OBJECTS = \ + $(am_exception_shared_2_test_OBJECTS) +exception_shared_2_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_shared_2_test_LDFLAGS) $(LDFLAGS) -o $@ +am__exception_static_test_SOURCES_DIST = exception_test_main.cc \ + exception_test_1.cc exception_test_2.cc exception_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__objects_2 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.$(OBJEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_static_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(am__objects_2) +exception_static_test_OBJECTS = $(am_exception_static_test_OBJECTS) +exception_static_test_LDADD = $(LDADD) +exception_static_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_static_test_LDFLAGS) $(LDFLAGS) -o $@ +am__exception_test_SOURCES_DIST = exception_test_main.cc \ + exception_test_1.cc exception_test_2.cc exception_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.$(OBJEXT) +exception_test_OBJECTS = $(am_exception_test_OBJECTS) +exception_test_LDADD = $(LDADD) +exception_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(exception_test_LDFLAGS) $(LDFLAGS) -o $@ +am__exclude_libs_test_SOURCES_DIST = exclude_libs_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exclude_libs_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exclude_libs_test.$(OBJEXT) +exclude_libs_test_OBJECTS = $(am_exclude_libs_test_OBJECTS) +exclude_libs_test_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(exclude_libs_test_LDFLAGS) $(LDFLAGS) -o $@ +flagstest_compress_debug_sections_SOURCES = \ + flagstest_compress_debug_sections.c +flagstest_compress_debug_sections_OBJECTS = \ + flagstest_compress_debug_sections.$(OBJEXT) +flagstest_compress_debug_sections_LDADD = $(LDADD) +flagstest_compress_debug_sections_DEPENDENCIES = libgoldtest.a \ + ../libgold.a ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +flagstest_o_specialfile_SOURCES = flagstest_o_specialfile.c +flagstest_o_specialfile_OBJECTS = flagstest_o_specialfile.$(OBJEXT) +flagstest_o_specialfile_LDADD = $(LDADD) +flagstest_o_specialfile_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +flagstest_o_specialfile_and_compress_debug_sections_SOURCES = \ + flagstest_o_specialfile_and_compress_debug_sections.c +flagstest_o_specialfile_and_compress_debug_sections_OBJECTS = \ + flagstest_o_specialfile_and_compress_debug_sections.$(OBJEXT) +flagstest_o_specialfile_and_compress_debug_sections_LDADD = $(LDADD) +flagstest_o_specialfile_and_compress_debug_sections_DEPENDENCIES = \ + libgoldtest.a ../libgold.a ../../libiberty/libiberty.a \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +am__initpri1_SOURCES_DIST = initpri1.c +@CONSTRUCTOR_PRIORITY_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_initpri1_OBJECTS = initpri1.$(OBJEXT) +initpri1_OBJECTS = $(am_initpri1_OBJECTS) +initpri1_LDADD = $(LDADD) +initpri1_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(initpri1_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__justsyms_SOURCES_DIST = justsyms_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_justsyms_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ justsyms_1.$(OBJEXT) +justsyms_OBJECTS = $(am_justsyms_OBJECTS) +justsyms_LDADD = $(LDADD) +justsyms_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(justsyms_LDFLAGS) $(LDFLAGS) -o $@ +am__large_SOURCES_DIST = large.c +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am_large_OBJECTS = large-large.$(OBJEXT) +large_OBJECTS = $(am_large_OBJECTS) +large_LDADD = $(LDADD) +large_LINK = $(CCLD) $(large_CFLAGS) $(CFLAGS) $(large_LDFLAGS) \ + $(LDFLAGS) -o $@ +local_labels_test_SOURCES = local_labels_test.c +local_labels_test_OBJECTS = local_labels_test.$(OBJEXT) +local_labels_test_LDADD = $(LDADD) +local_labels_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +many_sections_r_test_SOURCES = many_sections_r_test.c +many_sections_r_test_OBJECTS = many_sections_r_test.$(OBJEXT) +many_sections_r_test_LDADD = $(LDADD) +many_sections_r_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__many_sections_test_SOURCES_DIST = many_sections_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_many_sections_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_test.$(OBJEXT) +many_sections_test_OBJECTS = $(am_many_sections_test_OBJECTS) +many_sections_test_LDADD = $(LDADD) +many_sections_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(many_sections_test_LDFLAGS) $(LDFLAGS) -o $@ +am_object_unittest_OBJECTS = object_unittest.$(OBJEXT) +object_unittest_OBJECTS = $(am_object_unittest_OBJECTS) +object_unittest_LDADD = $(LDADD) +object_unittest_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +permission_test_SOURCES = permission_test.c +permission_test_OBJECTS = permission_test.$(OBJEXT) +permission_test_LDADD = $(LDADD) +permission_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_1_SOURCES = plugin_test_1.c +plugin_test_1_OBJECTS = plugin_test_1.$(OBJEXT) +plugin_test_1_LDADD = $(LDADD) +plugin_test_1_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_2_SOURCES = plugin_test_2.c +plugin_test_2_OBJECTS = plugin_test_2.$(OBJEXT) +plugin_test_2_LDADD = $(LDADD) +plugin_test_2_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_3_SOURCES = plugin_test_3.c +plugin_test_3_OBJECTS = plugin_test_3.$(OBJEXT) +plugin_test_3_LDADD = $(LDADD) +plugin_test_3_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +plugin_test_4_SOURCES = plugin_test_4.c +plugin_test_4_OBJECTS = plugin_test_4.$(OBJEXT) +plugin_test_4_LDADD = $(LDADD) +plugin_test_4_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__protected_1_SOURCES_DIST = protected_main_1.cc protected_main_2.cc \ + protected_main_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_protected_1_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_3.$(OBJEXT) +protected_1_OBJECTS = $(am_protected_1_OBJECTS) +protected_1_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(protected_1_LDFLAGS) $(LDFLAGS) -o $@ +am__protected_2_SOURCES_DIST = protected_main_1.cc protected_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_protected_2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_3.$(OBJEXT) +protected_2_OBJECTS = $(am_protected_2_OBJECTS) +protected_2_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(protected_2_LDFLAGS) $(LDFLAGS) -o $@ +am__relro_script_test_SOURCES_DIST = relro_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_relro_script_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test_main.$(OBJEXT) +relro_script_test_OBJECTS = $(am_relro_script_test_OBJECTS) +relro_script_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(relro_script_test_LDFLAGS) $(LDFLAGS) -o $@ +am__relro_test_SOURCES_DIST = relro_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_relro_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ relro_test_main.$(OBJEXT) +relro_test_OBJECTS = $(am_relro_test_OBJECTS) +relro_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(relro_test_LDFLAGS) $(LDFLAGS) -o $@ +am__script_test_1_SOURCES_DIST = script_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_script_test_1_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_1.$(OBJEXT) +script_test_1_OBJECTS = $(am_script_test_1_OBJECTS) +script_test_1_LDADD = $(LDADD) +script_test_1_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(script_test_1_LDFLAGS) $(LDFLAGS) -o $@ +am__script_test_2_SOURCES_DIST = script_test_2.cc script_test_2a.cc \ + script_test_2b.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_script_test_2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2a.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ script_test_2b.$(OBJEXT) +script_test_2_OBJECTS = $(am_script_test_2_OBJECTS) +script_test_2_LDADD = $(LDADD) +script_test_2_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(script_test_2_LDFLAGS) $(LDFLAGS) -o $@ +script_test_3_SOURCES = script_test_3.c +script_test_3_OBJECTS = script_test_3.$(OBJEXT) +script_test_3_LDADD = $(LDADD) +script_test_3_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__searched_file_test_SOURCES_DIST = searched_file_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_searched_file_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test.$(OBJEXT) +searched_file_test_OBJECTS = $(am_searched_file_test_OBJECTS) +searched_file_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(searched_file_test_LDFLAGS) $(LDFLAGS) -o $@ +am__thin_archive_test_1_SOURCES_DIST = thin_archive_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_thin_archive_test_1_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_main.$(OBJEXT) +thin_archive_test_1_OBJECTS = $(am_thin_archive_test_1_OBJECTS) +thin_archive_test_1_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(thin_archive_test_1_LDFLAGS) $(LDFLAGS) -o $@ +am__thin_archive_test_2_SOURCES_DIST = thin_archive_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_thin_archive_test_2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_main.$(OBJEXT) +thin_archive_test_2_OBJECTS = $(am_thin_archive_test_2_OBJECTS) +thin_archive_test_2_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(thin_archive_test_2_LDFLAGS) $(LDFLAGS) -o $@ +am__tls_pic_test_SOURCES_DIST = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_pic_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_pic_test_OBJECTS = $(am_tls_pic_test_OBJECTS) +tls_pic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_pic_test_LDFLAGS) $(LDFLAGS) -o $@ +am__tls_shared_gd_to_ie_test_SOURCES_DIST = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_shared_gd_to_ie_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_gd_to_ie_test_OBJECTS = \ + $(am_tls_shared_gd_to_ie_test_OBJECTS) +tls_shared_gd_to_ie_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_gd_to_ie_test_LDFLAGS) $(LDFLAGS) -o $@ +am__tls_shared_gnu2_gd_to_ie_test_SOURCES_DIST = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am_tls_shared_gnu2_gd_to_ie_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_gnu2_gd_to_ie_test_OBJECTS = \ + $(am_tls_shared_gnu2_gd_to_ie_test_OBJECTS) +tls_shared_gnu2_gd_to_ie_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(tls_shared_gnu2_gd_to_ie_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__tls_shared_gnu2_test_SOURCES_DIST = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@am_tls_shared_gnu2_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_gnu2_test_OBJECTS = $(am_tls_shared_gnu2_test_OBJECTS) +tls_shared_gnu2_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_gnu2_test_LDFLAGS) $(LDFLAGS) -o $@ +am__tls_shared_ie_test_SOURCES_DIST = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_shared_ie_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_ie_test_OBJECTS = $(am_tls_shared_ie_test_OBJECTS) +tls_shared_ie_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_ie_test_LDFLAGS) $(LDFLAGS) -o $@ +am__tls_shared_nonpic_test_SOURCES_DIST = tls_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_shared_nonpic_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_nonpic_test_OBJECTS = $(am_tls_shared_nonpic_test_OBJECTS) +tls_shared_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_nonpic_test_LDFLAGS) $(LDFLAGS) -o $@ +am__tls_shared_test_SOURCES_DIST = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_shared_test_OBJECTS = tls_test_main.$(OBJEXT) +tls_shared_test_OBJECTS = $(am_tls_shared_test_OBJECTS) +tls_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_shared_test_LDFLAGS) $(LDFLAGS) -o $@ +am__tls_static_pic_test_SOURCES_DIST = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__objects_3 = tls_test_main.$(OBJEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@am_tls_static_pic_test_OBJECTS = $(am__objects_3) +tls_static_pic_test_OBJECTS = $(am_tls_static_pic_test_OBJECTS) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__DEPENDENCIES_2 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_file2_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c_pic.o +tls_static_pic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_static_pic_test_LDFLAGS) $(LDFLAGS) -o $@ +am__tls_static_test_SOURCES_DIST = tls_test.cc tls_test_file2.cc \ + tls_test_main.cc tls_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__objects_4 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_file2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_main.$(OBJEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@am_tls_static_test_OBJECTS = $(am__objects_4) +tls_static_test_OBJECTS = $(am_tls_static_test_OBJECTS) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__DEPENDENCIES_3 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c.o +tls_static_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_static_test_LDFLAGS) $(LDFLAGS) -o $@ +am__tls_test_SOURCES_DIST = tls_test.cc tls_test_file2.cc \ + tls_test_main.cc tls_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am_tls_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_file2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_main.$(OBJEXT) +tls_test_OBJECTS = $(am_tls_test_OBJECTS) +tls_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(tls_test_LDFLAGS) $(LDFLAGS) -o $@ +am__two_file_mixed_2_shared_test_SOURCES_DIST = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_mixed_2_shared_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_mixed_2_shared_test_OBJECTS = \ + $(am_two_file_mixed_2_shared_test_OBJECTS) +two_file_mixed_2_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_mixed_2_shared_test_LDFLAGS) $(LDFLAGS) \ + -o $@ +am__two_file_mixed_shared_test_SOURCES_DIST = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_mixed_shared_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_mixed_shared_test_OBJECTS = \ + $(am_two_file_mixed_shared_test_OBJECTS) +two_file_mixed_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_mixed_shared_test_LDFLAGS) $(LDFLAGS) -o $@ +am__two_file_pic_test_SOURCES_DIST = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_pic_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_pic_test_OBJECTS = $(am_two_file_pic_test_OBJECTS) +two_file_pic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_pic_test_LDFLAGS) $(LDFLAGS) -o $@ +two_file_pie_test_SOURCES = two_file_pie_test.c +two_file_pie_test_OBJECTS = two_file_pie_test.$(OBJEXT) +two_file_pie_test_LDADD = $(LDADD) +two_file_pie_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__two_file_relocatable_test_SOURCES_DIST = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_relocatable_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_relocatable_test_OBJECTS = \ + $(am_two_file_relocatable_test_OBJECTS) +two_file_relocatable_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_relocatable_test_LDFLAGS) $(LDFLAGS) -o $@ +am__two_file_same_shared_nonpic_test_SOURCES_DIST = \ + two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_same_shared_nonpic_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_same_shared_nonpic_test_OBJECTS = \ + $(am_two_file_same_shared_nonpic_test_OBJECTS) +two_file_same_shared_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_same_shared_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__two_file_same_shared_strip_test_SOURCES_DIST = \ + two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_same_shared_strip_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_same_shared_strip_test_OBJECTS = \ + $(am_two_file_same_shared_strip_test_OBJECTS) +two_file_same_shared_strip_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_same_shared_strip_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__two_file_same_shared_test_SOURCES_DIST = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_same_shared_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_same_shared_test_OBJECTS = \ + $(am_two_file_same_shared_test_OBJECTS) +two_file_same_shared_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_same_shared_test_LDFLAGS) $(LDFLAGS) -o $@ +am__two_file_separate_shared_12_nonpic_test_SOURCES_DIST = \ + two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_separate_shared_12_nonpic_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_separate_shared_12_nonpic_test_OBJECTS = \ + $(am_two_file_separate_shared_12_nonpic_test_OBJECTS) +two_file_separate_shared_12_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_separate_shared_12_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__two_file_separate_shared_12_test_SOURCES_DIST = \ + two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_separate_shared_12_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_separate_shared_12_test_OBJECTS = \ + $(am_two_file_separate_shared_12_test_OBJECTS) +two_file_separate_shared_12_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_separate_shared_12_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__two_file_separate_shared_21_nonpic_test_SOURCES_DIST = \ + two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_separate_shared_21_nonpic_test_OBJECTS = two_file_test_main.$(OBJEXT) +two_file_separate_shared_21_nonpic_test_OBJECTS = \ + $(am_two_file_separate_shared_21_nonpic_test_OBJECTS) +two_file_separate_shared_21_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_separate_shared_21_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__two_file_separate_shared_21_test_SOURCES_DIST = \ + two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_separate_shared_21_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_separate_shared_21_test_OBJECTS = \ + $(am_two_file_separate_shared_21_test_OBJECTS) +two_file_separate_shared_21_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_separate_shared_21_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__two_file_shared_1_nonpic_test_SOURCES_DIST = two_file_test_2.cc \ + two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_1_nonpic_test_OBJECTS = two_file_test_2.$(OBJEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_1_nonpic_test_OBJECTS = \ + $(am_two_file_shared_1_nonpic_test_OBJECTS) +two_file_shared_1_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_shared_1_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__two_file_shared_1_pic_2_test_SOURCES_DIST = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_1_pic_2_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_1_pic_2_test_OBJECTS = \ + $(am_two_file_shared_1_pic_2_test_OBJECTS) +two_file_shared_1_pic_2_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_shared_1_pic_2_test_LDFLAGS) $(LDFLAGS) \ + -o $@ +am__two_file_shared_1_test_SOURCES_DIST = two_file_test_2.cc \ + two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_1_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_1_test_OBJECTS = $(am_two_file_shared_1_test_OBJECTS) +two_file_shared_1_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_shared_1_test_LDFLAGS) $(LDFLAGS) -o $@ +am__two_file_shared_2_nonpic_test_SOURCES_DIST = two_file_test_1.cc \ + two_file_test_1b.cc two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_2_nonpic_test_OBJECTS = two_file_test_1.$(OBJEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.$(OBJEXT) \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_2_nonpic_test_OBJECTS = \ + $(am_two_file_shared_2_nonpic_test_OBJECTS) +two_file_shared_2_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_shared_2_nonpic_test_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__two_file_shared_2_pic_1_test_SOURCES_DIST = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_2_pic_1_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_2_pic_1_test_OBJECTS = \ + $(am_two_file_shared_2_pic_1_test_OBJECTS) +two_file_shared_2_pic_1_test_LINK = $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(two_file_shared_2_pic_1_test_LDFLAGS) $(LDFLAGS) \ + -o $@ +am__two_file_shared_2_test_SOURCES_DIST = two_file_test_1.cc \ + two_file_test_1b.cc two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_shared_2_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_shared_2_test_OBJECTS = $(am_two_file_shared_2_test_OBJECTS) +two_file_shared_2_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_shared_2_test_LDFLAGS) $(LDFLAGS) -o $@ +am__two_file_static_test_SOURCES_DIST = two_file_test_1.cc \ + two_file_test_1b.cc two_file_test_2.cc two_file_test_main.cc \ + two_file_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__objects_5 = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_static_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(am__objects_5) +two_file_static_test_OBJECTS = $(am_two_file_static_test_OBJECTS) +two_file_static_test_LDADD = $(LDADD) +two_file_static_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_static_test_LDFLAGS) $(LDFLAGS) -o $@ +two_file_strip_test_SOURCES = two_file_strip_test.c +two_file_strip_test_OBJECTS = two_file_strip_test.$(OBJEXT) +two_file_strip_test_LDADD = $(LDADD) +two_file_strip_test_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__two_file_test_SOURCES_DIST = two_file_test_1.cc \ + two_file_test_1b.cc two_file_test_2.cc two_file_test_main.cc \ + two_file_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_two_file_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.$(OBJEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +two_file_test_OBJECTS = $(am_two_file_test_OBJECTS) +two_file_test_LDADD = $(LDADD) +two_file_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(two_file_test_LDFLAGS) $(LDFLAGS) -o $@ +am__ver_test_SOURCES_DIST = ver_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main.$(OBJEXT) +ver_test_OBJECTS = $(am_ver_test_OBJECTS) +ver_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_LDFLAGS) $(LDFLAGS) -o $@ +am__ver_test_11_SOURCES_DIST = ver_test_main_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_11_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main_2.$(OBJEXT) +ver_test_11_OBJECTS = $(am_ver_test_11_OBJECTS) +ver_test_11_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_11_LDFLAGS) $(LDFLAGS) -o $@ +am__ver_test_2_SOURCES_DIST = ver_test_main_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_2_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main_2.$(OBJEXT) +ver_test_2_OBJECTS = $(am_ver_test_2_OBJECTS) +ver_test_2_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_2_LDFLAGS) $(LDFLAGS) -o $@ +am__ver_test_6_SOURCES_DIST = ver_test_6.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_6_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_6.$(OBJEXT) +ver_test_6_OBJECTS = $(am_ver_test_6_OBJECTS) +ver_test_6_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ver_test_6_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__ver_test_8_SOURCES_DIST = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_8_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.$(OBJEXT) +ver_test_8_OBJECTS = $(am_ver_test_8_OBJECTS) +ver_test_8_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_8_LDFLAGS) $(LDFLAGS) -o $@ +am__ver_test_9_SOURCES_DIST = ver_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ver_test_9_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_main.$(OBJEXT) +ver_test_9_OBJECTS = $(am_ver_test_9_OBJECTS) +ver_test_9_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(ver_test_9_LDFLAGS) $(LDFLAGS) -o $@ +am__weak_alias_test_SOURCES_DIST = weak_alias_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_weak_alias_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_alias_test_main.$(OBJEXT) +weak_alias_test_OBJECTS = $(am_weak_alias_test_OBJECTS) +weak_alias_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(weak_alias_test_LDFLAGS) $(LDFLAGS) -o $@ +weak_plt_SOURCES = weak_plt.c +weak_plt_OBJECTS = weak_plt.$(OBJEXT) +weak_plt_LDADD = $(LDADD) +weak_plt_DEPENDENCIES = libgoldtest.a ../libgold.a \ + ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__weak_test_SOURCES_DIST = weak_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_weak_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_test.$(OBJEXT) +weak_test_OBJECTS = $(am_weak_test_OBJECTS) +weak_test_LDADD = $(LDADD) +weak_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(weak_test_LDFLAGS) $(LDFLAGS) -o $@ +am__weak_undef_nonpic_test_SOURCES_DIST = weak_undef_test.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_weak_undef_nonpic_test_OBJECTS = weak_undef_test.$(OBJEXT) +weak_undef_nonpic_test_OBJECTS = $(am_weak_undef_nonpic_test_OBJECTS) +weak_undef_nonpic_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(weak_undef_nonpic_test_LDFLAGS) $(LDFLAGS) -o $@ +am__weak_undef_test_SOURCES_DIST = weak_undef_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@am_weak_undef_test_OBJECTS = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_undef_test.$(OBJEXT) +weak_undef_test_OBJECTS = $(am_weak_undef_test_OBJECTS) +weak_undef_test_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(weak_undef_test_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/../depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c basic_pie_test.c \ + basic_static_pic_test.c basic_static_test.c basic_test.c \ + $(binary_test_SOURCES) $(binary_unittest_SOURCES) \ + $(common_test_1_SOURCES) $(constructor_static_test_SOURCES) \ + $(constructor_test_SOURCES) $(copy_test_SOURCES) \ + $(discard_locals_test_SOURCES) \ + $(exception_same_shared_test_SOURCES) \ + $(exception_separate_shared_12_test_SOURCES) \ + $(exception_separate_shared_21_test_SOURCES) \ + $(exception_shared_1_test_SOURCES) \ + $(exception_shared_2_test_SOURCES) \ + $(exception_static_test_SOURCES) $(exception_test_SOURCES) \ + $(exclude_libs_test_SOURCES) \ + flagstest_compress_debug_sections.c flagstest_o_specialfile.c \ + flagstest_o_specialfile_and_compress_debug_sections.c \ + $(initpri1_SOURCES) $(justsyms_SOURCES) $(large_SOURCES) \ + local_labels_test.c many_sections_r_test.c \ + $(many_sections_test_SOURCES) $(object_unittest_SOURCES) \ + permission_test.c plugin_test_1.c plugin_test_2.c \ + plugin_test_3.c plugin_test_4.c $(protected_1_SOURCES) \ + $(protected_2_SOURCES) $(relro_script_test_SOURCES) \ + $(relro_test_SOURCES) $(script_test_1_SOURCES) \ + $(script_test_2_SOURCES) script_test_3.c \ + $(searched_file_test_SOURCES) $(thin_archive_test_1_SOURCES) \ + $(thin_archive_test_2_SOURCES) $(tls_pic_test_SOURCES) \ + $(tls_shared_gd_to_ie_test_SOURCES) \ + $(tls_shared_gnu2_gd_to_ie_test_SOURCES) \ + $(tls_shared_gnu2_test_SOURCES) $(tls_shared_ie_test_SOURCES) \ + $(tls_shared_nonpic_test_SOURCES) $(tls_shared_test_SOURCES) \ + $(tls_static_pic_test_SOURCES) $(tls_static_test_SOURCES) \ + $(tls_test_SOURCES) $(two_file_mixed_2_shared_test_SOURCES) \ + $(two_file_mixed_shared_test_SOURCES) \ + $(two_file_pic_test_SOURCES) two_file_pie_test.c \ + $(two_file_relocatable_test_SOURCES) \ + $(two_file_same_shared_nonpic_test_SOURCES) \ + $(two_file_same_shared_strip_test_SOURCES) \ + $(two_file_same_shared_test_SOURCES) \ + $(two_file_separate_shared_12_nonpic_test_SOURCES) \ + $(two_file_separate_shared_12_test_SOURCES) \ + $(two_file_separate_shared_21_nonpic_test_SOURCES) \ + $(two_file_separate_shared_21_test_SOURCES) \ + $(two_file_shared_1_nonpic_test_SOURCES) \ + $(two_file_shared_1_pic_2_test_SOURCES) \ + $(two_file_shared_1_test_SOURCES) \ + $(two_file_shared_2_nonpic_test_SOURCES) \ + $(two_file_shared_2_pic_1_test_SOURCES) \ + $(two_file_shared_2_test_SOURCES) \ + $(two_file_static_test_SOURCES) two_file_strip_test.c \ + $(two_file_test_SOURCES) $(ver_test_SOURCES) \ + $(ver_test_11_SOURCES) $(ver_test_2_SOURCES) \ + $(ver_test_6_SOURCES) $(ver_test_8_SOURCES) \ + $(ver_test_9_SOURCES) $(weak_alias_test_SOURCES) weak_plt.c \ + $(weak_test_SOURCES) $(weak_undef_nonpic_test_SOURCES) \ + $(weak_undef_test_SOURCES) +DIST_SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c \ + basic_pie_test.c basic_static_pic_test.c basic_static_test.c \ + basic_test.c $(am__binary_test_SOURCES_DIST) \ + $(binary_unittest_SOURCES) $(am__common_test_1_SOURCES_DIST) \ + $(am__constructor_static_test_SOURCES_DIST) \ + $(am__constructor_test_SOURCES_DIST) \ + $(am__copy_test_SOURCES_DIST) \ + $(am__discard_locals_test_SOURCES_DIST) \ + $(am__exception_same_shared_test_SOURCES_DIST) \ + $(am__exception_separate_shared_12_test_SOURCES_DIST) \ + $(am__exception_separate_shared_21_test_SOURCES_DIST) \ + $(am__exception_shared_1_test_SOURCES_DIST) \ + $(am__exception_shared_2_test_SOURCES_DIST) \ + $(am__exception_static_test_SOURCES_DIST) \ + $(am__exception_test_SOURCES_DIST) \ + $(am__exclude_libs_test_SOURCES_DIST) \ + flagstest_compress_debug_sections.c flagstest_o_specialfile.c \ + flagstest_o_specialfile_and_compress_debug_sections.c \ + $(am__initpri1_SOURCES_DIST) $(am__justsyms_SOURCES_DIST) \ + $(am__large_SOURCES_DIST) local_labels_test.c \ + many_sections_r_test.c $(am__many_sections_test_SOURCES_DIST) \ + $(object_unittest_SOURCES) permission_test.c plugin_test_1.c \ + plugin_test_2.c plugin_test_3.c plugin_test_4.c \ + $(am__protected_1_SOURCES_DIST) \ + $(am__protected_2_SOURCES_DIST) \ + $(am__relro_script_test_SOURCES_DIST) \ + $(am__relro_test_SOURCES_DIST) \ + $(am__script_test_1_SOURCES_DIST) \ + $(am__script_test_2_SOURCES_DIST) script_test_3.c \ + $(am__searched_file_test_SOURCES_DIST) \ + $(am__thin_archive_test_1_SOURCES_DIST) \ + $(am__thin_archive_test_2_SOURCES_DIST) \ + $(am__tls_pic_test_SOURCES_DIST) \ + $(am__tls_shared_gd_to_ie_test_SOURCES_DIST) \ + $(am__tls_shared_gnu2_gd_to_ie_test_SOURCES_DIST) \ + $(am__tls_shared_gnu2_test_SOURCES_DIST) \ + $(am__tls_shared_ie_test_SOURCES_DIST) \ + $(am__tls_shared_nonpic_test_SOURCES_DIST) \ + $(am__tls_shared_test_SOURCES_DIST) \ + $(am__tls_static_pic_test_SOURCES_DIST) \ + $(am__tls_static_test_SOURCES_DIST) \ + $(am__tls_test_SOURCES_DIST) \ + $(am__two_file_mixed_2_shared_test_SOURCES_DIST) \ + $(am__two_file_mixed_shared_test_SOURCES_DIST) \ + $(am__two_file_pic_test_SOURCES_DIST) two_file_pie_test.c \ + $(am__two_file_relocatable_test_SOURCES_DIST) \ + $(am__two_file_same_shared_nonpic_test_SOURCES_DIST) \ + $(am__two_file_same_shared_strip_test_SOURCES_DIST) \ + $(am__two_file_same_shared_test_SOURCES_DIST) \ + $(am__two_file_separate_shared_12_nonpic_test_SOURCES_DIST) \ + $(am__two_file_separate_shared_12_test_SOURCES_DIST) \ + $(am__two_file_separate_shared_21_nonpic_test_SOURCES_DIST) \ + $(am__two_file_separate_shared_21_test_SOURCES_DIST) \ + $(am__two_file_shared_1_nonpic_test_SOURCES_DIST) \ + $(am__two_file_shared_1_pic_2_test_SOURCES_DIST) \ + $(am__two_file_shared_1_test_SOURCES_DIST) \ + $(am__two_file_shared_2_nonpic_test_SOURCES_DIST) \ + $(am__two_file_shared_2_pic_1_test_SOURCES_DIST) \ + $(am__two_file_shared_2_test_SOURCES_DIST) \ + $(am__two_file_static_test_SOURCES_DIST) two_file_strip_test.c \ + $(am__two_file_test_SOURCES_DIST) $(am__ver_test_SOURCES_DIST) \ + $(am__ver_test_11_SOURCES_DIST) $(am__ver_test_2_SOURCES_DIST) \ + $(am__ver_test_6_SOURCES_DIST) $(am__ver_test_8_SOURCES_DIST) \ + $(am__ver_test_9_SOURCES_DIST) \ + $(am__weak_alias_test_SOURCES_DIST) weak_plt.c \ + $(am__weak_test_SOURCES_DIST) \ + $(am__weak_undef_nonpic_test_SOURCES_DIST) \ + $(am__weak_undef_test_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +INCINTL = @INCINTL@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +LDFLAGS = @LDFLAGS@ +LFS_CFLAGS = @LFS_CFLAGS@ +LIBINTL = @LIBINTL@ +LIBINTL_DEP = @LIBINTL_DEP@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NO_WERROR = @NO_WERROR@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANDOM_SEED_CFLAGS = @RANDOM_SEED_CFLAGS@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TARGETOBJS = @TARGETOBJS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# Ignore warning about AM_PROG_CC_C_O due to large_CFLAGS +AUTOMAKE_OPTIONS = foreign -Wno-portability + +# The two_file_test tests -fmerge-constants, so we simply always turn +# it on. This may need to be controlled by a configure option +# eventually. +AM_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS) -fmerge-constants +AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) -fmerge-constants +AM_CPPFLAGS = \ + -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../../include \ + -I$(srcdir)/../../elfcpp -I.. \ + -DLOCALEDIR="\"$(datadir)/locale\"" \ + @INCINTL@ + +TEST_READELF = $(top_builddir)/../binutils/readelf +TEST_OBJDUMP = $(top_builddir)/../binutils/objdump +TEST_CXXFILT = $(top_builddir)/../binutils/cxxfilt +TEST_STRIP = $(top_builddir)/../binutils/strip-new +TEST_AR = $(top_builddir)/../binutils/ar +TEST_NM = $(top_builddir)/../binutils/nm-new +TEST_AS = $(top_builddir)/../gas/as-new +@PLUGINS_TRUE@LIBDL = -ldl +@THREADS_TRUE@THREADSLIB = -lpthread +@OMP_SUPPORT_TRUE@TLS_TEST_C_CFLAGS = -fopenmp + +# 'make clean' is good about deleting some intermediate files (such as +# .o's), but not all of them (such as .so's and .err files). We +# improve on that here. automake-1.9 info docs say "mostlyclean" is +# the right choice for files 'make' builds that people rebuild. +MOSTLYCLEANFILES = *.so *.syms *.stdout $(am__append_3) \ + $(am__append_8) $(am__append_17) $(am__append_25) \ + $(am__append_29) $(am__append_34) $(am__append_37) + +# We will add to these later, for each individual test. Note +# that we add each test under check_SCRIPTS or check_PROGRAMS; +# the TESTS variable is automatically populated from these. +check_SCRIPTS = $(am__append_1) $(am__append_23) $(am__append_27) \ + $(am__append_32) $(am__append_35) +check_DATA = $(am__append_2) $(am__append_24) $(am__append_28) \ + $(am__append_33) $(am__append_36) +BUILT_SOURCES = $(am__append_16) +TESTS = $(check_SCRIPTS) $(check_PROGRAMS) + +# --------------------------------------------------------------------- +# These tests test the internals of gold (unittests). + +# Infrastucture needed for the unittests +check_LIBRARIES = libgoldtest.a +libgoldtest_a_SOURCES = test.cc testmain.cc testfile.cc +DEPENDENCIES = \ + libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL_DEP) + +LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \ + $(THREADSLIB) $(LIBDL) + +object_unittest_SOURCES = object_unittest.cc +binary_unittest_SOURCES = binary_unittest.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_test_SOURCES = constructor_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_static_test_SOURCES = $(constructor_test_SOURCES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_static_test_DEPENDENCIES = $(constructor_test_DEPENDENCIES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@constructor_static_test_LDFLAGS = $(constructor_test_LDFLAGS) -static +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_SOURCES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1b.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_main.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test.h + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_static_test_SOURCES = $(two_file_test_SOURCES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_static_test_DEPENDENCIES = $(two_file_test_DEPENDENCIES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_static_test_LDFLAGS = $(two_file_test_LDFLAGS) -static +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pic_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pic_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pic_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pic_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_test_SOURCES = two_file_test_2.cc two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_test_DEPENDENCIES = gcctestdir/ld two_file_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_test_LDADD = two_file_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_test_SOURCES = two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_test_DEPENDENCIES = gcctestdir/ld two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_test_LDADD = two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_pic_2_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_pic_2_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1.so two_file_test_1_pic.o two_file_test_1b_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_pic_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_pic_2_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_pic_1_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_pic_1_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_2.so two_file_test_2_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_pic_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_pic_1_test_LDADD = two_file_test_2_pic.o two_file_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_test_LDADD = two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1.so two_file_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1.so two_file_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1.so two_file_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2.so two_file_shared_1.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_relocatable.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable_test_LDADD = two_file_relocatable.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic_test_SOURCES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2.cc two_file_test_main.cc + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic_test_LDADD = two_file_shared_1_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic_test_SOURCES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_2_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic_test_LDADD = two_file_shared_2_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_nonpic_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_nonpic_test_LDADD = two_file_shared_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_nonpic_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_12_nonpic_test_LDADD = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_nonpic_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_nonpic_test_DEPENDENCIES = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_nonpic_test_LDADD = \ +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so + +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_shared_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_shared_test_LDADD = two_file_shared_mixed.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_2_shared_test_SOURCES = two_file_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_2_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed_1.so two_file_shared_2.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_2_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_mixed_2_shared_test_LDADD = two_file_shared_mixed_1.so two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_strip_test_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_strip_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld two_file_shared_strip.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R. +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_same_shared_strip_test_LDADD = two_file_shared_strip.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_1_SOURCES = common_test_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_1_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@common_test_1_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_SOURCES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.cc \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test.h + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_SOURCES = $(exception_test_SOURCES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_DEPENDENCIES = $(exception_test_DEPENDENCIES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_LDFLAGS = $(exception_test_LDFLAGS) -static +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_LDADD = exception_shared_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_LDADD = exception_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_SOURCES = exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_LDADD = exception_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_SOURCES = exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld exception_shared_1.so exception_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_1.so exception_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_SOURCES = exception_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld exception_shared_1.so exception_shared_2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_2.so exception_shared_1.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_test_SOURCES = weak_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_test_SOURCES = weak_undef_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib.so alt/weak_undef_lib.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_test_LDADD = -L . weak_undef_lib.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_nonpic_test_SOURCES = weak_undef_test.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_nonpic_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib_nonpic.so alt/weak_undef_lib_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_nonpic_test_LDADD = -L . weak_undef_lib_nonpic.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_SOURCES = weak_alias_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_DEPENDENCIES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld weak_alias_test_1.so weak_alias_test_2.so \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_alias_test_3.o weak_alias_test_4.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_LDADD = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_alias_test_1.so weak_alias_test_2.so weak_alias_test_3.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_alias_test_4.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_SOURCES = copy_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_DEPENDENCIES = gcctestdir/ld copy_test_1.so copy_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_LDADD = copy_test_1.so copy_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc tls_test.h +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_DEPENDENCIES = gcctestdir/ld tls_test_c.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_LDADD = tls_test_c.o -lpthread +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pic_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pic_test_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ -lpthread + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_test_DEPENDENCIES = gcctestdir/ld tls_test_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_test_LDADD = tls_test_shared.so -lpthread +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_ie_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_ie_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_ie_test_LDADD = tls_test_ie_shared.so -lpthread +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_gd_to_ie_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_c_pic.o tls_test_shared2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_gd_to_ie_test_LDADD = tls_test_pic.o tls_test_c_pic.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_test_shared2.so -lpthread + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_gd_to_ie_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ tls_test_c_gnu2.o tls_test_gnu2_shared2.so + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_gd_to_ie_test_LDADD = tls_test_gnu2.o tls_test_c_gnu2.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ tls_test_gnu2_shared2.so -lpthread + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_test_SOURCES = tls_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_shared_gnu2_test_LDADD = tls_test_gnu2_shared.so -lpthread +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_test_SOURCES = $(tls_test_SOURCES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_test_LDFLAGS = $(tls_test_LDFLAGS) -static +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_test_LDADD = $(tls_test_LDADD) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_pic_test_SOURCES = $(tls_pic_test_SOURCES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_pic_test_DEPENDENCIES = $(tls_pic_test_DEPENDENCIES) +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_pic_test_LDFLAGS = $(tls_pic_test_LDFLAGS) -static +@GCC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@tls_static_pic_test_LDADD = $(tls_pic_test_LDADD) +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_SOURCES = tls_test_main.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_SOURCES = many_sections_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_LDFLAGS = -Bgcctestdir/ -rdynamic +@CONSTRUCTOR_PRIORITY_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri1_SOURCES = initpri1.c +@CONSTRUCTOR_PRIORITY_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri1_DEPENDENCIES = gcctestdir/ld +@CONSTRUCTOR_PRIORITY_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri1_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_SOURCES = ver_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2_SOURCES = ver_test_main_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2_DEPENDENCIES = gcctestdir/ld ver_test_4.so ver_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2_LDADD = ver_test_4.so ver_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_6_SOURCES = ver_test_6.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_6_DEPENDENCIES = gcctestdir/ld ver_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_6_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_6_LDADD = ver_test_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_SOURCES = two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_DEPENDENCIES = gcctestdir/ld ver_test_8_1.so ver_test_8_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_LDADD = ver_test_8_1.so ver_test_8_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9_SOURCES = ver_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9_DEPENDENCIES = gcctestdir/ld ver_test_9.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9_LDADD = ver_test_9.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11_SOURCES = ver_test_main_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11_DEPENDENCIES = gcctestdir/ld ver_test_11.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11_LDADD = ver_test_11.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_SOURCES = \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_1.cc protected_main_2.cc protected_main_3.cc + +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_DEPENDENCIES = gcctestdir/ld protected_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_LDADD = protected_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_SOURCES = protected_main_1.cc protected_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_DEPENDENCIES = gcctestdir/ld protected_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_LDADD = protected_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_SOURCES = relro_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_DEPENDENCIES = gcctestdir/ld relro_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_LDADD = relro_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test_SOURCES = relro_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test_DEPENDENCIES = gcctestdir/ld relro_script_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test_LDADD = relro_script_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_1_SOURCES = script_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_1_DEPENDENCIES = gcctestdir/ld script_test_1.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_1.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_2_SOURCES = script_test_2.cc script_test_2a.cc script_test_2b.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_2_DEPENDENCIES = gcctestdir/ld script_test_2.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_2.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_SOURCES = justsyms_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_DEPENDENCIES = gcctestdir/ld justsyms_2r.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_2r.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@binary_test_SOURCES = binary_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@binary_test_DEPENDENCIES = gcctestdir/ld binary.txt +@GCC_TRUE@@NATIVE_LINKER_TRUE@binary_test_LDFLAGS = -Bgcctestdir/ -Wl,--format,binary,binary.txt,--format,elf +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_1_SOURCES = thin_archive_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_1_DEPENDENCIES = gcctestdir/ld libthin1.a alt/libthin2.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_1_LDFLAGS = -Bgcctestdir/ -Lalt +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_1_LDADD = libthin1.a -lthin2 +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_2_SOURCES = thin_archive_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_2_DEPENDENCIES = gcctestdir/ld libthinall.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_2_LDFLAGS = -Bgcctestdir/ -L. +@GCC_TRUE@@NATIVE_LINKER_TRUE@thin_archive_test_2_LDADD = -lthinall +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test_SOURCES = exclude_libs_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test_DEPENDENCIES = gcctestdir/ld libexclude_libs_test_1.a \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_2.a alt/libexclude_libs_test_3.a + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test_LDFLAGS = -Bgcctestdir/ -L. -Lalt \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--exclude-libs,dummy:libexclude_libs_test_1 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--exclude-libs,libexclude_libs_test_3 + +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test_LDADD = -lexclude_libs_test_1 -lexclude_libs_test_2 \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/libexclude_libs_test_3.a + +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_test_SOURCES = discard_locals_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_test_LDFLAGS = -Bgcctestdir/ -Wl,--discard-locals +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@large_SOURCES = large.c +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@large_CFLAGS = -mcmodel=medium +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@large_DEPENDENCIES = gcctestdir/ld +@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@large_LDFLAGS = -Bgcctestdir/ +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_SOURCES = searched_file_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_DEPENDENCIES = alt/searched_file_test_lib.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_LDFLAGS = -Bgcctestdir/ -Lalt +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_LDADD = -l:searched_file_test_lib.a +@DEFAULT_TARGET_I386_TRUE@SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +@DEFAULT_TARGET_X86_64_TRUE@SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .cc .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign testsuite/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign testsuite/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLIBRARIES: + -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES) +libgoldtest.a: $(libgoldtest_a_OBJECTS) $(libgoldtest_a_DEPENDENCIES) + -rm -f libgoldtest.a + $(libgoldtest_a_AR) libgoldtest.a $(libgoldtest_a_OBJECTS) $(libgoldtest_a_LIBADD) + $(RANLIB) libgoldtest.a + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +@GCC_FALSE@basic_pic_test$(EXEEXT): $(basic_pic_test_OBJECTS) $(basic_pic_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_pic_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_pic_test_OBJECTS) $(basic_pic_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_pic_test$(EXEEXT): $(basic_pic_test_OBJECTS) $(basic_pic_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_pic_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_pic_test_OBJECTS) $(basic_pic_test_LDADD) $(LIBS) +@GCC_FALSE@basic_pie_test$(EXEEXT): $(basic_pie_test_OBJECTS) $(basic_pie_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_pie_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_pie_test_OBJECTS) $(basic_pie_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_pie_test$(EXEEXT): $(basic_pie_test_OBJECTS) $(basic_pie_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_pie_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_pie_test_OBJECTS) $(basic_pie_test_LDADD) $(LIBS) +@GCC_FALSE@basic_static_pic_test$(EXEEXT): $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_static_pic_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_static_pic_test$(EXEEXT): $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_static_pic_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_static_pic_test_OBJECTS) $(basic_static_pic_test_LDADD) $(LIBS) +@GCC_FALSE@basic_static_test$(EXEEXT): $(basic_static_test_OBJECTS) $(basic_static_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_static_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_static_test_OBJECTS) $(basic_static_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_static_test$(EXEEXT): $(basic_static_test_OBJECTS) $(basic_static_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_static_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_static_test_OBJECTS) $(basic_static_test_LDADD) $(LIBS) +@GCC_FALSE@basic_test$(EXEEXT): $(basic_test_OBJECTS) $(basic_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f basic_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(basic_test_OBJECTS) $(basic_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@basic_test$(EXEEXT): $(basic_test_OBJECTS) $(basic_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f basic_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(basic_test_OBJECTS) $(basic_test_LDADD) $(LIBS) +binary_test$(EXEEXT): $(binary_test_OBJECTS) $(binary_test_DEPENDENCIES) + @rm -f binary_test$(EXEEXT) + $(binary_test_LINK) $(binary_test_OBJECTS) $(binary_test_LDADD) $(LIBS) +binary_unittest$(EXEEXT): $(binary_unittest_OBJECTS) $(binary_unittest_DEPENDENCIES) + @rm -f binary_unittest$(EXEEXT) + $(CXXLINK) $(binary_unittest_OBJECTS) $(binary_unittest_LDADD) $(LIBS) +common_test_1$(EXEEXT): $(common_test_1_OBJECTS) $(common_test_1_DEPENDENCIES) + @rm -f common_test_1$(EXEEXT) + $(common_test_1_LINK) $(common_test_1_OBJECTS) $(common_test_1_LDADD) $(LIBS) +constructor_static_test$(EXEEXT): $(constructor_static_test_OBJECTS) $(constructor_static_test_DEPENDENCIES) + @rm -f constructor_static_test$(EXEEXT) + $(constructor_static_test_LINK) $(constructor_static_test_OBJECTS) $(constructor_static_test_LDADD) $(LIBS) +constructor_test$(EXEEXT): $(constructor_test_OBJECTS) $(constructor_test_DEPENDENCIES) + @rm -f constructor_test$(EXEEXT) + $(constructor_test_LINK) $(constructor_test_OBJECTS) $(constructor_test_LDADD) $(LIBS) +copy_test$(EXEEXT): $(copy_test_OBJECTS) $(copy_test_DEPENDENCIES) + @rm -f copy_test$(EXEEXT) + $(copy_test_LINK) $(copy_test_OBJECTS) $(copy_test_LDADD) $(LIBS) +discard_locals_test$(EXEEXT): $(discard_locals_test_OBJECTS) $(discard_locals_test_DEPENDENCIES) + @rm -f discard_locals_test$(EXEEXT) + $(discard_locals_test_LINK) $(discard_locals_test_OBJECTS) $(discard_locals_test_LDADD) $(LIBS) +exception_same_shared_test$(EXEEXT): $(exception_same_shared_test_OBJECTS) $(exception_same_shared_test_DEPENDENCIES) + @rm -f exception_same_shared_test$(EXEEXT) + $(exception_same_shared_test_LINK) $(exception_same_shared_test_OBJECTS) $(exception_same_shared_test_LDADD) $(LIBS) +exception_separate_shared_12_test$(EXEEXT): $(exception_separate_shared_12_test_OBJECTS) $(exception_separate_shared_12_test_DEPENDENCIES) + @rm -f exception_separate_shared_12_test$(EXEEXT) + $(exception_separate_shared_12_test_LINK) $(exception_separate_shared_12_test_OBJECTS) $(exception_separate_shared_12_test_LDADD) $(LIBS) +exception_separate_shared_21_test$(EXEEXT): $(exception_separate_shared_21_test_OBJECTS) $(exception_separate_shared_21_test_DEPENDENCIES) + @rm -f exception_separate_shared_21_test$(EXEEXT) + $(exception_separate_shared_21_test_LINK) $(exception_separate_shared_21_test_OBJECTS) $(exception_separate_shared_21_test_LDADD) $(LIBS) +exception_shared_1_test$(EXEEXT): $(exception_shared_1_test_OBJECTS) $(exception_shared_1_test_DEPENDENCIES) + @rm -f exception_shared_1_test$(EXEEXT) + $(exception_shared_1_test_LINK) $(exception_shared_1_test_OBJECTS) $(exception_shared_1_test_LDADD) $(LIBS) +exception_shared_2_test$(EXEEXT): $(exception_shared_2_test_OBJECTS) $(exception_shared_2_test_DEPENDENCIES) + @rm -f exception_shared_2_test$(EXEEXT) + $(exception_shared_2_test_LINK) $(exception_shared_2_test_OBJECTS) $(exception_shared_2_test_LDADD) $(LIBS) +exception_static_test$(EXEEXT): $(exception_static_test_OBJECTS) $(exception_static_test_DEPENDENCIES) + @rm -f exception_static_test$(EXEEXT) + $(exception_static_test_LINK) $(exception_static_test_OBJECTS) $(exception_static_test_LDADD) $(LIBS) +exception_test$(EXEEXT): $(exception_test_OBJECTS) $(exception_test_DEPENDENCIES) + @rm -f exception_test$(EXEEXT) + $(exception_test_LINK) $(exception_test_OBJECTS) $(exception_test_LDADD) $(LIBS) +exclude_libs_test$(EXEEXT): $(exclude_libs_test_OBJECTS) $(exclude_libs_test_DEPENDENCIES) + @rm -f exclude_libs_test$(EXEEXT) + $(exclude_libs_test_LINK) $(exclude_libs_test_OBJECTS) $(exclude_libs_test_LDADD) $(LIBS) +@GCC_FALSE@flagstest_compress_debug_sections$(EXEEXT): $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_DEPENDENCIES) +@GCC_FALSE@ @rm -f flagstest_compress_debug_sections$(EXEEXT) +@GCC_FALSE@ $(LINK) $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_LDADD) $(LIBS) +@HAVE_ZLIB_FALSE@flagstest_compress_debug_sections$(EXEEXT): $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_DEPENDENCIES) +@HAVE_ZLIB_FALSE@ @rm -f flagstest_compress_debug_sections$(EXEEXT) +@HAVE_ZLIB_FALSE@ $(LINK) $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@flagstest_compress_debug_sections$(EXEEXT): $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f flagstest_compress_debug_sections$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(flagstest_compress_debug_sections_OBJECTS) $(flagstest_compress_debug_sections_LDADD) $(LIBS) +@GCC_FALSE@flagstest_o_specialfile$(EXEEXT): $(flagstest_o_specialfile_OBJECTS) $(flagstest_o_specialfile_DEPENDENCIES) +@GCC_FALSE@ @rm -f flagstest_o_specialfile$(EXEEXT) +@GCC_FALSE@ $(LINK) $(flagstest_o_specialfile_OBJECTS) $(flagstest_o_specialfile_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@flagstest_o_specialfile$(EXEEXT): $(flagstest_o_specialfile_OBJECTS) $(flagstest_o_specialfile_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f flagstest_o_specialfile$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(flagstest_o_specialfile_OBJECTS) $(flagstest_o_specialfile_LDADD) $(LIBS) +@GCC_FALSE@flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT): $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_DEPENDENCIES) +@GCC_FALSE@ @rm -f flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) +@GCC_FALSE@ $(LINK) $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_LDADD) $(LIBS) +@HAVE_ZLIB_FALSE@flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT): $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_DEPENDENCIES) +@HAVE_ZLIB_FALSE@ @rm -f flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) +@HAVE_ZLIB_FALSE@ $(LINK) $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT): $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(flagstest_o_specialfile_and_compress_debug_sections_OBJECTS) $(flagstest_o_specialfile_and_compress_debug_sections_LDADD) $(LIBS) +initpri1$(EXEEXT): $(initpri1_OBJECTS) $(initpri1_DEPENDENCIES) + @rm -f initpri1$(EXEEXT) + $(initpri1_LINK) $(initpri1_OBJECTS) $(initpri1_LDADD) $(LIBS) +justsyms$(EXEEXT): $(justsyms_OBJECTS) $(justsyms_DEPENDENCIES) + @rm -f justsyms$(EXEEXT) + $(justsyms_LINK) $(justsyms_OBJECTS) $(justsyms_LDADD) $(LIBS) +large$(EXEEXT): $(large_OBJECTS) $(large_DEPENDENCIES) + @rm -f large$(EXEEXT) + $(large_LINK) $(large_OBJECTS) $(large_LDADD) $(LIBS) +@GCC_FALSE@local_labels_test$(EXEEXT): $(local_labels_test_OBJECTS) $(local_labels_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f local_labels_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(local_labels_test_OBJECTS) $(local_labels_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@local_labels_test$(EXEEXT): $(local_labels_test_OBJECTS) $(local_labels_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f local_labels_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(local_labels_test_OBJECTS) $(local_labels_test_LDADD) $(LIBS) +@GCC_FALSE@many_sections_r_test$(EXEEXT): $(many_sections_r_test_OBJECTS) $(many_sections_r_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f many_sections_r_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(many_sections_r_test_OBJECTS) $(many_sections_r_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@many_sections_r_test$(EXEEXT): $(many_sections_r_test_OBJECTS) $(many_sections_r_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f many_sections_r_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(many_sections_r_test_OBJECTS) $(many_sections_r_test_LDADD) $(LIBS) +many_sections_test$(EXEEXT): $(many_sections_test_OBJECTS) $(many_sections_test_DEPENDENCIES) + @rm -f many_sections_test$(EXEEXT) + $(many_sections_test_LINK) $(many_sections_test_OBJECTS) $(many_sections_test_LDADD) $(LIBS) +object_unittest$(EXEEXT): $(object_unittest_OBJECTS) $(object_unittest_DEPENDENCIES) + @rm -f object_unittest$(EXEEXT) + $(CXXLINK) $(object_unittest_OBJECTS) $(object_unittest_LDADD) $(LIBS) +@GCC_FALSE@permission_test$(EXEEXT): $(permission_test_OBJECTS) $(permission_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f permission_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(permission_test_OBJECTS) $(permission_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@permission_test$(EXEEXT): $(permission_test_OBJECTS) $(permission_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f permission_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(permission_test_OBJECTS) $(permission_test_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_1$(EXEEXT): $(plugin_test_1_OBJECTS) $(plugin_test_1_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_1$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_1_OBJECTS) $(plugin_test_1_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_1$(EXEEXT): $(plugin_test_1_OBJECTS) $(plugin_test_1_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_1$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_1_OBJECTS) $(plugin_test_1_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_1$(EXEEXT): $(plugin_test_1_OBJECTS) $(plugin_test_1_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_1$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_1_OBJECTS) $(plugin_test_1_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_2$(EXEEXT): $(plugin_test_2_OBJECTS) $(plugin_test_2_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_2$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_2_OBJECTS) $(plugin_test_2_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_2$(EXEEXT): $(plugin_test_2_OBJECTS) $(plugin_test_2_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_2$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_2_OBJECTS) $(plugin_test_2_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_2$(EXEEXT): $(plugin_test_2_OBJECTS) $(plugin_test_2_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_2$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_2_OBJECTS) $(plugin_test_2_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_3$(EXEEXT): $(plugin_test_3_OBJECTS) $(plugin_test_3_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_3$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_3_OBJECTS) $(plugin_test_3_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_3$(EXEEXT): $(plugin_test_3_OBJECTS) $(plugin_test_3_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_3$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_3_OBJECTS) $(plugin_test_3_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_3$(EXEEXT): $(plugin_test_3_OBJECTS) $(plugin_test_3_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_3$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_3_OBJECTS) $(plugin_test_3_LDADD) $(LIBS) +@GCC_FALSE@plugin_test_4$(EXEEXT): $(plugin_test_4_OBJECTS) $(plugin_test_4_DEPENDENCIES) +@GCC_FALSE@ @rm -f plugin_test_4$(EXEEXT) +@GCC_FALSE@ $(LINK) $(plugin_test_4_OBJECTS) $(plugin_test_4_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@plugin_test_4$(EXEEXT): $(plugin_test_4_OBJECTS) $(plugin_test_4_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f plugin_test_4$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_4_OBJECTS) $(plugin_test_4_LDADD) $(LIBS) +@PLUGINS_FALSE@plugin_test_4$(EXEEXT): $(plugin_test_4_OBJECTS) $(plugin_test_4_DEPENDENCIES) +@PLUGINS_FALSE@ @rm -f plugin_test_4$(EXEEXT) +@PLUGINS_FALSE@ $(LINK) $(plugin_test_4_OBJECTS) $(plugin_test_4_LDADD) $(LIBS) +protected_1$(EXEEXT): $(protected_1_OBJECTS) $(protected_1_DEPENDENCIES) + @rm -f protected_1$(EXEEXT) + $(protected_1_LINK) $(protected_1_OBJECTS) $(protected_1_LDADD) $(LIBS) +protected_2$(EXEEXT): $(protected_2_OBJECTS) $(protected_2_DEPENDENCIES) + @rm -f protected_2$(EXEEXT) + $(protected_2_LINK) $(protected_2_OBJECTS) $(protected_2_LDADD) $(LIBS) +relro_script_test$(EXEEXT): $(relro_script_test_OBJECTS) $(relro_script_test_DEPENDENCIES) + @rm -f relro_script_test$(EXEEXT) + $(relro_script_test_LINK) $(relro_script_test_OBJECTS) $(relro_script_test_LDADD) $(LIBS) +relro_test$(EXEEXT): $(relro_test_OBJECTS) $(relro_test_DEPENDENCIES) + @rm -f relro_test$(EXEEXT) + $(relro_test_LINK) $(relro_test_OBJECTS) $(relro_test_LDADD) $(LIBS) +script_test_1$(EXEEXT): $(script_test_1_OBJECTS) $(script_test_1_DEPENDENCIES) + @rm -f script_test_1$(EXEEXT) + $(script_test_1_LINK) $(script_test_1_OBJECTS) $(script_test_1_LDADD) $(LIBS) +script_test_2$(EXEEXT): $(script_test_2_OBJECTS) $(script_test_2_DEPENDENCIES) + @rm -f script_test_2$(EXEEXT) + $(script_test_2_LINK) $(script_test_2_OBJECTS) $(script_test_2_LDADD) $(LIBS) +@GCC_FALSE@script_test_3$(EXEEXT): $(script_test_3_OBJECTS) $(script_test_3_DEPENDENCIES) +@GCC_FALSE@ @rm -f script_test_3$(EXEEXT) +@GCC_FALSE@ $(LINK) $(script_test_3_OBJECTS) $(script_test_3_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@script_test_3$(EXEEXT): $(script_test_3_OBJECTS) $(script_test_3_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f script_test_3$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(script_test_3_OBJECTS) $(script_test_3_LDADD) $(LIBS) +searched_file_test$(EXEEXT): $(searched_file_test_OBJECTS) $(searched_file_test_DEPENDENCIES) + @rm -f searched_file_test$(EXEEXT) + $(searched_file_test_LINK) $(searched_file_test_OBJECTS) $(searched_file_test_LDADD) $(LIBS) +thin_archive_test_1$(EXEEXT): $(thin_archive_test_1_OBJECTS) $(thin_archive_test_1_DEPENDENCIES) + @rm -f thin_archive_test_1$(EXEEXT) + $(thin_archive_test_1_LINK) $(thin_archive_test_1_OBJECTS) $(thin_archive_test_1_LDADD) $(LIBS) +thin_archive_test_2$(EXEEXT): $(thin_archive_test_2_OBJECTS) $(thin_archive_test_2_DEPENDENCIES) + @rm -f thin_archive_test_2$(EXEEXT) + $(thin_archive_test_2_LINK) $(thin_archive_test_2_OBJECTS) $(thin_archive_test_2_LDADD) $(LIBS) +tls_pic_test$(EXEEXT): $(tls_pic_test_OBJECTS) $(tls_pic_test_DEPENDENCIES) + @rm -f tls_pic_test$(EXEEXT) + $(tls_pic_test_LINK) $(tls_pic_test_OBJECTS) $(tls_pic_test_LDADD) $(LIBS) +tls_shared_gd_to_ie_test$(EXEEXT): $(tls_shared_gd_to_ie_test_OBJECTS) $(tls_shared_gd_to_ie_test_DEPENDENCIES) + @rm -f tls_shared_gd_to_ie_test$(EXEEXT) + $(tls_shared_gd_to_ie_test_LINK) $(tls_shared_gd_to_ie_test_OBJECTS) $(tls_shared_gd_to_ie_test_LDADD) $(LIBS) +tls_shared_gnu2_gd_to_ie_test$(EXEEXT): $(tls_shared_gnu2_gd_to_ie_test_OBJECTS) $(tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES) + @rm -f tls_shared_gnu2_gd_to_ie_test$(EXEEXT) + $(tls_shared_gnu2_gd_to_ie_test_LINK) $(tls_shared_gnu2_gd_to_ie_test_OBJECTS) $(tls_shared_gnu2_gd_to_ie_test_LDADD) $(LIBS) +tls_shared_gnu2_test$(EXEEXT): $(tls_shared_gnu2_test_OBJECTS) $(tls_shared_gnu2_test_DEPENDENCIES) + @rm -f tls_shared_gnu2_test$(EXEEXT) + $(tls_shared_gnu2_test_LINK) $(tls_shared_gnu2_test_OBJECTS) $(tls_shared_gnu2_test_LDADD) $(LIBS) +tls_shared_ie_test$(EXEEXT): $(tls_shared_ie_test_OBJECTS) $(tls_shared_ie_test_DEPENDENCIES) + @rm -f tls_shared_ie_test$(EXEEXT) + $(tls_shared_ie_test_LINK) $(tls_shared_ie_test_OBJECTS) $(tls_shared_ie_test_LDADD) $(LIBS) +tls_shared_nonpic_test$(EXEEXT): $(tls_shared_nonpic_test_OBJECTS) $(tls_shared_nonpic_test_DEPENDENCIES) + @rm -f tls_shared_nonpic_test$(EXEEXT) + $(tls_shared_nonpic_test_LINK) $(tls_shared_nonpic_test_OBJECTS) $(tls_shared_nonpic_test_LDADD) $(LIBS) +tls_shared_test$(EXEEXT): $(tls_shared_test_OBJECTS) $(tls_shared_test_DEPENDENCIES) + @rm -f tls_shared_test$(EXEEXT) + $(tls_shared_test_LINK) $(tls_shared_test_OBJECTS) $(tls_shared_test_LDADD) $(LIBS) +tls_static_pic_test$(EXEEXT): $(tls_static_pic_test_OBJECTS) $(tls_static_pic_test_DEPENDENCIES) + @rm -f tls_static_pic_test$(EXEEXT) + $(tls_static_pic_test_LINK) $(tls_static_pic_test_OBJECTS) $(tls_static_pic_test_LDADD) $(LIBS) +tls_static_test$(EXEEXT): $(tls_static_test_OBJECTS) $(tls_static_test_DEPENDENCIES) + @rm -f tls_static_test$(EXEEXT) + $(tls_static_test_LINK) $(tls_static_test_OBJECTS) $(tls_static_test_LDADD) $(LIBS) +tls_test$(EXEEXT): $(tls_test_OBJECTS) $(tls_test_DEPENDENCIES) + @rm -f tls_test$(EXEEXT) + $(tls_test_LINK) $(tls_test_OBJECTS) $(tls_test_LDADD) $(LIBS) +two_file_mixed_2_shared_test$(EXEEXT): $(two_file_mixed_2_shared_test_OBJECTS) $(two_file_mixed_2_shared_test_DEPENDENCIES) + @rm -f two_file_mixed_2_shared_test$(EXEEXT) + $(two_file_mixed_2_shared_test_LINK) $(two_file_mixed_2_shared_test_OBJECTS) $(two_file_mixed_2_shared_test_LDADD) $(LIBS) +two_file_mixed_shared_test$(EXEEXT): $(two_file_mixed_shared_test_OBJECTS) $(two_file_mixed_shared_test_DEPENDENCIES) + @rm -f two_file_mixed_shared_test$(EXEEXT) + $(two_file_mixed_shared_test_LINK) $(two_file_mixed_shared_test_OBJECTS) $(two_file_mixed_shared_test_LDADD) $(LIBS) +two_file_pic_test$(EXEEXT): $(two_file_pic_test_OBJECTS) $(two_file_pic_test_DEPENDENCIES) + @rm -f two_file_pic_test$(EXEEXT) + $(two_file_pic_test_LINK) $(two_file_pic_test_OBJECTS) $(two_file_pic_test_LDADD) $(LIBS) +@GCC_FALSE@two_file_pie_test$(EXEEXT): $(two_file_pie_test_OBJECTS) $(two_file_pie_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f two_file_pie_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(two_file_pie_test_OBJECTS) $(two_file_pie_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@two_file_pie_test$(EXEEXT): $(two_file_pie_test_OBJECTS) $(two_file_pie_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f two_file_pie_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(two_file_pie_test_OBJECTS) $(two_file_pie_test_LDADD) $(LIBS) +two_file_relocatable_test$(EXEEXT): $(two_file_relocatable_test_OBJECTS) $(two_file_relocatable_test_DEPENDENCIES) + @rm -f two_file_relocatable_test$(EXEEXT) + $(two_file_relocatable_test_LINK) $(two_file_relocatable_test_OBJECTS) $(two_file_relocatable_test_LDADD) $(LIBS) +two_file_same_shared_nonpic_test$(EXEEXT): $(two_file_same_shared_nonpic_test_OBJECTS) $(two_file_same_shared_nonpic_test_DEPENDENCIES) + @rm -f two_file_same_shared_nonpic_test$(EXEEXT) + $(two_file_same_shared_nonpic_test_LINK) $(two_file_same_shared_nonpic_test_OBJECTS) $(two_file_same_shared_nonpic_test_LDADD) $(LIBS) +two_file_same_shared_strip_test$(EXEEXT): $(two_file_same_shared_strip_test_OBJECTS) $(two_file_same_shared_strip_test_DEPENDENCIES) + @rm -f two_file_same_shared_strip_test$(EXEEXT) + $(two_file_same_shared_strip_test_LINK) $(two_file_same_shared_strip_test_OBJECTS) $(two_file_same_shared_strip_test_LDADD) $(LIBS) +two_file_same_shared_test$(EXEEXT): $(two_file_same_shared_test_OBJECTS) $(two_file_same_shared_test_DEPENDENCIES) + @rm -f two_file_same_shared_test$(EXEEXT) + $(two_file_same_shared_test_LINK) $(two_file_same_shared_test_OBJECTS) $(two_file_same_shared_test_LDADD) $(LIBS) +two_file_separate_shared_12_nonpic_test$(EXEEXT): $(two_file_separate_shared_12_nonpic_test_OBJECTS) $(two_file_separate_shared_12_nonpic_test_DEPENDENCIES) + @rm -f two_file_separate_shared_12_nonpic_test$(EXEEXT) + $(two_file_separate_shared_12_nonpic_test_LINK) $(two_file_separate_shared_12_nonpic_test_OBJECTS) $(two_file_separate_shared_12_nonpic_test_LDADD) $(LIBS) +two_file_separate_shared_12_test$(EXEEXT): $(two_file_separate_shared_12_test_OBJECTS) $(two_file_separate_shared_12_test_DEPENDENCIES) + @rm -f two_file_separate_shared_12_test$(EXEEXT) + $(two_file_separate_shared_12_test_LINK) $(two_file_separate_shared_12_test_OBJECTS) $(two_file_separate_shared_12_test_LDADD) $(LIBS) +two_file_separate_shared_21_nonpic_test$(EXEEXT): $(two_file_separate_shared_21_nonpic_test_OBJECTS) $(two_file_separate_shared_21_nonpic_test_DEPENDENCIES) + @rm -f two_file_separate_shared_21_nonpic_test$(EXEEXT) + $(two_file_separate_shared_21_nonpic_test_LINK) $(two_file_separate_shared_21_nonpic_test_OBJECTS) $(two_file_separate_shared_21_nonpic_test_LDADD) $(LIBS) +two_file_separate_shared_21_test$(EXEEXT): $(two_file_separate_shared_21_test_OBJECTS) $(two_file_separate_shared_21_test_DEPENDENCIES) + @rm -f two_file_separate_shared_21_test$(EXEEXT) + $(two_file_separate_shared_21_test_LINK) $(two_file_separate_shared_21_test_OBJECTS) $(two_file_separate_shared_21_test_LDADD) $(LIBS) +two_file_shared_1_nonpic_test$(EXEEXT): $(two_file_shared_1_nonpic_test_OBJECTS) $(two_file_shared_1_nonpic_test_DEPENDENCIES) + @rm -f two_file_shared_1_nonpic_test$(EXEEXT) + $(two_file_shared_1_nonpic_test_LINK) $(two_file_shared_1_nonpic_test_OBJECTS) $(two_file_shared_1_nonpic_test_LDADD) $(LIBS) +two_file_shared_1_pic_2_test$(EXEEXT): $(two_file_shared_1_pic_2_test_OBJECTS) $(two_file_shared_1_pic_2_test_DEPENDENCIES) + @rm -f two_file_shared_1_pic_2_test$(EXEEXT) + $(two_file_shared_1_pic_2_test_LINK) $(two_file_shared_1_pic_2_test_OBJECTS) $(two_file_shared_1_pic_2_test_LDADD) $(LIBS) +two_file_shared_1_test$(EXEEXT): $(two_file_shared_1_test_OBJECTS) $(two_file_shared_1_test_DEPENDENCIES) + @rm -f two_file_shared_1_test$(EXEEXT) + $(two_file_shared_1_test_LINK) $(two_file_shared_1_test_OBJECTS) $(two_file_shared_1_test_LDADD) $(LIBS) +two_file_shared_2_nonpic_test$(EXEEXT): $(two_file_shared_2_nonpic_test_OBJECTS) $(two_file_shared_2_nonpic_test_DEPENDENCIES) + @rm -f two_file_shared_2_nonpic_test$(EXEEXT) + $(two_file_shared_2_nonpic_test_LINK) $(two_file_shared_2_nonpic_test_OBJECTS) $(two_file_shared_2_nonpic_test_LDADD) $(LIBS) +two_file_shared_2_pic_1_test$(EXEEXT): $(two_file_shared_2_pic_1_test_OBJECTS) $(two_file_shared_2_pic_1_test_DEPENDENCIES) + @rm -f two_file_shared_2_pic_1_test$(EXEEXT) + $(two_file_shared_2_pic_1_test_LINK) $(two_file_shared_2_pic_1_test_OBJECTS) $(two_file_shared_2_pic_1_test_LDADD) $(LIBS) +two_file_shared_2_test$(EXEEXT): $(two_file_shared_2_test_OBJECTS) $(two_file_shared_2_test_DEPENDENCIES) + @rm -f two_file_shared_2_test$(EXEEXT) + $(two_file_shared_2_test_LINK) $(two_file_shared_2_test_OBJECTS) $(two_file_shared_2_test_LDADD) $(LIBS) +two_file_static_test$(EXEEXT): $(two_file_static_test_OBJECTS) $(two_file_static_test_DEPENDENCIES) + @rm -f two_file_static_test$(EXEEXT) + $(two_file_static_test_LINK) $(two_file_static_test_OBJECTS) $(two_file_static_test_LDADD) $(LIBS) +@GCC_FALSE@two_file_strip_test$(EXEEXT): $(two_file_strip_test_OBJECTS) $(two_file_strip_test_DEPENDENCIES) +@GCC_FALSE@ @rm -f two_file_strip_test$(EXEEXT) +@GCC_FALSE@ $(LINK) $(two_file_strip_test_OBJECTS) $(two_file_strip_test_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@two_file_strip_test$(EXEEXT): $(two_file_strip_test_OBJECTS) $(two_file_strip_test_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f two_file_strip_test$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(two_file_strip_test_OBJECTS) $(two_file_strip_test_LDADD) $(LIBS) +two_file_test$(EXEEXT): $(two_file_test_OBJECTS) $(two_file_test_DEPENDENCIES) + @rm -f two_file_test$(EXEEXT) + $(two_file_test_LINK) $(two_file_test_OBJECTS) $(two_file_test_LDADD) $(LIBS) +ver_test$(EXEEXT): $(ver_test_OBJECTS) $(ver_test_DEPENDENCIES) + @rm -f ver_test$(EXEEXT) + $(ver_test_LINK) $(ver_test_OBJECTS) $(ver_test_LDADD) $(LIBS) +ver_test_11$(EXEEXT): $(ver_test_11_OBJECTS) $(ver_test_11_DEPENDENCIES) + @rm -f ver_test_11$(EXEEXT) + $(ver_test_11_LINK) $(ver_test_11_OBJECTS) $(ver_test_11_LDADD) $(LIBS) +ver_test_2$(EXEEXT): $(ver_test_2_OBJECTS) $(ver_test_2_DEPENDENCIES) + @rm -f ver_test_2$(EXEEXT) + $(ver_test_2_LINK) $(ver_test_2_OBJECTS) $(ver_test_2_LDADD) $(LIBS) +ver_test_6$(EXEEXT): $(ver_test_6_OBJECTS) $(ver_test_6_DEPENDENCIES) + @rm -f ver_test_6$(EXEEXT) + $(ver_test_6_LINK) $(ver_test_6_OBJECTS) $(ver_test_6_LDADD) $(LIBS) +ver_test_8$(EXEEXT): $(ver_test_8_OBJECTS) $(ver_test_8_DEPENDENCIES) + @rm -f ver_test_8$(EXEEXT) + $(ver_test_8_LINK) $(ver_test_8_OBJECTS) $(ver_test_8_LDADD) $(LIBS) +ver_test_9$(EXEEXT): $(ver_test_9_OBJECTS) $(ver_test_9_DEPENDENCIES) + @rm -f ver_test_9$(EXEEXT) + $(ver_test_9_LINK) $(ver_test_9_OBJECTS) $(ver_test_9_LDADD) $(LIBS) +weak_alias_test$(EXEEXT): $(weak_alias_test_OBJECTS) $(weak_alias_test_DEPENDENCIES) + @rm -f weak_alias_test$(EXEEXT) + $(weak_alias_test_LINK) $(weak_alias_test_OBJECTS) $(weak_alias_test_LDADD) $(LIBS) +@GCC_FALSE@weak_plt$(EXEEXT): $(weak_plt_OBJECTS) $(weak_plt_DEPENDENCIES) +@GCC_FALSE@ @rm -f weak_plt$(EXEEXT) +@GCC_FALSE@ $(LINK) $(weak_plt_OBJECTS) $(weak_plt_LDADD) $(LIBS) +@NATIVE_LINKER_FALSE@weak_plt$(EXEEXT): $(weak_plt_OBJECTS) $(weak_plt_DEPENDENCIES) +@NATIVE_LINKER_FALSE@ @rm -f weak_plt$(EXEEXT) +@NATIVE_LINKER_FALSE@ $(LINK) $(weak_plt_OBJECTS) $(weak_plt_LDADD) $(LIBS) +weak_test$(EXEEXT): $(weak_test_OBJECTS) $(weak_test_DEPENDENCIES) + @rm -f weak_test$(EXEEXT) + $(weak_test_LINK) $(weak_test_OBJECTS) $(weak_test_LDADD) $(LIBS) +weak_undef_nonpic_test$(EXEEXT): $(weak_undef_nonpic_test_OBJECTS) $(weak_undef_nonpic_test_DEPENDENCIES) + @rm -f weak_undef_nonpic_test$(EXEEXT) + $(weak_undef_nonpic_test_LINK) $(weak_undef_nonpic_test_OBJECTS) $(weak_undef_nonpic_test_LDADD) $(LIBS) +weak_undef_test$(EXEEXT): $(weak_undef_test_OBJECTS) $(weak_undef_test_DEPENDENCIES) + @rm -f weak_undef_test$(EXEEXT) + $(weak_undef_test_LINK) $(weak_undef_test_OBJECTS) $(weak_undef_test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_pic_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_pie_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_static_pic_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_static_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/constructor_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/discard_locals_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception_test_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exclude_libs_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flagstest_compress_debug_sections.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flagstest_o_specialfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flagstest_o_specialfile_and_compress_debug_sections.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initpri1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/justsyms_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/large-large.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/local_labels_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/many_sections_r_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/many_sections_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/permission_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relro_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_2a.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_2b.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_test_3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/searched_file_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testmain.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thin_archive_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls_test_file2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_pie_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_strip_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_1b.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/two_file_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ver_test_6.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ver_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ver_test_main_2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weak_alias_test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weak_plt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weak_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/weak_undef_test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +large-large.o: large.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(large_CFLAGS) $(CFLAGS) -MT large-large.o -MD -MP -MF $(DEPDIR)/large-large.Tpo -c -o large-large.o `test -f 'large.c' || echo '$(srcdir)/'`large.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/large-large.Tpo $(DEPDIR)/large-large.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='large.c' object='large-large.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(large_CFLAGS) $(CFLAGS) -c -o large-large.o `test -f 'large.c' || echo '$(srcdir)/'`large.c + +large-large.obj: large.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(large_CFLAGS) $(CFLAGS) -MT large-large.obj -MD -MP -MF $(DEPDIR)/large-large.Tpo -c -o large-large.obj `if test -f 'large.c'; then $(CYGPATH_W) 'large.c'; else $(CYGPATH_W) '$(srcdir)/large.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/large-large.Tpo $(DEPDIR)/large-large.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='large.c' object='large-large.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(large_CFLAGS) $(CFLAGS) -c -o large-large.obj `if test -f 'large.c'; then $(CYGPATH_W) 'large.c'; else $(CYGPATH_W) '$(srcdir)/large.c'; fi` + +.cc.o: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cc.obj: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + col=$$red; res=XPASS; \ + ;; \ + *) \ + col=$$grn; res=PASS; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$tst[\ \ ]*) \ + xfail=`expr $$xfail + 1`; \ + col=$$lgn; res=XFAIL; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + col=$$red; res=FAIL; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + col=$$blu; res=SKIP; \ + fi; \ + echo "$${col}$$res$${std}: $$tst"; \ + done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="$$All$$all $$tests passed"; \ + else \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all $$tests failed"; \ + else \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + if test "$$failed" -eq 0; then \ + echo "$$grn$$dashes"; \ + else \ + echo "$$red$$dashes"; \ + fi; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes$$std"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile +installdirs: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkLIBRARIES clean-checkPROGRAMS clean-generic ctags \ + distclean distclean-compile distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags uninstall uninstall-am + + +# --------------------------------------------------------------------- +# These tests test the output of gold (end-to-end tests). In +# particular, they make sure that gold can link "difficult" object +# files, and the resulting object files run correctly. These can only +# run if we've built ld-new for the native architecture (that is, +# we're not cross-compiling it), since we run ld-new as part of these +# tests. We use the gcc-specific flag '-B' to use our linker instead +# of the default linker, which is why we only run our tests under gcc. + +# Infrastucture needed for the unittests: a directory where the linker +# is named 'ld'. This is because the -B flag appends 'ld' to its arg. +@GCC_TRUE@@NATIVE_LINKER_TRUE@gcctestdir/ld: ../ld-new +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d gcctestdir || mkdir -p gcctestdir +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ (cd gcctestdir && $(LN_S) ../../ld-new ld) + +# Each of these .o's is a useful, small complete program. They're +# particularly useful for making sure ld-new's flags do what they're +# supposed to (hence their names), but are used for many tests that +# don't actually involve analyzing input data. +@GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_debug.o: constructor_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_ndebug.o: constructor_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_comdat_test_1.o: gc_comdat_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_comdat_test_2.o: gc_comdat_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_comdat_test: gc_comdat_test_1.o gc_comdat_test_2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_comdat_test_1.o gc_comdat_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_comdat_test.stdout: gc_comdat_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -C gc_comdat_test > gc_comdat_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_tls_test.o: gc_tls_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_tls_test:gc_tls_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_tls_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@gc_tls_test.stdout: gc_tls_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -C gc_tls_test > gc_tls_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_test.o: icf_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_test: icf_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_test.stdout: icf_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -C icf_test > icf_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_keep_unique_test.o: icf_keep_unique_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_keep_unique_test: icf_keep_unique_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--icf=all -Wl,--keep-unique,_Z11unique_funcv icf_keep_unique_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_keep_unique_test.stdout: icf_keep_unique_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -C icf_keep_unique_test > icf_keep_unique_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_test.o: icf_safe_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_test: icf_safe_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--icf=safe icf_safe_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@icf_safe_test.stdout: icf_safe_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) icf_safe_test > icf_safe_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_test.o: basic_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_test: basic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_static_test: basic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -static basic_test.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_pic_test.o: basic_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_pic_test: basic_pic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_pic_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_static_pic_test: basic_pic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_pie_test.o: basic_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@basic_pie_test: basic_pie_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -pie basic_pie_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1_pic.o: two_file_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1b_pic.o: two_file_test_1b.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_2_pic.o: two_file_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2.so: two_file_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_relocatable.o: gcctestdir/ld two_file_test_1.o two_file_test_1b.o two_file_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -r -o $@ two_file_test_1.o two_file_test_1b.o two_file_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1_pie.o: two_file_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_1b_pie.o: two_file_test_1b.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_2_pie.o: two_file_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_test_main_pie.o: two_file_test_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpie -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_pie_test: two_file_test_1_pie.o two_file_test_1b_pie.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_2_pie.o two_file_test_main_pie.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -pie two_file_test_1_pie.o two_file_test_1b_pie.o two_file_test_2_pie.o two_file_test_main_pie.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared.dbg: two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -w $< >$@ 2>/dev/null +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_1_nonpic.so: two_file_test_1.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_2_nonpic.so: two_file_test_2.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_nonpic.so: two_file_test_1.o two_file_test_1b.o two_file_test_2.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o two_file_test_2.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_mixed.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_mixed_1.so: two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_strip_test: two_file_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_STRIP) -o two_file_strip_test two_file_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_strip.so: two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_STRIP) -S -o two_file_shared_strip.so two_file_shared.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_1_pic.o: exception_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_2_pic.o: exception_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1.so: exception_test_1_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2.so: exception_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared exception_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o exception_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_file1.o: weak_undef_file1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_file2.o: weak_undef_file2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_lib.so: weak_undef_file1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/weak_undef_lib.so: weak_undef_file2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_file1_nonpic.o: weak_undef_file1.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_file2_nonpic.o: weak_undef_file2.cc +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_undef_lib_nonpic.so: weak_undef_file1_nonpic.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1_nonpic.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/weak_undef_lib_nonpic.so: weak_undef_file2_nonpic.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2_nonpic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_1_pic.o: weak_alias_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_1.so: weak_alias_test_1_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_1_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_2_pic.o: weak_alias_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_2.so: weak_alias_test_2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_3.o: weak_alias_test_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_4_pic.o: weak_alias_test_4.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_alias_test_4.so: weak_alias_test_4_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_4_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_plt_main_pic.o: weak_plt_main.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_plt: weak_plt_main_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ weak_plt_main_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_plt_shared_pic.o: weak_plt_shared.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@weak_plt_shared.so: weak_plt_shared_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared weak_plt_shared_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_1_pic.o: copy_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_1.so: gcctestdir/ld copy_test_1_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared copy_test_1_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_2_pic.o: copy_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@copy_test_2.so: gcctestdir/ld copy_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared copy_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_pic.o: tls_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_file2_pic.o: tls_test_file2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_c_pic.o: tls_test_c.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_shared.so: tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o -Wl,-z,defs +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_shared2.so: tls_test_file2_pic.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_pic.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_pic_ie.o: tls_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_file2_pic_ie.o: tls_test_file2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_c_pic_ie.o: tls_test_c.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(COMPILE) -c -fpic -ftls-model=initial-exec $(TLS_TEST_C_CFLAGS) -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_ie_shared.so: tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_c.o: tls_test_c.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(COMPILE) -c $(TLS_TEST_C_CFLAGS) -o $@ $< + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_gnu2.o: tls_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_file2_gnu2.o: tls_test_file2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_c_gnu2.o: tls_test_c.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(COMPILE) -c -fpic -mtls-dialect=gnu2 $(TLS_TEST_C_CFLAGS) -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_gnu2_shared2.so: tls_test_file2_gnu2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_gnu2.o + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@tls_test_gnu2_shared.so: tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_DESCRIPTORS_TRUE@@TLS_GNU2_DIALECT_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_test_shared_nonpic.so: tls_test.o tls_test_file2.o tls_test_c.o gcctestdir/ld +@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared tls_test.o tls_test_file2.o tls_test_c.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_define.h: +@GCC_TRUE@@NATIVE_LINKER_TRUE@ (for i in `seq 1 70000`; do \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo "int var_$$i __attribute__((section(\"section_$$i\"))) = $$i;"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ done) > $@.tmp +@GCC_TRUE@@NATIVE_LINKER_TRUE@ mv -f $@.tmp $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_check.h: +@GCC_TRUE@@NATIVE_LINKER_TRUE@ (for i in `seq 1 1000 70000`; do \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo "assert(var_$$i == $$i);"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ done) > $@.tmp +@GCC_TRUE@@NATIVE_LINKER_TRUE@ mv -f $@.tmp $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_r_test.o: many_sections_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -r -o $@ many_sections_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_r_test: many_sections_r_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ many_sections_r_test.o $(LIBS) +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg.o: debug_msg.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/debug_msg.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation1.o: odr_violation1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation2.o: odr_violation2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o 2>$@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of debug_msg should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg.so: debug_msg.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation1.so: odr_violation1.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation2.so: odr_violation2.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg_so.err: debug_msg.so odr_violation1.so odr_violation2.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so 2>$@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of debug_msg_so should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg_ndebug.so: debug_msg.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation1_ndebug.so: odr_violation1.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@odr_violation2_ndebug.so: odr_violation2.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@debug_msg_ndebug.err: debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so 2>$@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of debug_msg_ndebug should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@undef_symbol.o: undef_symbol.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -g -c -fPIC $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@undef_symbol.so: undef_symbol.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared undef_symbol.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@undef_symbol.err: undef_symbol_main.o undef_symbol.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @echo $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so "2>$@" +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @if $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so 2>$@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ then \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 1>&2 "Link of undef_symbol_test should have failed"; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ exit 1; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ fi +@GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_o_specialfile: flagstest_debug.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< 2>&1 | cat > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ chmod a+x $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -s $@ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@flagstest_compress_debug_sections: flagstest_debug.o gcctestdir/ld +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ test -s $@ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@flagstest_o_specialfile_and_compress_debug_sections: flagstest_debug.o \ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< -Wl,--compress-debug-sections=zlib 2>&1 | cat > $@ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ chmod a+x $@ +@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ test -s $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_2.script ver_test_2.o ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_1.o: ver_test_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2.o: ver_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_3.o: ver_test_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_4.o: ver_test_4.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_1.syms: ver_test_1.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_2.syms: ver_test_2 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_4.syms: ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null + +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_5.so: ver_test_5.o $(srcdir)/ver_test_5.script ver_test_4.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_5.script ver_test_5.o ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_5.o: ver_test_5.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_5.syms: ver_test_5.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null + +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_7.so: ver_test_4.o $(srcdir)/ver_test_4.script ver_test_7.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o ver_test_7.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_7.o: ver_test_7.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_7.syms: ver_test_7.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_8_2.so: two_file_test_2_pic.o $(srcdir)/ver_test_8.script gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_8.script two_file_test_2_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9.so: ver_test_9.o ver_test_4.so ver_test_5.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared ver_test_9.o ver_test_5.so ver_test_4.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_9.o: ver_test_9.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_10.syms: ver_test_10.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_10.so: gcctestdir/ld ver_test_2.o ver_test_10.script +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_10.script ver_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_11.a: ver_test_1.o ver_test_2.o ver_test_4.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ + +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1.so: gcctestdir/ld protected_1_pic.o protected_2_pic.o protected_3_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared protected_1_pic.o protected_2_pic.o protected_3_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_1_pic.o: protected_1.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_2_pic.o: protected_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@protected_3_pic.o: protected_3.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test.so: gcctestdir/ld relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_test_pic.o: relro_test.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@relro_script_test.so: gcctestdir/ld relro_script_test.t relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -T $(srcdir)/relro_script_test.t relro_test_pic.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_2.o: justsyms_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_2r.o: justsyms_2.o gcctestdir/ld $(srcdir)/justsyms.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -o $@ -r -T $(srcdir)/justsyms.t justsyms_2.o +# Copy the file to the build directory to avoid worrying about the +# full pathname in the generated symbols. +@GCC_TRUE@@NATIVE_LINKER_TRUE@binary.txt: $(srcdir)/binary.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LN_S) $< $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_matching_def.so: ver_matching_def.cc gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -O0 -Bgcctestdir/ -shared $(srcdir)/ver_matching_def.cc -Wl,--version-script=$(srcdir)/version_script.map +@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_matching_test.stdout: ver_matching_def.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_OBJDUMP) -T ver_matching_def.so | $(TEST_CXXFILT) > ver_matching_test.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_3: basic_test.o gcctestdir/ld script_test_3.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o -T $(srcdir)/script_test_3.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_3.stdout: script_test_3 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SlW script_test_3 > script_test_3.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_4: basic_test.o gcctestdir/ld $(srcdir)/script_test_4.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o -T $(srcdir)/script_test_4.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_4.stdout: script_test_4 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SlW script_test_4 > script_test_4.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_5: script_test_5.o gcctestdir/ld $(srcdir)/script_test_5.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ script_test_5.o -T $(srcdir)/script_test_5.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@script_test_5.stdout: script_test_5 +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SW script_test_5 > script_test_5.stdout +@GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list: basic_test.o gcctestdir/ld $(srcdir)/dynamic_list.t +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--dynamic-list $(srcdir)/dynamic_list.t \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--dynamic-list-data \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--dynamic-list-cpp-new \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ -Wl,--dynamic-list-cpp-typeinfo +@GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list.stdout: dynamic_list +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -DWs dynamic_list > dynamic_list.stdout + +@GCC_TRUE@@NATIVE_LINKER_TRUE@libthin1.a: thin_archive_test_1.o alt/thin_archive_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/libthin2.a: thin_archive_test_3.o alt/thin_archive_test_4.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@libthin3.a: thin_archive_test_1.o alt/thin_archive_test_4.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/libthin4.a: alt/thin_archive_test_2.o thin_archive_test_3.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@libthinall.a: libthin3.a alt/libthin4.a +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) crT $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/thin_archive_test_2.o: thin_archive_test_2.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/thin_archive_test_4.o: thin_archive_test_4.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_1: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_1.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_1.err: plugin_test_1 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_1.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_2: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,-R,.,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so 2>plugin_test_2.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_2.err: plugin_test_2 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_2.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_3: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--export-dynamic -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_3.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_3.err: plugin_test_3 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_3.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_4: two_file_test_main.o plugin_test_4.a gcctestdir/ld plugin_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o -Wl,--whole-archive,plugin_test_4.a,--no-whole-archive 2>plugin_test_4.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_4.err: plugin_test_4 +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_4.err + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_4.a: two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_AR) cr $@ $^ + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test.so: plugin_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -shared plugin_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test.o: plugin_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -fpic -o $@ $< + +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_main.syms: two_file_test_main.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_1.syms: two_file_test_1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_1b.syms: two_file_test_1b.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@two_file_test_2.syms: two_file_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@empty.syms: +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @echo "" >empty.syms +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @echo "Symbol table" >>empty.syms +@GCC_TRUE@@NATIVE_LINKER_TRUE@exclude_libs_test.syms: exclude_libs_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +@GCC_TRUE@@NATIVE_LINKER_TRUE@libexclude_libs_test_1.a: exclude_libs_test_1.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@libexclude_libs_test_2.a: exclude_libs_test_2.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/libexclude_libs_test_3.a: exclude_libs_test_3.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +@GCC_TRUE@@NATIVE_LINKER_TRUE@local_labels_test.o: ver_test_6.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -g -c -Wa,-L -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@local_labels_test: local_labels_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ local_labels_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_test.syms: discard_locals_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null +# '-Wa,-L' is required to preserve the local label used for testing. +@GCC_TRUE@@NATIVE_LINKER_TRUE@discard_locals_test.o: discard_locals_test.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -Wa,-L -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@libhidden.so: hidden_test_1.c gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -Bgcctestdir/ -g -shared -fPIC -w -o $@ $(srcdir)/hidden_test_1.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@hidden_test: hidden_test_main.o libhidden.so gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -Wl,-R,. hidden_test_main.o libhidden.so 2>hidden_test.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@hidden_test.err: hidden_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@ @touch hidden_test.err +@GCC_TRUE@@NATIVE_LINKER_TRUE@retain_symbols_file_test.so: basic_pic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 'main' > retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo 't1' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo '_ZN4t16bC1Ev' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo '_ZNK4t20a3getEv' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo '_Z3t18v' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ echo '__tcf_0' >> retain_symbols_file_test.in +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-retain-symbols-file,retain_symbols_file_test.in basic_pic_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@retain_symbols_file_test.stdout: retain_symbols_file_test.so +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_NM) -C retain_symbols_file_test.so > $@ +@GCC_TRUE@@NATIVE_LINKER_TRUE@permission_test: basic_test.o gcctestdir/ld +@GCC_TRUE@@NATIVE_LINKER_TRUE@ umask 022; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ rm -f $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ touch $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ chmod 600 $@; \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ basic_test.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@searched_file_test_lib.o: searched_file_test_lib.cc +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@alt/searched_file_test_lib.a: searched_file_test_lib.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@ test -d alt || mkdir -p alt +@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_AR) rc $@ $^ +@DEFAULT_TARGET_I386_TRUE@split_i386_1.o: split_i386_1.s +@DEFAULT_TARGET_I386_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@split_i386_2.o: split_i386_2.s +@DEFAULT_TARGET_I386_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@split_i386_3.o: split_i386_3.s +@DEFAULT_TARGET_I386_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@split_i386_4.o: split_i386_4.s +@DEFAULT_TARGET_I386_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@split_i386_n.o: split_i386_n.s +@DEFAULT_TARGET_I386_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_I386_TRUE@split_i386_1: split_i386_1.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_1.o split_i386_n.o +@DEFAULT_TARGET_I386_TRUE@split_i386_1.stdout: split_i386_1 +@DEFAULT_TARGET_I386_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_I386_TRUE@split_i386_2: split_i386_2.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_2.o split_i386_n.o +@DEFAULT_TARGET_I386_TRUE@split_i386_2.stdout: split_i386_2 +@DEFAULT_TARGET_I386_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_I386_TRUE@split_i386_3.stdout: split_i386_3.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o split_i386_3 split_i386_3.o split_i386_n.o > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_I386_TRUE@split_i386_4: split_i386_4.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_4.o split_i386_n.o +@DEFAULT_TARGET_I386_TRUE@split_i386_4.stdout: split_i386_4 +@DEFAULT_TARGET_I386_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_I386_TRUE@split_i386_r.stdout: split_i386_1.o split_i386_n.o ../ld-new +@DEFAULT_TARGET_I386_TRUE@ ../ld-new -r split_i386_1.o split_i386_n.o -o split_i386_r > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_1.o: split_x86_64_1.s +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_2.o: split_x86_64_2.s +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_3.o: split_x86_64_3.s +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_4.o: split_x86_64_4.s +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_n.o: split_x86_64_n.s +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_AS) -o $@ $< +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_1: split_x86_64_1.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_1.o split_x86_64_n.o +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_1.stdout: split_x86_64_1 +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_2: split_x86_64_2.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_2.o split_x86_64_n.o +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_2.stdout: split_x86_64_2 +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_3.stdout: split_x86_64_3.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o split_x86_64_3 split_x86_64_3.o split_x86_64_n.o > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_4: split_x86_64_4.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_4.o split_x86_64_n.o +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_4.stdout: split_x86_64_4 +@DEFAULT_TARGET_X86_64_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_X86_64_TRUE@split_x86_64_r.stdout: split_x86_64_1.o split_x86_64_n.o ../ld-new +@DEFAULT_TARGET_X86_64_TRUE@ ../ld-new -r split_x86_64_1.o split_x86_64_n.o -o split_x86_64_r > $@ 2>&1 || exit 0 + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: Index: gc_comdat_test_1.cc =================================================================== --- gc_comdat_test_1.cc (nonexistent) +++ gc_comdat_test_1.cc (revision 818) @@ -0,0 +1,42 @@ +// gc_comdat_test_1.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// 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. + +// The goal of this program is to verify if comdat's and garbage +// collection work together. This file is compiled with -g. The +// comdat kept function for GetMax is garbage. + +int foo(); +template +T GetMax (T a, T b) +{ + return (a > b)?a:b; +} + +int bar () +{ + return GetMax (4,5); +} + +int main() +{ + return 0; +} Index: ver_test_2.sh =================================================================== --- ver_test_2.sh (nonexistent) +++ ver_test_2.sh (revision 818) @@ -0,0 +1,45 @@ +#!/bin/sh + +# ver_test_2.sh -- test that symbol has correct version + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with ver_matching_def.cc, a C++ source file +# constructed with several symbols mapped via version_script.map. We +# run readelf on the resulting shared object and check that each +# symbol has the correct version. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_2.syms "t1_2@VER2" + +exit 0
ver_test_2.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: plugin_test_1.sh =================================================================== --- plugin_test_1.sh (nonexistent) +++ plugin_test_1.sh (revision 818) @@ -0,0 +1,59 @@ +#!/bin/sh + +# plugin_test_1.sh -- a test case for the plugin API. + +# Copyright 2008, 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# 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 file goes with plugin_test_1.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_1.err "API version:" +check plugin_test_1.err "gold version:" +check plugin_test_1.err "option: _Z4f13iv" +check plugin_test_1.err "two_file_test_main.o: claim file hook called" +check plugin_test_1.err "two_file_test_1.syms: claim file hook called" +check plugin_test_1.err "two_file_test_1b.syms: claim file hook called" +check plugin_test_1.err "two_file_test_2.syms: claim file hook called" +check plugin_test_1.err "two_file_test_1.syms: _Z4f13iv: PREVAILING_DEF_IRONLY" +check plugin_test_1.err "two_file_test_1.syms: _Z2t2v: PREVAILING_DEF_REG" +check plugin_test_1.err "two_file_test_1.syms: v2: RESOLVED_IR" +check plugin_test_1.err "two_file_test_1.syms: t17data: RESOLVED_IR" +check plugin_test_1.err "two_file_test_2.syms: _Z4f13iv: PREEMPTED_IR" +check plugin_test_1.err "two_file_test_1.o: adding new input file" +check plugin_test_1.err "two_file_test_1b.o: adding new input file" +check plugin_test_1.err "two_file_test_2.o: adding new input file" +check plugin_test_1.err "cleanup hook called" + +exit 0
plugin_test_1.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: binary.in =================================================================== --- binary.in (nonexistent) +++ binary.in (revision 818) @@ -0,0 +1 @@ +This file is used for the binary test. Index: tls_test_main.cc =================================================================== --- tls_test_main.cc (nonexistent) +++ tls_test_main.cc (revision 818) @@ -0,0 +1,175 @@ +// tls_test.cc -- test TLS variables for gold, main function + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 the main function for the TLS test. See tls_test.cc for +// more information. + +#include +#include +#include + +#include "tls_test.h" + +// We make these macros so the assert() will give useful line-numbers. +#define safe_lock(muptr) \ + do \ + { \ + int err = pthread_mutex_lock(muptr); \ + assert(err == 0); \ + } \ + while (0) + +#define safe_unlock(muptr) \ + do \ + { \ + int err = pthread_mutex_unlock(muptr); \ + assert(err == 0); \ + } \ + while (0) + +struct Mutex_set +{ + pthread_mutex_t mutex1; + pthread_mutex_t mutex2; + pthread_mutex_t mutex3; +}; + +Mutex_set mutexes1 = { PTHREAD_MUTEX_INITIALIZER, + PTHREAD_MUTEX_INITIALIZER, + PTHREAD_MUTEX_INITIALIZER }; + +Mutex_set mutexes2 = { PTHREAD_MUTEX_INITIALIZER, + PTHREAD_MUTEX_INITIALIZER, + PTHREAD_MUTEX_INITIALIZER } ; + +bool failed = false; + +void +check(const char* name, bool val) +{ + if (!val) + { + fprintf(stderr, "Test %s failed\n", name); + failed = true; + } +} + +// The body of the thread function. This gets a lock on the first +// mutex, runs the tests, and then unlocks the second mutex. Then it +// locks the third mutex, and the runs the verification test again. + +void* +thread_routine(void* arg) +{ + Mutex_set* pms = static_cast(arg); + + // Lock the first mutex. + if (pms) + safe_lock(&pms->mutex1); + + // Run the tests. + check("t1", t1()); + check("t2", t2()); + check("t3", t3()); + check("t4", t4()); + f5b(f5a()); + check("t5", t5()); + f6b(f6a()); + check("t6", t6()); + check("t8", t8()); + check("t9", t9()); + f10b(f10a()); + check("t10", t10()); + check("t11", t11() != 0); + check("t12", t12()); + check("t_last", t_last()); + + // Unlock the second mutex. + if (pms) + safe_unlock(&pms->mutex2); + + // Lock the third mutex. + if (pms) + safe_lock(&pms->mutex3); + + check("t_last", t_last()); + + return 0; +} + +// The main function. + +int +main() +{ + // First, as a sanity check, run through the tests in the "main" thread. + thread_routine(0); + + // Set up the mutex locks. We want the first thread to start right + // away, tell us when it is done with the first part, and wait for + // us to release it. We want the second thread to wait to start, + // tell us when it is done with the first part, and wait for us to + // release it. + safe_lock(&mutexes1.mutex2); + safe_lock(&mutexes1.mutex3); + + safe_lock(&mutexes2.mutex1); + safe_lock(&mutexes2.mutex2); + safe_lock(&mutexes2.mutex3); + + pthread_t thread1; + int err = pthread_create(&thread1, NULL, thread_routine, &mutexes1); + assert(err == 0); + + pthread_t thread2; + err = pthread_create(&thread2, NULL, thread_routine, &mutexes2); + assert(err == 0); + + // Wait for the first thread to complete the first part. + safe_lock(&mutexes1.mutex2); + + // Tell the second thread to start. + safe_unlock(&mutexes2.mutex1); + + // Wait for the second thread to complete the first part. + safe_lock(&mutexes2.mutex2); + + // Tell the first thread to continue and finish. + safe_unlock(&mutexes1.mutex3); + + // Wait for the first thread to finish. + void* thread_val; + err = pthread_join(thread1, &thread_val); + assert(err == 0); + assert(thread_val == 0); + + // Tell the second thread to continue and finish. + safe_unlock(&mutexes2.mutex3); + + // Wait for the second thread to finish. + err = pthread_join(thread2, &thread_val); + assert(err == 0); + assert(thread_val == 0); + + // All done. + return failed ? 1 : 0; +} Index: hidden_test_1.c =================================================================== --- hidden_test_1.c (nonexistent) +++ hidden_test_1.c (revision 818) @@ -0,0 +1,41 @@ +/* hidden_test_1.c -- test hidden and internal symbols + + Copyright 2009 Free Software Foundation, Inc. + Written by Cary Coutant + + 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 symbols of various visibilities in the main program + and attempts to reference those symbols from a shared library. + The linker should issue an error message for references to hidden + and internal symbols. */ + +extern void main_default (void); +extern void main_hidden (void); +extern void main_internal (void); +extern void main_protected (void); + +int +lib1 (void) +{ + main_default (); + main_hidden (); + main_internal (); + main_protected (); + return 0; +} Index: weak_plt_main.cc =================================================================== --- weak_plt_main.cc (nonexistent) +++ weak_plt_main.cc (revision 818) @@ -0,0 +1,33 @@ +// weak_plt_main.cc -- test call to weak undefined function for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include + +extern int weak_function() __attribute__((weak)); + +int +main() +{ + if (weak_function) + return weak_function(); + return 0; +} Index: ver_test_10.script =================================================================== --- ver_test_10.script (nonexistent) +++ ver_test_10.script (revision 818) @@ -0,0 +1,30 @@ +## ver_test_10.script -- a test case for gold + +## Copyright 2008 Free Software Foundation, Inc. +## Written by Ian Lance Taylor . + +## 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. + +# Test having a version script with no version. + +{ + global: + t3_2; + local: + *; +}; Index: undef_symbol.sh =================================================================== --- undef_symbol.sh (nonexistent) +++ undef_symbol.sh (revision 818) @@ -0,0 +1,45 @@ +#!/bin/sh + +# undef_symbol.sh -- a test case for undefined symbols in shared libraries + +# Copyright 2007, 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with debug_msg.cc, a C++ source file constructed to +# have undefined references. We compile that file with debug +# information and then try to link it, and make sure the proper errors +# are displayed. The errors will be found in debug_msg.err. + +check() +{ + if ! grep -q "$1" undef_symbol.err + then + echo "Did not find expected error:" + echo " $1" + echo "" + echo "Actual error output below:" + cat undef_symbol.err + exit 1 + fi +} + +check "undef_symbol.so: error: undefined reference to 'a'" + +exit 0
undef_symbol.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: protected_main_1.cc =================================================================== --- protected_main_1.cc (nonexistent) +++ protected_main_1.cc (revision 818) @@ -0,0 +1,36 @@ +// protected_main_1.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include + +// This function in the shared library will call the protected version +// of f1 in the shared library. + +extern bool t1(); +extern bool t2(); + +int +main() +{ + assert(t1()); + assert(t2()); +} Index: exclude_libs_test_1.c =================================================================== --- exclude_libs_test_1.c (nonexistent) +++ exclude_libs_test_1.c (revision 818) @@ -0,0 +1,24 @@ +void lib1_default (void); +void lib1_hidden (void); +void lib1_internal (void); +void lib1_protected (void); + +void __attribute__((visibility ("default"))) +lib1_default (void) +{ +} + +void __attribute__((visibility ("hidden"))) +lib1_hidden (void) +{ +} + +void __attribute__((visibility ("internal"))) +lib1_internal (void) +{ +} + +void __attribute__((visibility ("protected"))) +lib1_protected (void) +{ +} Index: ver_test_5.cc =================================================================== --- ver_test_5.cc (nonexistent) +++ ver_test_5.cc (revision 818) @@ -0,0 +1,29 @@ +// ver_test_5.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor + +// 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. + +#include "ver_test.h" + +int +t3_2() +{ + return t2_2(); +} Index: weak_alias_test_4.cc =================================================================== --- weak_alias_test_4.cc (nonexistent) +++ weak_alias_test_4.cc (revision 818) @@ -0,0 +1,68 @@ +// weak_alias_test_4.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// Verify that all the symbols look right from a shared library. + +extern int weak_symbol; +extern int strong_aliased; +extern int weak_aliased; +extern int strong_aliased_2; +extern int weak_aliased_2; +extern int strong_aliased_3; +extern int weak_aliased_3; +extern int strong_aliased_4; +extern int weak_aliased_4; +extern int strong_symbol; + +bool +t1() +{ + // Should come from weak_alias_test_3.cc. + if (weak_symbol != 4) + return false; + + // Should come from weak_alias_test_main.cc. + if (strong_aliased != 3) + return false; + + // weak_aliased need not match strong_aliased, which is overridden + // by weak_test_main.cc. + + // Should come from weak_alias_test_main.cc. + if (weak_aliased_2 != 6) + return false; + + // strong_aliased_2 need not match weak_aliased_2, which is + // overidden by weak_test_main.cc. + + // The others should match. + if (weak_aliased_3 != 7 || strong_aliased_3 != 7) + return false; + if (weak_aliased_4 != 8 || strong_aliased_4 != 8) + return false; + + // Should come from weak_alias_test_2.cc. + if (strong_symbol != 2) + return false; + + return true; +} Index: thin_archive_test_1.cc =================================================================== --- thin_archive_test_1.cc (nonexistent) +++ thin_archive_test_1.cc (revision 818) @@ -0,0 +1,37 @@ +// thin_archive_test_1.cc -- part of a test case for thin archives + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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 and archives. This is file 1 of 4. +// Each of the first three files contains a reference to the next. +// We test the archives as follows: + +// Files 1 and 2 in libthin1.a, files 3 and 4 in libthin2.a. +// Files 1 and 4 in libthin3.a, files 2 and 3 in libthin4.a, with +// libthin3.a and libthin4.a nested inside libthinall.a. + +extern int t2(); + +int +t1() +{ + return (t2() << 4) | 1; +} Index: script_test_1.cc =================================================================== --- script_test_1.cc (nonexistent) +++ script_test_1.cc (revision 818) @@ -0,0 +1,47 @@ +// script_test_1.cc -- linker script test 1 for gold -*- C++ -*- + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// A test for a linker script which sets symbols to values. + +#include +#include +#include + +extern char a, b, c, d, e, f, g; +int sym = 3; +int common_sym; + +int +main(int, char**) +{ + assert(reinterpret_cast(&a) == 123); + assert(reinterpret_cast(&b) == reinterpret_cast(&a) * 2); + assert(reinterpret_cast(&c) + == reinterpret_cast(&b) + 3 * 6); + assert(reinterpret_cast(&d) + == (reinterpret_cast(&b) + 3) * 6); + assert(reinterpret_cast(&e) == &sym); + assert(reinterpret_cast(&f) + == reinterpret_cast(&sym) + 10); + assert(reinterpret_cast(&g) == &common_sym); + return 0; +} Index: relro_test_main.cc =================================================================== --- relro_test_main.cc (nonexistent) +++ relro_test_main.cc (revision 818) @@ -0,0 +1,33 @@ +// relro_test_main.cc -- test -z relro for gold, main function + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include + +extern bool t1(); +extern bool t2(); + +int +main() +{ + assert(t1()); + assert(t2()); +} Index: two_file_test_1.cc =================================================================== --- two_file_test_1.cc (nonexistent) +++ two_file_test_1.cc (revision 818) @@ -0,0 +1,238 @@ +// two_file_test_1.cc -- a two file test case for gold, file 1 of 2 + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. +// 14 Compare string constants in file 1 and file 2. +// 15 Compare wide string constants in file 1 and file 2. +// 16 Call a function directly after its address has been taken. +// 17 File 1 checks array of string constants defined in file 2. +// 18 File 1 checks string constants referenced in code in file 2. + +#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(); +} + +// 14 Compare string constants in file 1 and file 2. + +bool +t14() +{ + const char* s1 = TEST_STRING_CONSTANT; + const char* s2 = f14(); + while (*s1 != '\0') + if (*s1++ != *s2++) + return false; + return *s2 == '\0'; +} + +// 15 Compare wide string constants in file 1 and file 2. + +bool +t15() +{ + const wchar_t* s1 = TEST_WIDE_STRING_CONSTANT; + const wchar_t* s2 = f15(); + while (*s1 != '\0') + if (*s1++ != *s2++) + return false; + return *s2 == '\0'; +} + +// 16 Call a function directly after its address has been taken. + +bool +t16() +{ + return f10() == 135; +} + +// 17 File 1 checks array of string constants defined in file 2. + +bool +t17() +{ + char c = 'a'; + for (int i = 0; i < T17_COUNT; ++i) + { + if (t17data[i][0] != c || t17data[i][1] != '\0') + return false; + ++c; + } + return true; +} + +// 18 File 1 checks string constants referenced in code in file 2. + +bool +t18() +{ + char c = 'a'; + for (int i = 0; i < T17_COUNT; ++i) + { + const char* s = f18(i); + if (s[0] != c || s[1] != '\0') + return false; + ++c; + } + return true; +} Index: icf_keep_unique_test.cc =================================================================== --- icf_keep_unique_test.cc (nonexistent) +++ icf_keep_unique_test.cc (revision 818) @@ -0,0 +1,39 @@ +// icf_keep_unique_test.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// 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. + +// The goal of this program is to verify if --keep-unique works +// as intended when used with --icf. + +int kept_func() +{ + return 0; +} + +int unique_func() +{ + return 0; +} + +int main() +{ + return 1; +} Index: discard_locals_test.sh =================================================================== --- discard_locals_test.sh (nonexistent) +++ discard_locals_test.sh (revision 818) @@ -0,0 +1,44 @@ +#!/bin/sh + +# discard_locals_test.sh -- test that local symbols are discarded. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Doug Kwan + +# 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 file goes with exclude_libs_test.c, a C source file +# linked with option -Wl,--exclude-libs. We run readelf on +# the resulting executable and check that symbols from two test library +# archives are correctly hidden or left unmodified. + +check() +{ + file=$1 + + found=`egrep "should_be_discarded" $file` + if test -n "$found"; then + echo "These local symbols are not discarded in $file:" + echo "$found" + exit 1 + fi +} + +check "discard_locals_test.syms" + +exit 0
discard_locals_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: ver_test.h =================================================================== --- ver_test.h (nonexistent) +++ ver_test.h (revision 818) @@ -0,0 +1,43 @@ +// ver_test.h -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +#ifdef USE_TRACE +#include +#define TRACE printf("In %s, %s()\n", __FILE__, __FUNCTION__); +#else +#define TRACE +#endif + +extern bool t1(); +extern bool t2(); +extern bool t3(); +extern bool t4(); + +extern "C" { + +extern int t1_2(); +extern int t2_2(); +extern int t3_2(); +extern int t4_2(); +extern int t4_2a(); + +} Index: exclude_libs_test.c =================================================================== --- exclude_libs_test.c (nonexistent) +++ exclude_libs_test.c (revision 818) @@ -0,0 +1,14 @@ +extern void lib1_default (void); +extern void lib2_default (void); +extern void lib3_default (void); + +int +main (int argc __attribute__ ((unused)), + char** argv __attribute__ ((unused))) +{ + lib1_default (); + lib2_default (); + lib3_default (); + return 0; +} + Index: script_test_1.t =================================================================== --- script_test_1.t (nonexistent) +++ script_test_1.t (revision 818) @@ -0,0 +1,29 @@ +/* script_test_1.t -- linker script test 1 for gold + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + 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. */ + +a = 123; +b = a * 2; +c = b + 3 * 6; +d = (b + 3) * 6; +e = sym; +f = sym + 10; +g = common_sym; Index: split_i386_1.s =================================================================== --- split_i386_1.s (nonexistent) +++ split_i386_1.s (revision 818) @@ -0,0 +1,33 @@ +# split_i386_1.s: i386 specific test case for -fsplit-stack. + + .text + + .global fn1 + .type fn1,@function +fn1: + cmp %gs:0x30,%esp + jae 1f + call __morestack + ret +1: + call fn2 + ret + + .size fn1,. - fn1 + + .global fn2 + .type fn2,@function +fn2: + lea -0x200(%esp),%ecx + cmp %gs:0x30,%ecx + jae 1f + call __morestack + ret +1: + call fn1 + ret + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits Index: split_x86_64_n.s =================================================================== --- split_x86_64_n.s (nonexistent) +++ split_x86_64_n.s (revision 818) @@ -0,0 +1,12 @@ +# split_x86_64_n.s: x86_64 specific, -fsplit-stack calling non-split + + .text + + .global fn3 + .type fn3,@function +fn3: + retq + + .size fn3,. - fn3 + + .section .note.GNU-stack,"",@progbits Index: ver_test_5.sh =================================================================== --- ver_test_5.sh (nonexistent) +++ ver_test_5.sh (revision 818) @@ -0,0 +1,44 @@ +#!/bin/sh + +# ver_test_5.sh -- test that symbol has correct version + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with ver_test_4.script and ver_test_5.script. The +# symbol t2_2 is not defined when ver_test_5.script is used. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_5.syms "t3_2@@VER5" +check ver_test_5.syms "t2_2@VER2" + +exit 0
ver_test_5.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: plugin_test_4.sh =================================================================== --- plugin_test_4.sh (nonexistent) +++ plugin_test_4.sh (revision 818) @@ -0,0 +1,58 @@ +#!/bin/sh + +# plugin_test_4.sh -- a test case for the plugin API. + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# 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 file goes with plugin_test_4.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_4.err "API version:" +check plugin_test_4.err "gold version:" +check plugin_test_4.err "option: _Z4f13iv" +check plugin_test_4.err "two_file_test_main.o: claim file hook called" +check plugin_test_4.err "plugin_test_4.a: claim file hook called" +check plugin_test_4.err "plugin_test_4.a: claiming file" +check plugin_test_4.err "plugin_test_4.a: _Z4f13iv: PREVAILING_DEF_IRONLY" +check plugin_test_4.err "plugin_test_4.a: _Z2t2v: PREVAILING_DEF_REG" +check plugin_test_4.err "plugin_test_4.a: v2: RESOLVED_IR" +check plugin_test_4.err "plugin_test_4.a: t17data: RESOLVED_IR" +check plugin_test_4.err "plugin_test_4.a: _Z4f13iv: PREEMPTED_IR" +check plugin_test_4.err "two_file_test_1.o: adding new input file" +check plugin_test_4.err "two_file_test_1b.o: adding new input file" +check plugin_test_4.err "two_file_test_2.o: adding new input file" +check plugin_test_4.err "cleanup hook called" + +exit 0
plugin_test_4.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: object_unittest.cc =================================================================== --- object_unittest.cc (nonexistent) +++ object_unittest.cc (revision 818) @@ -0,0 +1,100 @@ +// object_unittest.cc -- test Object, Relobj, etc. + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include "gold.h" + +#include "object.h" + +#include "test.h" +#include "testfile.h" + +namespace gold_testsuite +{ + +using namespace gold; + +// Test basic Object functionality. + +template +bool +Sized_object_test(const unsigned char* test_file, unsigned int test_file_size) +{ + parameters_clear_target(); + // We need a pretend Task. + const Task* task = reinterpret_cast(-1); + Input_file input_file(task, "test.o", test_file, test_file_size); + Object* object = make_elf_object("test.o", &input_file, 0, + test_file, test_file_size, NULL); + CHECK(object->name() == "test.o"); + CHECK(!object->is_dynamic()); + CHECK(object->is_locked()); + object->unlock(task); + CHECK(!object->is_locked()); + object->lock(task); + CHECK(object->shnum() == 5); + CHECK(object->section_name(0).empty()); + CHECK(object->section_name(1) == ".test"); + CHECK(object->section_flags(0) == 0); + CHECK(object->section_flags(1) == elfcpp::SHF_ALLOC); + object->unlock(task); + return true; +} + +bool +Object_test(Test_report*) +{ + int fail = 0; + +#ifdef HAVE_TARGET_32_LITTLE + if (!Sized_object_test<32, false>(test_file_1_32_little, + test_file_1_size_32_little)) + ++fail; + CHECK(¶meters->target() == target_test_pointer_32_little); +#endif + +#ifdef HAVE_TARGET_32_BIG + if (!Sized_object_test<32, true>(test_file_1_32_big, + test_file_1_size_32_big)) + ++fail; + CHECK(¶meters->target() == target_test_pointer_32_big); +#endif + +#ifdef HAVE_TARGET_64_LITTLE + if (!Sized_object_test<64, false>(test_file_1_64_little, + test_file_1_size_64_little)) + ++fail; + CHECK(¶meters->target() == target_test_pointer_64_little); +#endif + +#ifdef HAVE_TARGET_64_BIG + if (!Sized_object_test<64, true>(test_file_1_64_big, + test_file_1_size_64_big)) + ++fail; + CHECK(¶meters->target() == target_test_pointer_64_big); +#endif + + return fail == 0; +} + +Register_test object_register("Object", Object_test); + +} // End namespace gold_testsuite. Index: script_test_5.t =================================================================== --- script_test_5.t (nonexistent) +++ script_test_5.t (revision 818) @@ -0,0 +1,40 @@ +/* script_test_5.t -- linker script test 5 for gold + + Copyright 2009 Free Software Foundation, Inc. + Written by Cary Coutant . + + 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. */ + +/* We won't try to run this program, just ensure that it links + as expected. */ + +SECTIONS +{ + . = 0x10000000; + + /* With luck this will be enough to get the program working. */ + .interp : { *(.interp) } + .text : { *(.text) } + . += 0x100000; + . = ALIGN(0x100); + .dynamic : { *(.dynamic) } + .data : { *(.data) } + . += 0x100000; + . = ALIGN(0x100); + .bss : { *(.bss) } +} Index: split_x86_64_3.s =================================================================== --- split_x86_64_3.s (nonexistent) +++ split_x86_64_3.s (revision 818) @@ -0,0 +1,22 @@ +# split_x86_64_3.s: x86_64 specific, adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + push %rbp + mov %rsp,%rbp + cmp %fs:0x70,%rsp + jae 1f + callq __morestack + retq +1: + callq fn3 + leaveq + retq + + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits Index: two_file_test.h =================================================================== --- two_file_test.h (nonexistent) +++ two_file_test.h (revision 818) @@ -0,0 +1,78 @@ +// two_file_test.h -- a two file test case for gold, header file -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 the shared header +// file. See two_file_test_1.cc for details. + +extern bool t1(); +extern bool t1a(); +extern int t1_2(); + +extern bool t2(); +extern int v2; + +extern bool t3(); +extern int v3; + +extern bool t4(); +extern char v4[]; + +extern bool t5(); +extern char v5[]; + +extern bool t6(); + +extern bool t7(); + +extern bool t8(); + +extern bool t9(); + +extern bool t10(); +extern int f10(); + +extern bool t11(); +extern int f11a(); +extern int f11b(int (*)()); + +extern bool t12(); +extern bool (*f12())(); + +extern bool t13(); +inline void f13i() { } +extern void (*f13())(); + +#define TEST_STRING_CONSTANT "test string constant" +extern const char* f14(); + +#define TEST_WIDE_STRING_CONSTANT L"test wide string constant" +extern const wchar_t* f15(); + +extern bool t16(); +extern bool t16a(); + +extern bool t17(); +extern const char* t17data[]; +#define T17_COUNT 5 + +extern bool t18(); +extern const char* f18(int); Index: gc_tls_test.cc =================================================================== --- gc_tls_test.cc (nonexistent) +++ gc_tls_test.cc (revision 818) @@ -0,0 +1,32 @@ +// gc_tls_test.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// 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. + +// The goal of this program is to verify if tls sections are garbage +// collected with --gc-sections. + +__thread int number; + +int main() +{ + return 0; +} + Index: retain_symbols_file_test.sh =================================================================== --- retain_symbols_file_test.sh (nonexistent) +++ retain_symbols_file_test.sh (revision 818) @@ -0,0 +1,54 @@ +#!/bin/sh + +# retain_symbols_file_test.sh -- a test case for -retain-symbols-file + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Craig Silverstein . + +# 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. + +# The Makefile tries linking simple_test.o with -retain-symbols-file. +# It then runs nm over the results. We check that the output is right. + +check_present() +{ + if ! grep -q "$1" retain_symbols_file_test.stdout + then + echo "Did not find expected symbol $1 in retain_symbols_file_test.stdout" + exit 1 + fi +} + +check_absent() +{ + if grep -q "$1" retain_symbols_file_test.stdout + then + echo "Found unexpected symbol $1 in retain_symbols_file_test.stdout" + exit 1 + fi +} + +check_present 't1' +check_present 't16b::t16b()' +check_present 't20a::get()' +check_present 't18()' +check_absent 't10' +check_absent 't1()' +check_absent 't16b::t()' + +exit 0
retain_symbols_file_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: icf_keep_unique_test.sh =================================================================== --- icf_keep_unique_test.sh (nonexistent) +++ icf_keep_unique_test.sh (revision 818) @@ -0,0 +1,39 @@ +#!/bin/sh + +# icf_keep_unique_test.sh -- test --icf --keep-unique + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# 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. + +# The goal of this program is to verify if --keep-unique works +# as intended when used with --icf. + +check() +{ + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 = $func_addr_2 ] + then + echo "Identical Code Folding with keep-unique failed to unfold" $2 + exit 1 + fi +} + +check icf_keep_unique_test.stdout "kept_func" "unique_func"
icf_keep_unique_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: test.cc =================================================================== --- test.cc (nonexistent) +++ test.cc (revision 818) @@ -0,0 +1,107 @@ +// test.cc -- simplistic test framework for gold. + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include "gold.h" + +#include + +#include "test.h" + +namespace gold_testsuite +{ + +// Test_framework methods. + +// The current test being run. + +Test_report* Test_framework::current_report; + +// Run a test. + +void +Test_framework::run(const char *name, bool (*pfn)(Test_report*)) +{ + this->testname_ = name; + this->current_fail_ = false; + + Test_report tr(this); + Test_framework::current_report = &tr; + + if ((*pfn)(&tr) && !this->current_fail_) + { + printf("PASS: %s\n", name); + ++this->passes_; + } + else + { + printf("FAIL: %s\n", name); + ++this->failures_; + } + + Test_framework::current_report = NULL; + this->testname_ = NULL; +} + +// Report a failure. + +void +Test_framework::fail(const char* filename, int lineno) +{ + printf("FAIL: %s: %s: %d\n", this->testname_, filename, lineno); + this->current_fail_ = true; +} + +// Let a test report an error. + +void +Test_framework::error(const char* message) +{ + printf("ERROR: %s: %s\n", this->testname_, message); + this->current_fail_ = true; +} + +// Register_test methods. + +// Linked list of all registered tests. + +Register_test* Register_test::all_tests; + +// Register a test. + +Register_test::Register_test(const char* name, bool (*pfn)(Test_report*)) + : name_(name), pfn_(pfn), next_(Register_test::all_tests) +{ + Register_test::all_tests = this; +} + +// Run all registered tests. + +void +Register_test::run_tests(Test_framework* tf) +{ + for (Register_test* p = Register_test::all_tests; + p != NULL; + p = p->next_) + tf->run(p->name_, p->pfn_); +} + +} // End namespace gold_testsuite. Index: thin_archive_test_4.cc =================================================================== --- thin_archive_test_4.cc (nonexistent) +++ thin_archive_test_4.cc (revision 818) @@ -0,0 +1,35 @@ +// thin_archive_test_4.cc -- part of a test case for thin archives + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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 and archives. This is file 4 of 4. +// Each of the first three files contains a reference to the next. +// We test the archives as follows: + +// Files 1 and 2 in libthin1.a, files 3 and 4 in libthin2.a. +// Files 1 and 4 in libthin3.a, files 2 and 3 in libthin4.a, with +// libthin3.a and libthin4.a nested inside libthinall.a. + +int +t4() +{ + return 4; +} Index: script_test_2b.cc =================================================================== --- script_test_2b.cc (nonexistent) +++ script_test_2b.cc (revision 818) @@ -0,0 +1,24 @@ +// script_test_2a.cc -- linker script test 2, file 2 -*- C++ -*- + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +char script_test_string_b[] __attribute__ ((section(".gold_test"))) = + "test bb"; Index: weak_undef_file2.cc =================================================================== --- weak_undef_file2.cc (nonexistent) +++ weak_undef_file2.cc (revision 818) @@ -0,0 +1,70 @@ +// weak_undef_file1.cc -- test handling of weak undefined symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +// We test that we correctly deal with weak undefined symbols. +// We need to make sure that the symbol is resolved to zero +// by the linker and that no dynamic relocation is generated. + +// This source is used to build a shared library that defines +// the weak undefined symbol referenced by the main program. +// The main program will be linked with a library that does not +// provide this definition, so that the symbol remains undefined. +// Through the use of the embedded RPATH, the program will load +// this alternate shared library that does define the symbol, +// so that we can detect whether the symbol was left for runtime +// resolution. + + +#include + +#include "weak_undef.h" + +int is_such_symbol_ = 1; +int no_such_symbol_ = 2; + +extern int v2 __attribute__ ((weak)); + +int *v3 = &v2; + +int +t1() +{ + return no_such_symbol_; +} + +// Test that a weak reference from a shared library to a symbol +// defined in the main program does get resolved. + +int +t2() +{ + return (&v2 == NULL) ? -1 : v2; +} + +// Test that a weak reference from a shared library to a symbol +// defined in the main program does get resolved. + +int +t3() +{ + return (v3 == NULL) ? -1 : *v3; +} Index: copy_test_1.cc =================================================================== --- copy_test_1.cc (nonexistent) +++ copy_test_1.cc (revision 818) @@ -0,0 +1,23 @@ +// copy_test_1.cc -- test copy relocs for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +char b = 1; Index: two_file_test_1b.cc =================================================================== --- two_file_test_1b.cc (nonexistent) +++ two_file_test_1b.cc (revision 818) @@ -0,0 +1,41 @@ +// two_file_test_1b.cc -- supplementary file for a three-file test case +// for gold. + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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 file is used as part of a mixed PIC/non-PIC test. +// Files 1 and 1b are linked together in a shared library. +// File 1 is compiled non-PIC, and file 1a is compiled PIC. +// File 2 is compiled PIC and linked in a second shared library. +// This tests that a non-PIC call does not accidentally get +// bound to a PIC PLT entry. + +// We test the following cases. + +#include "two_file_test.h" + +// 16 Call a function directly after its address has been taken. + +bool +t16a() +{ + return f10() == 135; +} Index: ver_test_2.script =================================================================== --- ver_test_2.script (nonexistent) +++ ver_test_2.script (revision 818) @@ -0,0 +1,31 @@ +## ver_test_2.script -- a test case for gold + +## Copyright 2007, 2008 Free Software Foundation, Inc. +## Written by Cary Coutant . + +## 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. + +VER1 { +}; + +VER2 { + global: + t1_2; + t3_2; + t4_2a; +} VER1; Index: weak_plt_shared.cc =================================================================== --- weak_plt_shared.cc (nonexistent) +++ weak_plt_shared.cc (revision 818) @@ -0,0 +1,29 @@ +// weak_plt_shared.cc -- test call to weak undefined function for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include + +int +weak_function() +{ + return 0; +} Index: exception_test.h =================================================================== --- exception_test.h (nonexistent) +++ exception_test.h (revision 818) @@ -0,0 +1,27 @@ +// exception_test.h -- exception test case for gold, header file -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 the shared header +// file. See exception_test_1.cc for details. + +extern bool t1(); +extern void f1(); Index: gc_tls_test.sh =================================================================== --- gc_tls_test.sh (nonexistent) +++ gc_tls_test.sh (revision 818) @@ -0,0 +1,39 @@ +#!/bin/sh + +# gc_tls_test.sh -- test -- gc + tls + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# 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. + +# The goal of this program is to verify if tls sections are garbage +# collected with --gc-sections. File gc_tls_test.cc is in this test. + +check() +{ + if grep -q "$2" "$1" + then + echo "Garbage collection failed to collect tls variable:" + echo " $2" + exit 1 + fi + +} + +check gc_tls_test.stdout "number"
gc_tls_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: version_script.map =================================================================== --- version_script.map (nonexistent) +++ version_script.map (revision 818) @@ -0,0 +1,35 @@ +V1 { + global: + extern "C++" + { + "bar()"; + "baz(int*)"; + }; + foo; + blaza*; + bar*; + # Make sure we parse "extern" when it's not first thing in the section. + extern "C++" + { + myns::*; + }; + # Would be a keyword in a linker script. + SECTIONS; + sizeof_headers; + # Crazy globbiness + glob*f[^A-Zo]st?ff; + + local: + *foo*; +}; + +V2 { + global: + extern "C++" { + otherns::stuff; + }; + blaz*; + foo; + local: + _[^A-Z]*; +} V1; Index: copy_test.cc =================================================================== --- copy_test.cc (nonexistent) +++ copy_test.cc (revision 818) @@ -0,0 +1,43 @@ +// copy_test.cc -- test copy relocs for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#include +#include + +// Misalign the BSS section. +static char c; + +// From copy_test_1.cc. +extern char b; + +// From copy_test_2.cc. +extern long long l; + +int +main() +{ + assert(c == 0); + assert(b == 1); + assert(l == 2); + assert((reinterpret_cast(&l) & 0x7) == 0); + return 0; +} Index: protected_3.cc =================================================================== --- protected_3.cc (nonexistent) +++ protected_3.cc (revision 818) @@ -0,0 +1,33 @@ +// protected_2.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 will also call the protected version of f1. In some versions +// of the test this will be overridden by a version in the main +// program. + +extern int f1(); + +bool +t2() +{ + return f1() == 1; +} Index: script_test_4.sh =================================================================== --- script_test_4.sh (nonexistent) +++ script_test_4.sh (revision 818) @@ -0,0 +1,41 @@ +#!/bin/sh + +# script_test_4.sh -- test load segment + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with script_test_4.t, which is a linker script which +# starts the program at an unaligned address. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected segment in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check script_test_4.stdout "\\.interp[ ]*PROGBITS[ ]*0*10000400"
script_test_4.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: ver_test_3.cc =================================================================== --- ver_test_3.cc (nonexistent) +++ ver_test_3.cc (revision 818) @@ -0,0 +1,33 @@ +// ver_test_3.cc -- a test case for gold + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +#include "ver_test.h" + +int +t1_2() __attribute((visibility("hidden"))); + +int +t1_2() +{ + TRACE + return 11; +} Index: exclude_libs_test_2.c =================================================================== --- exclude_libs_test_2.c (nonexistent) +++ exclude_libs_test_2.c (revision 818) @@ -0,0 +1,24 @@ +void lib2_default (void); +void lib2_hidden (void); +void lib2_internal (void); +void lib2_protected (void); + +void __attribute__((visibility ("default"))) +lib2_default (void) +{ +} + +void __attribute__((visibility ("hidden"))) +lib2_hidden (void) +{ +} + +void __attribute__((visibility ("internal"))) +lib2_internal (void) +{ +} + +void __attribute__((visibility ("protected"))) +lib2_protected (void) +{ +} Index: justsyms.t =================================================================== --- justsyms.t (nonexistent) +++ justsyms.t (revision 818) @@ -0,0 +1,31 @@ +/* justsyms.t -- test --just-symbols for gold. + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + 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. */ + +SECTIONS +{ + /* This script is only used for a .o file. */ + . = 0x100; + .gold_test : { *(.gold_test) } + .text : { *(.text) } + .data : { *(.data) } + .bss : { *(.bss) } +} Index: ver_test_10.sh =================================================================== --- ver_test_10.sh (nonexistent) +++ ver_test_10.sh (revision 818) @@ -0,0 +1,44 @@ +#!/bin/sh + +# ver_test_10.sh -- test global/local symbols + +# Copyright 2008 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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 file goes with ver_test_4.script and ver_test_5.script. The +# symbol t2_2 is not defined when ver_test_5.script is used. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected symbol in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check ver_test_10.syms "GLOBAL.*t3_2" +check ver_test_10.syms "LOCAL.*t4_2" + +exit 0
ver_test_10.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: weak_alias_test_2.cc =================================================================== --- weak_alias_test_2.cc (nonexistent) +++ weak_alias_test_2.cc (revision 818) @@ -0,0 +1,41 @@ +// weak_alias_test_2.cc -- test weak aliases for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// Define a strong symbol. + +int strong_symbol = 2; + +// Define a weak symbol. This will be overridden by the weak symbol +// in weak_alias_test_1.cc. + +extern int weak_symbol __attribute__ ((weak)); +int weak_symbol = 3; + +// These are overridden by weak_alias_test_1.cc +int strong_aliased = 100; +extern int weak_aliased __attribute__ ((weak, alias ("strong_aliased"))); +int strong_aliased_2 = 102; +extern int weak_aliased_2 __attribute__ ((weak, alias ("strong_aliased_2"))); +int strong_aliased_3 = 104; +extern int weak_aliased_3 __attribute__ ((weak, alias ("strong_aliased_3"))); +int strong_aliased_4 = 106; +extern int weak_aliased_4 __attribute__ ((weak, alias ("strong_aliased_4"))); Index: testfile.h =================================================================== --- testfile.h (nonexistent) +++ testfile.h (revision 818) @@ -0,0 +1,49 @@ +// testfile.h -- test input files -*- C++ -*- + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +#ifndef GOLD_TESTSUITE_TESTFILE_H +#define GOLD_TESTSUITE_TESTFILE_H + +namespace gold +{ +class Target; +} + +namespace gold_testsuite +{ + +extern gold::Target* target_test_pointer_32_little; +extern gold::Target* target_test_pointer_32_big; +extern gold::Target* target_test_pointer_64_little; +extern gold::Target* target_test_pointer_64_big; +extern const unsigned char test_file_1_32_little[]; +extern const unsigned int test_file_1_size_32_little; +extern const unsigned char test_file_1_32_big[]; +extern const unsigned int test_file_1_size_32_big; +extern const unsigned char test_file_1_64_little[]; +extern const unsigned int test_file_1_size_64_little; +extern const unsigned char test_file_1_64_big[]; +extern const unsigned int test_file_1_size_64_big; + +}; // End namespace gold_testsuite. + +#endif // !defined(GOLD_TESTSUITE_TESTFILE_H) Index: justsyms_2.cc =================================================================== --- justsyms_2.cc (nonexistent) +++ justsyms_2.cc (revision 818) @@ -0,0 +1,27 @@ +// justsyms_2.cc -- test --just-symbols for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 test goes with justsyms_1.cc. We compile this file, then +// apply a linker script with -r to set the section addresses. + +char justsyms_string[] __attribute__ ((section(".gold_test"))) = + "justsyms string"; Index: two_file_shared.sh =================================================================== --- two_file_shared.sh (nonexistent) +++ two_file_shared.sh (revision 818) @@ -0,0 +1,30 @@ +#!/bin/sh + +# two_file_shared.sh -- check that debug info gets symbol addresses + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Ian Lance Taylor . + +# 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. + +addrs=`grep DW_OP_addr two_file_shared.dbg | fgrep '(DW_OP_addr: 0)'` +if test -n "$addrs"; then + echo "Found variables with address zero" + echo $addrs + exit 1 +fi
two_file_shared.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: ver_matching_def.cc =================================================================== --- ver_matching_def.cc (nonexistent) +++ ver_matching_def.cc (revision 818) @@ -0,0 +1,73 @@ +// ver_matching_def.cc - test matching rules in version_script.map + +// Copyright 2007, 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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. + +extern "C" { +void foo() {} // V1 +void foo1() {} // local +}; + +void bar() {} // V1 +void bar1() {} // global + +void baz(int*) {} // V1 +void baz(int*, char) {} // global +void baz(char*, int) {} // global + +extern "C" { +void bar2() {} // V1 +}; + +namespace myns { +void blah() {} // V1 +void bip() {} // V1 + +class Stuff { + public: + Stuff() {} // V1 +}; +} + +class Biz { + public: + Biz() {} // global +}; + +namespace otherns { +Biz biz; // global +myns::Stuff stuff; // V2 +}; + +extern "C" { +void blaza() {} // V1 +void blaza1() {} // V1 + +void original_blaza2() {} // V2 +__asm__(".symver original_blaza2,blaza2@@V2"); // overrides script + +void bla() {} // global +void blaz() {} // V2 +void blazb() {} // V2 + +int globaoeufxstuff = 0; // V1 +int globaoeufostuff = 0; // global +float sizeof_headers = 50.0; // V1 +}; Index: weak_test.cc =================================================================== --- weak_test.cc (nonexistent) +++ weak_test.cc (revision 818) @@ -0,0 +1,47 @@ +// weak_test.cc -- test handling of weak symbols for gold + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 provides a set of test functions for TLS variables. The +// functions are called by a main function in tls_test_main.cc. This +// lets us test TLS access from a shared library. We currently don't +// bother to test TLS access between two different files, on the +// theory that that is no more complicated than ordinary variable +// access between files. + +// We test that we correctly deal with weak symbols defined in +// other libraries (in this case, libc). We need to make sure we +// copy the associated GLOBAL reloc when we copy a WEAK reloc. + + +#include + +int +main() +{ + extern char** environ; // defined in libc + if (environ == NULL) + { + fprintf(stderr, "FAILED the environ test: environ is NULL\n"); + return 1; + } + return 0; +} Index: large.c =================================================================== --- large.c (nonexistent) +++ large.c (revision 818) @@ -0,0 +1,59 @@ +/* large.c -- a test case for gold + + Copyright 2009 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + 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. */ + +#include + +/* Test large sections in gold. */ + +int v1; +int v2 = 1; +int v3[0x10000]; +int v4[0x10000] = { 1 }; +const int v5[0x10000] = { 2 }; +int v6; +int v7 = 1; + +int +main (int argc __attribute__ ((unused)), char** argv __attribute ((unused))) +{ + assert (v1 == 0); + assert (v2 == 1); + assert (v3[0] == 0 && v3[0xffff] == 0); + assert (v4[0] == 1 && v4[0xffff] == 0); + assert (v5[0] == 2 && v5[0xffff] == 0); + assert (v6 == 0); + assert (v7 == 1); + + /* The large symbols must follow the small ones. */ + assert (&v1 < v3 && &v1 < v4 && &v1 < v5); + assert (&v2 < v3 && &v2 < v4 && &v2 < v5); + assert (&v6 < v3 && &v6 < v4 && &v6 < v5); + assert (&v7 < v3 && &v7 < v4 && &v7 < v5); + + /* Large symbols should be BSS followed by read-only followed by + read-write. */ + assert (v3 < v4); + assert (v3 < v5); + assert (v5 < v4); + + return 0; +} Index: odr_violation2.cc =================================================================== --- odr_violation2.cc (nonexistent) +++ odr_violation2.cc (revision 818) @@ -0,0 +1,14 @@ +#include + +class Ordering { + public: + bool operator()(int a, int b) { + // We need the "+ 1" here to force this operator() to be a + // different size than the one in odr_violation1.cc. + return a + 1 > b + 1; + } +}; + +void SortDescending(int array[], int size) { + std::sort(array, array + size, Ordering()); +} Index: icf_safe_test.cc =================================================================== --- icf_safe_test.cc (nonexistent) +++ icf_safe_test.cc (revision 818) @@ -0,0 +1,54 @@ +// icf_safe_test.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// 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. + +// The goal of this program is to verify if identical code folding +// in safe mode correctly folds only ctors and dtors. kept_func_1 must +// not be folded into kept_func_2. The ctor and dtor of class A must +// be folded. + +class A +{ + public: + A() + { + } + ~A() + { + } +}; + +A a; + +int kept_func_1() +{ + return 1; +} + +int kept_func_2() +{ + return 1; +} + +int main() +{ + return 0; +} Index: tls_test_c.c =================================================================== --- tls_test_c.c (nonexistent) +++ tls_test_c.c (revision 818) @@ -0,0 +1,65 @@ +/* tls_test_c.c -- test TLS common symbol + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor + + 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. */ + +/* The only way I know to get gcc to generate a TLS common symbol is + to use a C file and an OpenMP directive. */ + +#include +#include "config.h" + +#define CHECK_EQ_OR_RETURN(var, expected) \ + do \ + { \ + if ((var) != (expected)) \ + { \ + printf(#var ": expected %d, found %d\n", expected, var); \ + return 0; \ + } \ + } \ + while (0) + +#ifdef HAVE_OMP_SUPPORT +int v7; +#pragma omp threadprivate (v7) +#endif + +int t11(void); +int t11_last(void); + +int +t11(void) +{ +#ifdef HAVE_OMP_SUPPORT + CHECK_EQ_OR_RETURN(v7, 0); + v7 = 70; +#endif + return 1; +} + +int +t11_last(void) +{ +#ifdef HAVE_OMP_SUPPORT + CHECK_EQ_OR_RETURN(v7, 70); +#endif + return 1; +} Index: gc_comdat_test_2.cc =================================================================== --- gc_comdat_test_2.cc (nonexistent) +++ gc_comdat_test_2.cc (revision 818) @@ -0,0 +1,35 @@ +// gc_comdat_test_2.cc -- a test case for gold + +// Copyright 2009 Free Software Foundation, Inc. +// Written by Sriraman Tallam . + +// 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. + +// The goal of this program is to verify if comdat's and garbage +// collection work together. This file is compiled with -g. + +template +T GetMax (T a, T b) +{ + return (a > b)?a:b; +} + +int foo () +{ + return GetMax (10,11); +} Index: split_i386_2.s =================================================================== --- split_i386_2.s (nonexistent) +++ split_i386_2.s (revision 818) @@ -0,0 +1,33 @@ +# split_i386_2.s: i386 specific, -fsplit-stack calling non-split + + .text + + .global fn1 + .type fn1,@function +fn1: + cmp %gs:0x30,%esp + jae 1f + call __morestack + ret +1: + call fn3 + ret + + .size fn1,. - fn1 + + .global fn2 + .type fn2,@function +fn2: + lea -0x200(%esp),%ecx + cmp %gs:0x30,%ecx + jae 1f + call __morestack + ret +1: + call fn3 + ret + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits Index: script_test_2.t =================================================================== --- script_test_2.t (nonexistent) +++ script_test_2.t (revision 818) @@ -0,0 +1,68 @@ +/* script_test_2.t -- linker script test 2 for gold + + Copyright 2008 Free Software Foundation, Inc. + Written by Ian Lance Taylor . + + 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. */ + +test_addr_alias = test_addr; + +SECTIONS +{ + /* With luck this will work everywhere. */ + . = 0x10000000; + + /* With luck this will be enough to get the program working. */ + .text : { *(.text) } + . += 0x100000; + . = ALIGN(0x100); + .data : { *(.data) } + .bss : { *(.bss) } + + /* Now the real test. */ + . = 0x20000001; + start_test_area = .; + .gold_test ALIGN(16) : SUBALIGN(32) { + start_test_area_1 = .; + + /* No sections should wind up here, because of the EXCLUDE_FILE. */ + *( EXCLUDE_FILE(script_test*) .gold_test) + + /* This should match only script_test_2b.o. */ + script_test_2b.o(.gold_test) + + /* This should match the remaining sections. */ + *(.gold_test) + + . = . + 4; + start_data = .; + BYTE(1) + SHORT(2) + LONG(4) + QUAD(8) + end_data = .; + + start_fill = .; + FILL(0x12345678); + . = . + 7; + BYTE(0) + end_fill = .; + } + end_test_area = .; + test_addr = ADDR(.gold_test); +} Index: plugin_test_2.sh =================================================================== --- plugin_test_2.sh (nonexistent) +++ plugin_test_2.sh (revision 818) @@ -0,0 +1,56 @@ +#!/bin/sh + +# plugin_test_2.sh -- a test case for the plugin API. + +# Copyright 2008, 2009 Free Software Foundation, Inc. +# Written by Cary Coutant . + +# 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 file goes with plugin_test_1.c, a simple plug-in library that +# exercises the basic interfaces and prints out version numbers and +# options passed to the plugin. + +check() +{ + if ! grep -q "$2" "$1" + then + echo "Did not find expected output in $1:" + echo " $2" + echo "" + echo "Actual output below:" + cat "$1" + exit 1 + fi +} + +check plugin_test_2.err "API version:" +check plugin_test_2.err "gold version:" +check plugin_test_2.err "two_file_test_main.o: claim file hook called" +check plugin_test_2.err "two_file_test_1.syms: claim file hook called" +check plugin_test_2.err "two_file_test_1b.syms: claim file hook called" +check plugin_test_2.err "two_file_shared_2.so: claim file hook called" +check plugin_test_2.err "two_file_test_1.syms: _Z4f13iv: PREVAILING_DEF_REG" +check plugin_test_2.err "two_file_test_1.syms: _Z2t2v: PREVAILING_DEF_REG" +check plugin_test_2.err "two_file_test_1.syms: v2: RESOLVED_DYN" +check plugin_test_2.err "two_file_test_1.syms: t17data: RESOLVED_DYN" +check plugin_test_2.err "two_file_test_1.o: adding new input file" +check plugin_test_2.err "two_file_test_1b.o: adding new input file" +check plugin_test_2.err "cleanup hook called" + +exit 0
plugin_test_2.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: split_x86_64_4.s =================================================================== --- split_x86_64_4.s (nonexistent) +++ split_x86_64_4.s (revision 818) @@ -0,0 +1,23 @@ +# split_x86_64_4.s: x86_64 specific, permitted adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + push %rbp + mov %rsp,%rbp + cmp %fs:0x70,%rsp + jae 1f + callq __morestack + retq +1: + callq fn3 + leaveq + retq + + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits + .section .note.GNU-no-split-stack,"",@progbits Index: exception_test_1.cc =================================================================== --- exception_test_1.cc (nonexistent) +++ exception_test_1.cc (revision 818) @@ -0,0 +1,52 @@ +// exception_test_1.cc -- test exception handling for gold, file 1 of 2 + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 throwing an exception across various boundaries. This +// is a general test of the exception frame handling, and the +// interaction with the compiler support libraries. This is file 1, +// which catches the exception. 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. + +#include "exception_test.h" + +bool +t1() +{ + int i; + try + { + i = 0; + f1(); + i = 1; + } + catch (...) + { + return i == 0; + } + + return false; +} Index: protected_main_2.cc =================================================================== --- protected_main_2.cc (nonexistent) +++ protected_main_2.cc (revision 818) @@ -0,0 +1,29 @@ +// protected_main_2.cc -- a test case for gold + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 version of f1 will not be called by the shared library code. + +int +f1() +{ + return 2; +} Index: thin_archive_test_2.cc =================================================================== --- thin_archive_test_2.cc (nonexistent) +++ thin_archive_test_2.cc (revision 818) @@ -0,0 +1,37 @@ +// thin_archive_test_2.cc -- part of a test case for thin archives + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// 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 and archives. This is file 2 of 4. +// Each of the first three files contains a reference to the next. +// We test the archives as follows: + +// Files 1 and 2 in libthin1.a, files 3 and 4 in libthin2.a. +// Files 1 and 4 in libthin3.a, files 2 and 3 in libthin4.a, with +// libthin3.a and libthin4.a nested inside libthinall.a. + +extern int t3(); + +int +t2() +{ + return (t3() << 4) | 2; +} Index: icf_safe_test.sh =================================================================== --- icf_safe_test.sh (nonexistent) +++ icf_safe_test.sh (revision 818) @@ -0,0 +1,50 @@ +# icf_safe_test.sh -- test --icf=safe + +# Copyright 2009 Free Software Foundation, Inc. +# Written by Sriraman Tallam . + +# 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. + +# The goal of this program is to verify if --icf=safe works as expected. +# File icf_safe_test.cc is in this test. This program checks if only +# ctors and dtors are folded. + +check_nofold() +{ + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 = $func_addr_2 ] + then + echo "Safe Identical Code Folding folded" $2 "and" $3 + exit 1 + fi +} + +check_fold() +{ + func_addr_1=`grep $2 $1 | awk '{print $1}'` + func_addr_2=`grep $3 $1 | awk '{print $1}'` + if [ $func_addr_1 != $func_addr_2 ] + then + echo "Safe Identical Code Folding did not fold " $2 "and" $3 + exit 1 + fi +} + +check_nofold icf_safe_test.stdout "kept_func_1" "kept_func_2" +check_fold icf_safe_test.stdout "_ZN1AD1Ev" "_ZN1AC1Ev"
icf_safe_test.sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: script_test_2.cc =================================================================== --- script_test_2.cc (nonexistent) +++ script_test_2.cc (revision 818) @@ -0,0 +1,74 @@ +// script_test_2.cc -- linker script test 2 for gold -*- C++ -*- + +// Copyright 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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. + +// A test of some uses of the SECTIONS clause. Look at +// script_test_2.t to make sense of this test. + +#include +#include +#include +#include + +extern char start_test_area[]; +extern char start_test_area_1[]; +extern char start_data[]; +extern char end_data[]; +extern char start_fill[]; +extern char end_fill[]; +extern char end_test_area[]; +extern char test_addr[]; +extern char test_addr_alias[]; + +int +main(int, char**) +{ + assert(reinterpret_cast(start_test_area) == 0x20000001); + assert(reinterpret_cast(start_test_area_1) == 0x20000010); + + // We should see the string from script_test_2b.o next. The + // subalign should move it up to 0x20000020. + for (int i = 0; i < 16; ++i) + assert(start_test_area_1[i] == 0); + assert(strcmp(start_test_area_1 + 16, "test bb") == 0); + + // Next the string from script_test_2a.o, after the subalign. + for (int i = 16 + 7; i < 48; ++i) + assert(start_test_area_1[i] == 0); + assert(strcmp(start_test_area_1 + 48, "test aa") == 0); + + // Move four bytes forward to start_data. + assert(reinterpret_cast(start_test_area_1 + 48 + 8 + 4) + == reinterpret_cast(start_data)); + assert(memcmp(start_data, "\1\2\0\4\0\0\0\010\0\0\0\0\0\0\0", 15) == 0 + || memcmp(start_data, "\1\0\2\0\0\0\4\0\0\0\0\0\0\0\010", 15) == 0); + assert(end_data == start_data + 15); + + // Check that FILL works as expected. + assert(start_fill == end_data); + assert(memcmp(start_fill, "\x12\x34\x56\x78\x12\x34\x56\0", 8) == 0); + assert(end_fill == start_fill + 8); + + assert(end_test_area == end_fill); + + assert(test_addr == start_test_area_1); + assert(test_addr_alias == test_addr); +} Index: constructor_test.cc =================================================================== --- constructor_test.cc (nonexistent) +++ constructor_test.cc (revision 818) @@ -0,0 +1,90 @@ +// constructor_test.cc -- a test case for gold global constructors + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 file just runs some global constructors and destructors. The +// last global destructor verifies that the state is as expected, and +// we assume that it runs correctly itself. + +#include +#include + +// These counters let us verify the state. + +int c1_count; +int c2_count; +int atexit_count; + +// This class verifies that there are no objects left when it is +// destroyed. Therefore, we can only have one instance of this +// object. + +class c1 +{ + public: + static int count; + + c1() + { ++c1_count; } + + ~c1() + { + --c1_count; + assert(c1_count == 0 && c2_count == 0 && atexit_count == 0); + } +}; + +c1 c1v; + +// A function called at atexit time. + +void +atexit_function() +{ + --atexit_count; + assert(atexit_count == c2_count); +} + +// A class which counts itself and also calls atexit. + +class c2 +{ + public: + c2() + { + assert(atexit_count == c2_count); + ++c2_count; + atexit(atexit_function); + ++atexit_count; + } + + ~c2() + { --c2_count; } +}; + +c2 c2v1; +c2 c2v2; + +int +main() +{ + return 0; +} Index: two_file_test_2.cc =================================================================== --- two_file_test_2.cc (nonexistent) +++ two_file_test_2.cc (revision 818) @@ -0,0 +1,145 @@ +// two_file_test_2.cc -- a two file test case for gold, file 2 of 2 + +// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Written by Ian Lance Taylor . + +// 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 2, and +// two_file_test_1.cc is file 1. See file 1 for details. + +#include "two_file_test.h" + +// 1 Code in file 1 calls code in file 2. + +int +t1_2() +{ + return 123; +} + +bool +t1a() +{ + return t1_2() == 123; +} + +// 2 Code in file 1 refers to global data in file 2. + +int v2 = 456; + +// 3 Code in file 1 referes to common symbol in file 2. This is +// initialized at runtime to 789. + +int v3; + +// 4 Code in file 1 refers to offset within global data in file 2. + +char v4[] = "Hello, world"; + +// 5 Code in file 1 refers to offset within common symbol in file 2. +// This is initialized at runtime to a copy of v4. + +char v5[13]; + +// 6 Data in file 1 refers to global data in file 2. This reuses v2. + +// 7 Data in file 1 refers to common symbol in file 2. This reuses v3. + +// 8 Data in file 1 refers to offset within global data in file 2. +// This reuses v4. + +// 9 Data in file 1 refers to offset within common symbol in file 2. +// This reuses v5. + +// 10 Data in file 1 refers to function in file 2. + +int +f10() +{ + return 135; +} + +// 11 Pass function pointer from file 1 to file 2. + +int +f11b(int (*pfn)()) +{ + return (*pfn)(); +} + +// 12 Compare address of function for equality in both files. + +bool +(*f12())() +{ + return &t12; +} + +// 13 Compare address of inline function for equality in both files. + +void +(*f13())() +{ + return &f13i; +} + +// 14 Compare string constants in file 1 and file 2. + +const char* +f14() +{ + return TEST_STRING_CONSTANT; +} + +// 15 Compare wide string constants in file 1 and file 2. + +const wchar_t* +f15() +{ + return TEST_WIDE_STRING_CONSTANT; +} + +// 17 File 1 checks array of string constants defined in file 2. + +const char* t17data[T17_COUNT] = +{ + "a", "b", "c", "d", "e" +}; + +// 18 File 1 checks string constants referenced directly in file 2. + +const char* +f18(int i) +{ + switch (i) + { + case 0: + return "a"; + case 1: + return "b"; + case 2: + return "c"; + case 3: + return "d"; + case 4: + return "e"; + default: + return 0; + } +}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.