forked from Imagelibrary/binutils-gdb
PR 9918
* target-reloc.h (relocate_section): Pass output_section to relocate. * i386.cc (Target_i386::should_apply_static_reloc): Add output_section parameter. Change all callers. (Target_i386::Relocate::relocate): Add output_section parameter. * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise. * sparc.cc (Target_sparc::Relocate::relocate): Likewise. * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise. * testsuite/two_file_shared.sh: New script. * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh. (check_DATA): Add two_file_shared.dbg. (two_file_shared.dbg): New target. * testsuite/Makefile.in: Rebuild.
This commit is contained in:
@@ -1,3 +1,20 @@
|
||||
2009-03-03 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
PR 9918
|
||||
* target-reloc.h (relocate_section): Pass output_section to
|
||||
relocate.
|
||||
* i386.cc (Target_i386::should_apply_static_reloc): Add
|
||||
output_section parameter. Change all callers.
|
||||
(Target_i386::Relocate::relocate): Add output_section parameter.
|
||||
* x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
|
||||
* sparc.cc (Target_sparc::Relocate::relocate): Likewise.
|
||||
* powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
|
||||
* testsuite/two_file_shared.sh: New script.
|
||||
* testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
|
||||
(check_DATA): Add two_file_shared.dbg.
|
||||
(two_file_shared.dbg): New target.
|
||||
* testsuite/Makefile.in: Rebuild.
|
||||
|
||||
2009-03-01 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* configure.ac: Check for byteswap.h.
|
||||
|
||||
33
gold/i386.cc
33
gold/i386.cc
@@ -214,13 +214,14 @@ class Target_i386 : public Sized_target<32, false>
|
||||
inline bool
|
||||
should_apply_static_reloc(const Sized_symbol<32>* gsym,
|
||||
int ref_flags,
|
||||
bool is_32bit);
|
||||
bool is_32bit,
|
||||
Output_section* output_section);
|
||||
|
||||
// Do a relocation. Return false if the caller should not issue
|
||||
// any warnings about this relocation.
|
||||
inline bool
|
||||
relocate(const Relocate_info<32, false>*, Target_i386*, size_t relnum,
|
||||
const elfcpp::Rel<32, false>&,
|
||||
relocate(const Relocate_info<32, false>*, Target_i386*, Output_section*,
|
||||
size_t relnum, const elfcpp::Rel<32, false>&,
|
||||
unsigned int r_type, const Sized_symbol<32>*,
|
||||
const Symbol_value<32>*,
|
||||
unsigned char*, elfcpp::Elf_types<32>::Elf_Addr,
|
||||
@@ -1595,8 +1596,15 @@ Target_i386::do_finalize_sections(Layout* layout)
|
||||
inline bool
|
||||
Target_i386::Relocate::should_apply_static_reloc(const Sized_symbol<32>* gsym,
|
||||
int ref_flags,
|
||||
bool is_32bit)
|
||||
bool is_32bit,
|
||||
Output_section* output_section)
|
||||
{
|
||||
// If the output section is not allocated, then we didn't call
|
||||
// scan_relocs, we didn't create a dynamic reloc, and we must apply
|
||||
// the reloc here.
|
||||
if ((output_section->flags() & elfcpp::SHF_ALLOC) == 0)
|
||||
return true;
|
||||
|
||||
// For local symbols, we will have created a non-RELATIVE dynamic
|
||||
// relocation only if (a) the output is position independent,
|
||||
// (b) the relocation is absolute (not pc- or segment-relative), and
|
||||
@@ -1622,6 +1630,7 @@ Target_i386::Relocate::should_apply_static_reloc(const Sized_symbol<32>* gsym,
|
||||
inline bool
|
||||
Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
|
||||
Target_i386* target,
|
||||
Output_section *output_section,
|
||||
size_t relnum,
|
||||
const elfcpp::Rel<32, false>& rel,
|
||||
unsigned int r_type,
|
||||
@@ -1697,7 +1706,8 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
|
||||
break;
|
||||
|
||||
case elfcpp::R_386_32:
|
||||
if (should_apply_static_reloc(gsym, Symbol::ABSOLUTE_REF, true))
|
||||
if (should_apply_static_reloc(gsym, Symbol::ABSOLUTE_REF, true,
|
||||
output_section))
|
||||
Relocate_functions<32, false>::rel32(view, object, psymval);
|
||||
break;
|
||||
|
||||
@@ -1706,13 +1716,14 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
|
||||
int ref_flags = Symbol::NON_PIC_REF;
|
||||
if (gsym != NULL && gsym->type() == elfcpp::STT_FUNC)
|
||||
ref_flags |= Symbol::FUNCTION_CALL;
|
||||
if (should_apply_static_reloc(gsym, ref_flags, true))
|
||||
if (should_apply_static_reloc(gsym, ref_flags, true, output_section))
|
||||
Relocate_functions<32, false>::pcrel32(view, object, psymval, address);
|
||||
}
|
||||
break;
|
||||
|
||||
case elfcpp::R_386_16:
|
||||
if (should_apply_static_reloc(gsym, Symbol::ABSOLUTE_REF, false))
|
||||
if (should_apply_static_reloc(gsym, Symbol::ABSOLUTE_REF, false,
|
||||
output_section))
|
||||
Relocate_functions<32, false>::rel16(view, object, psymval);
|
||||
break;
|
||||
|
||||
@@ -1721,13 +1732,14 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
|
||||
int ref_flags = Symbol::NON_PIC_REF;
|
||||
if (gsym != NULL && gsym->type() == elfcpp::STT_FUNC)
|
||||
ref_flags |= Symbol::FUNCTION_CALL;
|
||||
if (should_apply_static_reloc(gsym, ref_flags, false))
|
||||
if (should_apply_static_reloc(gsym, ref_flags, false, output_section))
|
||||
Relocate_functions<32, false>::pcrel16(view, object, psymval, address);
|
||||
}
|
||||
break;
|
||||
|
||||
case elfcpp::R_386_8:
|
||||
if (should_apply_static_reloc(gsym, Symbol::ABSOLUTE_REF, false))
|
||||
if (should_apply_static_reloc(gsym, Symbol::ABSOLUTE_REF, false,
|
||||
output_section))
|
||||
Relocate_functions<32, false>::rel8(view, object, psymval);
|
||||
break;
|
||||
|
||||
@@ -1736,7 +1748,8 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
|
||||
int ref_flags = Symbol::NON_PIC_REF;
|
||||
if (gsym != NULL && gsym->type() == elfcpp::STT_FUNC)
|
||||
ref_flags |= Symbol::FUNCTION_CALL;
|
||||
if (should_apply_static_reloc(gsym, ref_flags, false))
|
||||
if (should_apply_static_reloc(gsym, ref_flags, false,
|
||||
output_section))
|
||||
Relocate_functions<32, false>::pcrel8(view, object, psymval, address);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -214,7 +214,8 @@ class Target_powerpc : public Sized_target<size, big_endian>
|
||||
// any warnings about this relocation.
|
||||
inline bool
|
||||
relocate(const Relocate_info<size, big_endian>*, Target_powerpc*,
|
||||
size_t relnum, const elfcpp::Rela<size, big_endian>&,
|
||||
Output_section*, size_t relnum,
|
||||
const elfcpp::Rela<size, big_endian>&,
|
||||
unsigned int r_type, const Sized_symbol<size>*,
|
||||
const Symbol_value<size>*,
|
||||
unsigned char*,
|
||||
@@ -1578,6 +1579,7 @@ inline bool
|
||||
Target_powerpc<size, big_endian>::Relocate::relocate(
|
||||
const Relocate_info<size, big_endian>* relinfo,
|
||||
Target_powerpc* target,
|
||||
Output_section*,
|
||||
size_t relnum,
|
||||
const elfcpp::Rela<size, big_endian>& rela,
|
||||
unsigned int r_type,
|
||||
|
||||
@@ -279,7 +279,9 @@ Sized_relobj<size, big_endian>::do_read_relocs(Read_relocs_data* rd)
|
||||
// PLT sections. Relocations for sections which are not
|
||||
// allocated (typically debugging sections) should not add new
|
||||
// GOT and PLT entries. So we skip them unless this is a
|
||||
// relocatable link or we need to emit relocations.
|
||||
// relocatable link or we need to emit relocations. FIXME: What
|
||||
// should we do if a linker script maps a section with SHF_ALLOC
|
||||
// clear to a section with SHF_ALLOC set?
|
||||
typename This::Shdr secshdr(pshdrs + shndx * This::shdr_size);
|
||||
bool is_section_allocated = ((secshdr.get_sh_flags() & elfcpp::SHF_ALLOC)
|
||||
!= 0);
|
||||
|
||||
@@ -232,7 +232,8 @@ class Target_sparc : public Sized_target<size, big_endian>
|
||||
// any warnings about this relocation.
|
||||
inline bool
|
||||
relocate(const Relocate_info<size, big_endian>*, Target_sparc*,
|
||||
size_t relnum, const elfcpp::Rela<size, big_endian>&,
|
||||
Output_section*, size_t relnum,
|
||||
const elfcpp::Rela<size, big_endian>&,
|
||||
unsigned int r_type, const Sized_symbol<size>*,
|
||||
const Symbol_value<size>*,
|
||||
unsigned char*,
|
||||
@@ -2356,6 +2357,7 @@ inline bool
|
||||
Target_sparc<size, big_endian>::Relocate::relocate(
|
||||
const Relocate_info<size, big_endian>* relinfo,
|
||||
Target_sparc* target,
|
||||
Output_section*,
|
||||
size_t relnum,
|
||||
const elfcpp::Rela<size, big_endian>& rela,
|
||||
unsigned int r_type,
|
||||
|
||||
@@ -268,8 +268,9 @@ relocate_section(
|
||||
psymval = &symval;
|
||||
}
|
||||
|
||||
if (!relocate.relocate(relinfo, target, i, reloc, r_type, sym, psymval,
|
||||
view + offset, view_address + offset, view_size))
|
||||
if (!relocate.relocate(relinfo, target, output_section, i, reloc,
|
||||
r_type, sym, psymval, view + offset,
|
||||
view_address + offset, view_size))
|
||||
continue;
|
||||
|
||||
if (offset < 0 || static_cast<section_size_type>(offset) >= view_size)
|
||||
|
||||
@@ -226,6 +226,11 @@ 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_SCRIPTS += two_file_shared.sh
|
||||
check_DATA += 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
|
||||
|
||||
@@ -102,16 +102,53 @@ check_PROGRAMS = object_unittest$(EXEEXT) binary_unittest$(EXEEXT) \
|
||||
@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1) \
|
||||
@NATIVE_LINKER_FALSE@ $(am__DEPENDENCIES_1)
|
||||
|
||||
# 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_2 = two_file_shared.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ weak_plt.sh debug_msg.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ undef_symbol.sh ver_test_1.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_2.sh ver_test_4.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_5.sh ver_test_7.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ 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_3 = 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
|
||||
|
||||
# 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_2 = two_file_shared_1_nonpic_test \
|
||||
@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_4 = 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_3 = two_file_strip_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_5 = 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 \
|
||||
@@ -155,44 +192,9 @@ check_PROGRAMS = object_unittest$(EXEEXT) binary_unittest$(EXEEXT) \
|
||||
@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_4 = weak_undef_nonpic_test
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_5 = weak_alias_test weak_plt \
|
||||
@FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_6 = weak_undef_nonpic_test
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_7 = weak_alias_test weak_plt \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ copy_test
|
||||
|
||||
# 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_6 = weak_plt.sh debug_msg.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ undef_symbol.sh ver_test_1.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_2.sh ver_test_4.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_5.sh ver_test_7.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ 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_7 = weak_plt_shared.so \
|
||||
@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_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@@TLS_TRUE@am__append_8 = tls_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_pic_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@ tls_shared_test \
|
||||
@@ -1154,8 +1156,8 @@ MOSTLYCLEANFILES = *.so $(am__append_16) $(am__append_23)
|
||||
# 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_6) $(am__append_21)
|
||||
check_DATA = $(am__append_7) $(am__append_22)
|
||||
check_SCRIPTS = $(am__append_2) $(am__append_21)
|
||||
check_DATA = $(am__append_3) $(am__append_22)
|
||||
BUILT_SOURCES = $(am__append_14)
|
||||
TESTS = $(check_SCRIPTS) $(check_PROGRAMS)
|
||||
|
||||
@@ -2205,6 +2207,8 @@ uninstall-am: uninstall-info-am
|
||||
@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_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
|
||||
|
||||
30
gold/testsuite/two_file_shared.sh
Executable file
30
gold/testsuite/two_file_shared.sh
Executable file
@@ -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 <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.
|
||||
|
||||
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
|
||||
@@ -227,8 +227,8 @@ class Target_x86_64 : public Sized_target<64, false>
|
||||
// Do a relocation. Return false if the caller should not issue
|
||||
// any warnings about this relocation.
|
||||
inline bool
|
||||
relocate(const Relocate_info<64, false>*, Target_x86_64*, size_t relnum,
|
||||
const elfcpp::Rela<64, false>&,
|
||||
relocate(const Relocate_info<64, false>*, Target_x86_64*, Output_section*,
|
||||
size_t relnum, const elfcpp::Rela<64, false>&,
|
||||
unsigned int r_type, const Sized_symbol<64>*,
|
||||
const Symbol_value<64>*,
|
||||
unsigned char*, elfcpp::Elf_types<64>::Elf_Addr,
|
||||
@@ -1692,6 +1692,7 @@ Target_x86_64::do_finalize_sections(Layout* layout)
|
||||
inline bool
|
||||
Target_x86_64::Relocate::relocate(const Relocate_info<64, false>* relinfo,
|
||||
Target_x86_64* target,
|
||||
Output_section*,
|
||||
size_t relnum,
|
||||
const elfcpp::Rela<64, false>& rela,
|
||||
unsigned int r_type,
|
||||
|
||||
Reference in New Issue
Block a user