mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
PR gold/12324
* x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error for R_X86_64_32 and R_X86_64_PC32. * testsuite/Makefile.am (ver_matching_def.so): Depend on and use ver_matching_def_pic.o. (ver_matching_def_pic.o): New target.
This commit is contained in:
parent
02ecc8e968
commit
2fbb4320ca
@ -1,3 +1,12 @@
|
||||
2010-12-15 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
PR gold/12324
|
||||
* x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
|
||||
for R_X86_64_32 and R_X86_64_PC32.
|
||||
* testsuite/Makefile.am (ver_matching_def.so): Depend on and use
|
||||
ver_matching_def_pic.o.
|
||||
(ver_matching_def_pic.o): New target.
|
||||
|
||||
2010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* fileread.cc (file_counts_lock, file_counts_initialize_lock)
|
||||
|
@ -1146,8 +1146,10 @@ binary.txt: $(srcdir)/binary.in
|
||||
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 $(srcdir)/version_script.map gcctestdir/ld
|
||||
$(CXXLINK) -O0 -Bgcctestdir/ -shared $(srcdir)/ver_matching_def.cc -Wl,--version-script=$(srcdir)/version_script.map
|
||||
ver_matching_def.so: ver_matching_def_pic.o $(srcdir)/version_script.map gcctestdir/ld
|
||||
$(CXXLINK) -O0 -Bgcctestdir/ -shared ver_matching_def_pic.o -Wl,--version-script=$(srcdir)/version_script.map
|
||||
ver_matching_def_pic.o: ver_matching_def.cc
|
||||
$(CXXCOMPILE) -O0 -c -fpic -o $@ $<
|
||||
ver_matching_test.stdout: ver_matching_def.so
|
||||
$(TEST_OBJDUMP) -T ver_matching_def.so | $(TEST_CXXFILT) > ver_matching_test.stdout
|
||||
|
||||
|
@ -4215,8 +4215,10 @@ uninstall-am:
|
||||
@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 $(srcdir)/version_script.map 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_def.so: ver_matching_def_pic.o $(srcdir)/version_script.map gcctestdir/ld
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -O0 -Bgcctestdir/ -shared ver_matching_def_pic.o -Wl,--version-script=$(srcdir)/version_script.map
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_matching_def_pic.o: ver_matching_def.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -O0 -c -fpic -o $@ $<
|
||||
@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
|
||||
|
@ -1329,7 +1329,8 @@ Target_x86_64::Scan::check_non_pic(Relobj* object, unsigned int r_type)
|
||||
{
|
||||
switch (r_type)
|
||||
{
|
||||
// These are the relocation types supported by glibc for x86_64.
|
||||
// These are the relocation types supported by glibc for x86_64
|
||||
// which should always work.
|
||||
case elfcpp::R_X86_64_RELATIVE:
|
||||
case elfcpp::R_X86_64_IRELATIVE:
|
||||
case elfcpp::R_X86_64_GLOB_DAT:
|
||||
@ -1338,9 +1339,18 @@ Target_x86_64::Scan::check_non_pic(Relobj* object, unsigned int r_type)
|
||||
case elfcpp::R_X86_64_DTPOFF64:
|
||||
case elfcpp::R_X86_64_TPOFF64:
|
||||
case elfcpp::R_X86_64_64:
|
||||
case elfcpp::R_X86_64_COPY:
|
||||
return;
|
||||
|
||||
// glibc supports these reloc types, but they can overflow.
|
||||
case elfcpp::R_X86_64_32:
|
||||
case elfcpp::R_X86_64_PC32:
|
||||
case elfcpp::R_X86_64_COPY:
|
||||
if (this->issued_non_pic_error_)
|
||||
return;
|
||||
gold_assert(parameters->options().output_is_position_independent());
|
||||
object->error(_("requires dynamic reloc which may overflow at runtime; "
|
||||
"recompile with -fPIC"));
|
||||
this->issued_non_pic_error_ = true;
|
||||
return;
|
||||
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user