diff options
author | Doug Kwan <dougkwan@google.com> | 2009-06-05 21:32:57 +0000 |
---|---|---|
committer | Doug Kwan <dougkwan@google.com> | 2009-06-05 21:32:57 +0000 |
commit | bb04269c747a7aa5acffa2355efd1d7343338faf (patch) | |
tree | c0146d3edcbd719434f09eee57c611a592170761 /gold/testsuite | |
parent | da1f277114fc1ed98e71bf2fde32fe82757e9314 (diff) | |
download | gdb-bb04269c747a7aa5acffa2355efd1d7343338faf.zip gdb-bb04269c747a7aa5acffa2355efd1d7343338faf.tar.gz gdb-bb04269c747a7aa5acffa2355efd1d7343338faf.tar.bz2 |
2009-06-05 Doug Kwan <dougkwan@google.com>
* Makefile.am (CCFILES): Add target.cc.
* Makefile.in: Regenerate.
* i386.cc (class Target_i386): Define new virtual method to
override do_is_local_label_name in parent.
* object.cc (Sized_relobj::do_count_local_symbols): Discard
local symbols if --discard-locals or -X is given.
* options.h (class General_options): Declare new options
'--discard-locals' and '-X' for discarding locals.
* target.h (class Target): Define new methods is_local_label_name.
Declare new virtual method do_is_local_label_name.
* target.cc: New file.
* testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
(check_SCRIPTS): Add discard_locals_test.sh.
(check_DATA): Add discard_local_tests.syms.
(discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
(discard_local_tests.syms, discard_locals_test.o): New make rules.
* testsuite/Makefile.in: Regenerate.
* testsuite/discard_locals_test.c: New file.
* testsuite/discard_locals_test.sh: Same.
Diffstat (limited to 'gold/testsuite')
-rw-r--r-- | gold/testsuite/Makefile.am | 12 | ||||
-rw-r--r-- | gold/testsuite/Makefile.in | 46 | ||||
-rw-r--r-- | gold/testsuite/discard_locals_test.c | 40 | ||||
-rwxr-xr-x | gold/testsuite/discard_locals_test.sh | 44 |
4 files changed, 132 insertions, 10 deletions
diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am index e2bf8bd..3bb5bd3 100644 --- a/gold/testsuite/Makefile.am +++ b/gold/testsuite/Makefile.am @@ -1080,5 +1080,17 @@ local_labels_test.o: ver_test_6.c 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 $@ $< + endif GCC endif NATIVE_LINKER diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in index 0533e7b..1bc579e 100644 --- a/gold/testsuite/Makefile.in +++ b/gold/testsuite/Makefile.in @@ -319,12 +319,17 @@ check_PROGRAMS = object_unittest$(EXEEXT) binary_unittest$(EXEEXT) \ @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@am__append_24 = exclude_libs_test \ -@GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test -@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_25 = exclude_libs_test.sh -@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_26 = exclude_libs_test.syms -@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_27 = exclude_libs_test.syms 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@ local_labels_test \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_25 = exclude_libs_test.sh \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.sh +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_26 = exclude_libs_test.syms \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.syms +@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_27 = 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 subdir = testsuite DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -431,7 +436,8 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS) @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@ local_labels_test$(EXEEXT) \ +@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test$(EXEEXT) basic_pic_test_SOURCES = basic_pic_test.c basic_pic_test_OBJECTS = basic_pic_test.$(OBJEXT) basic_pic_test_LDADD = $(LDADD) @@ -490,6 +496,14 @@ 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) +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) 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) @@ -899,6 +913,7 @@ SOURCES = $(libgoldtest_a_SOURCES) basic_pic_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) \ @@ -952,6 +967,7 @@ DIST_SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c \ $(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) \ @@ -1528,7 +1544,8 @@ binary_unittest_SOURCES = binary_unittest.cc @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@local_labels_test_LDFLAGS = -Bgcctestdir/ +@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 all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am @@ -1543,9 +1560,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu testsuite/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign testsuite/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu testsuite/Makefile + $(AUTOMAKE) --foreign testsuite/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -1615,6 +1632,9 @@ constructor_test$(EXEEXT): $(constructor_test_OBJECTS) $(constructor_test_DEPEND copy_test$(EXEEXT): $(copy_test_OBJECTS) $(copy_test_DEPENDENCIES) @rm -f copy_test$(EXEEXT) $(CXXLINK) $(copy_test_LDFLAGS) $(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) + $(LINK) $(discard_locals_test_LDFLAGS) $(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) $(CXXLINK) $(exception_same_shared_test_LDFLAGS) $(exception_same_shared_test_OBJECTS) $(exception_same_shared_test_LDADD) $(LIBS) @@ -1898,6 +1918,7 @@ distclean-compile: @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@ @@ -2634,6 +2655,11 @@ uninstall-am: uninstall-info-am @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 $@ $< # 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: diff --git a/gold/testsuite/discard_locals_test.c b/gold/testsuite/discard_locals_test.c new file mode 100644 index 0000000..b722447 --- /dev/null +++ b/gold/testsuite/discard_locals_test.c @@ -0,0 +1,40 @@ +/* discard_locals_test.c -- test --discard-locals option. + + Copyright 2009 Free Software Foundation, Inc. + Doug Kwan <dougkwan@google.com>. + + This file is part of gold. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. + + This is a test of a common symbol in the main program and a + versioned symbol in a shared library. The common symbol in the + main program should override the shared library symbol. */ + +/* 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; +} + diff --git a/gold/testsuite/discard_locals_test.sh b/gold/testsuite/discard_locals_test.sh new file mode 100755 index 0000000..c09f833 --- /dev/null +++ b/gold/testsuite/discard_locals_test.sh @@ -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 <dougkwan@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 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 |