diff options
author | Ian Lance Taylor <ian@airs.com> | 2008-09-16 17:23:37 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2008-09-16 17:23:37 +0000 |
commit | 9c2d0ef98abc05ea6fae35be6db732b22bba71b5 (patch) | |
tree | ec947c7c91f54839a27dc26623b8cde1e3d11d45 /gold | |
parent | de31bda5f611b1092f12d3db8c2ffcbb125c86fb (diff) | |
download | binutils-9c2d0ef98abc05ea6fae35be6db732b22bba71b5.zip binutils-9c2d0ef98abc05ea6fae35be6db732b22bba71b5.tar.gz binutils-9c2d0ef98abc05ea6fae35be6db732b22bba71b5.tar.bz2 |
* target-reloc.h (relocate_section): Check whether a symbol is
defined by the ABI before reporting an undefined symbol error.
* target.h (Target::is_defined_by_abi): Make parameter const.
(Target::do_is_defined_by_abi): Likewise.
* i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
* powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
* sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
* x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
* testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
* testsuite/Makefile.in: Rebuild.
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 11 | ||||
-rw-r--r-- | gold/i386.cc | 2 | ||||
-rw-r--r-- | gold/powerpc.cc | 2 | ||||
-rw-r--r-- | gold/sparc.cc | 2 | ||||
-rw-r--r-- | gold/target-reloc.h | 1 | ||||
-rw-r--r-- | gold/target.h | 4 | ||||
-rw-r--r-- | gold/testsuite/Makefile.am | 2 | ||||
-rw-r--r-- | gold/testsuite/Makefile.in | 2 | ||||
-rw-r--r-- | gold/x86_64.cc | 2 |
9 files changed, 20 insertions, 8 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index dc84079..22e4263 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,5 +1,16 @@ 2008-09-16 Ian Lance Taylor <iant@google.com> + * target-reloc.h (relocate_section): Check whether a symbol is + defined by the ABI before reporting an undefined symbol error. + * target.h (Target::is_defined_by_abi): Make parameter const. + (Target::do_is_defined_by_abi): Likewise. + * i386.cc (Target_i386::do_is_defined_by_abi): Likewise. + * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise. + * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise. + * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise. + * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs. + * testsuite/Makefile.in: Rebuild. + * fileread.cc (make_view): Add casts to avoid warning. 2008-09-16 Alexandre Oliva <aoliva@redhat.com> diff --git a/gold/i386.cc b/gold/i386.cc index e2fbb25..8a5558e 100644 --- a/gold/i386.cc +++ b/gold/i386.cc @@ -135,7 +135,7 @@ class Target_i386 : public Sized_target<32, false> // Return whether SYM is defined by the ABI. bool - do_is_defined_by_abi(Symbol* sym) const + do_is_defined_by_abi(const Symbol* sym) const { return strcmp(sym->name(), "___tls_get_addr") == 0; } // Return the size of the GOT section. diff --git a/gold/powerpc.cc b/gold/powerpc.cc index 421cfdb..05ce4fc 100644 --- a/gold/powerpc.cc +++ b/gold/powerpc.cc @@ -129,7 +129,7 @@ class Target_powerpc : public Sized_target<size, big_endian> // Return whether SYM is defined by the ABI. bool - do_is_defined_by_abi(Symbol* sym) const + do_is_defined_by_abi(const Symbol* sym) const { return strcmp(sym->name(), "___tls_get_addr") == 0; } diff --git a/gold/sparc.cc b/gold/sparc.cc index 7da59dd..cca78b7 100644 --- a/gold/sparc.cc +++ b/gold/sparc.cc @@ -130,7 +130,7 @@ class Target_sparc : public Sized_target<size, big_endian> section_size_type reloc_view_size); // Return whether SYM is defined by the ABI. bool - do_is_defined_by_abi(Symbol* sym) const + do_is_defined_by_abi(const Symbol* sym) const { // XXX Really need to support this better... if (sym->type() == elfcpp::STT_SPARC_REGISTER) diff --git a/gold/target-reloc.h b/gold/target-reloc.h index 6683ddd..1cdc244 100644 --- a/gold/target-reloc.h +++ b/gold/target-reloc.h @@ -283,6 +283,7 @@ relocate_section( if (sym != NULL && sym->is_undefined() && sym->binding() != elfcpp::STB_WEAK + && !target->is_defined_by_abi(sym) && (!parameters->options().shared() // -shared || parameters->options().defs())) // -z defs gold_undefined_symbol(sym, relinfo, i, offset); diff --git a/gold/target.h b/gold/target.h index 30fa008..460ac96 100644 --- a/gold/target.h +++ b/gold/target.h @@ -164,7 +164,7 @@ class Target // Return whether SYM is known to be defined by the ABI. This is // used to avoid inappropriate warnings about undefined symbols. bool - is_defined_by_abi(Symbol* sym) const + is_defined_by_abi(const Symbol* sym) const { return this->do_is_defined_by_abi(sym); } protected: @@ -222,7 +222,7 @@ class Target // Virtual function which may be implemented by the child class. virtual bool - do_is_defined_by_abi(Symbol*) const + do_is_defined_by_abi(const Symbol*) const { return false; } private: diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am index c9dd470..1f08b5a 100644 --- a/gold/testsuite/Makefile.am +++ b/gold/testsuite/Makefile.am @@ -468,7 +468,7 @@ tls_test_file2_pic.o: tls_test_file2.cc 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 + $(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 diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in index 9f72b88..e3d8dca 100644 --- a/gold/testsuite/Makefile.in +++ b/gold/testsuite/Makefile.in @@ -2125,7 +2125,7 @@ uninstall-am: uninstall-info-am @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 +@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 diff --git a/gold/x86_64.cc b/gold/x86_64.cc index 46c4a22..69f76a0 100644 --- a/gold/x86_64.cc +++ b/gold/x86_64.cc @@ -139,7 +139,7 @@ class Target_x86_64 : public Sized_target<64, false> // Return whether SYM is defined by the ABI. bool - do_is_defined_by_abi(Symbol* sym) const + do_is_defined_by_abi(const Symbol* sym) const { return strcmp(sym->name(), "__tls_get_addr") == 0; } // Return the size of the GOT section. |