summaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2013-09-03 17:38:57 +0000
committerH.J. Lu <hjl.tools@gmail.com>2013-09-03 17:38:57 +0000
commit9af53dfa38807ec081aa85f9bb35bd8a1642caeb (patch)
treeb5a82e48564772593c9b3e7f2550f1874f05944d /gold
parent21eb1b7bca11c22890a0c9842acf41bd4c30c648 (diff)
downloadbinutils-redhat-9af53dfa38807ec081aa85f9bb35bd8a1642caeb.tar.gz
Use relative relocation for R_X86_64_32 on x32
2013-09-03 Pavel Chupin <pavel.v.chupin@intel.com> PR gold/15927 * x86_64.cc (Target_x86_64<size>::Scan::global): Use relative relocation for R_X86_64_32 on x32.
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/x86_64.cc3
2 files changed, 8 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index df61e9ccbd..ed8105d022 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2013-09-03 Pavel Chupin <pavel.v.chupin@intel.com>
+
+ PR gold/15927
+ * x86_64.cc (Target_x86_64<size>::Scan::global): Use relative
+ relocation for R_X86_64_32 on x32.
+
2013-08-27 Roland McGrath <mcgrathr@google.com>
* output.cc (Output_segment::set_section_addresses): Take new
diff --git a/gold/x86_64.cc b/gold/x86_64.cc
index dca6022271..5bf78fdef7 100644
--- a/gold/x86_64.cc
+++ b/gold/x86_64.cc
@@ -2742,7 +2742,8 @@ Target_x86_64<size>::Scan::global(Symbol_table* symtab,
reloc.get_r_offset(),
reloc.get_r_addend());
}
- else if (r_type == elfcpp::R_X86_64_64
+ else if (((size == 64 && r_type == elfcpp::R_X86_64_64)
+ || (size == 32 && r_type == elfcpp::R_X86_64_32))
&& gsym->can_use_relative_reloc(false))
{
Reloc_section* rela_dyn = target->rela_dyn_section(layout);