aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog5
-rw-r--r--gold/sparc.cc14
2 files changed, 19 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index b65da03..98d5d6a 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -4,6 +4,11 @@
unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
relocation helper function.
+ * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
+ just like R_SPARC_GOT{10,13,22}.
+ (Target_sparc::Scan::local): Likewise.
+ (Target_sparc::Relocate:relocate): Likewise.
+
2010-02-06 Ian Lance Taylor <iant@google.com>
* configure.ac: Rewrite targetobjs duplicate removal code to use
diff --git a/gold/sparc.cc b/gold/sparc.cc
index 4cef8d86..9bca176 100644
--- a/gold/sparc.cc
+++ b/gold/sparc.cc
@@ -1703,6 +1703,9 @@ Target_sparc<size, big_endian>::Scan::local(
case elfcpp::R_SPARC_PC22:
break;
+ case elfcpp::R_SPARC_GOTDATA_OP:
+ case elfcpp::R_SPARC_GOTDATA_OP_HIX22:
+ case elfcpp::R_SPARC_GOTDATA_OP_LOX10:
case elfcpp::R_SPARC_GOT10:
case elfcpp::R_SPARC_GOT13:
case elfcpp::R_SPARC_GOT22:
@@ -2070,6 +2073,9 @@ Target_sparc<size, big_endian>::Scan::global(
}
break;
+ case elfcpp::R_SPARC_GOTDATA_OP:
+ case elfcpp::R_SPARC_GOTDATA_OP_HIX22:
+ case elfcpp::R_SPARC_GOTDATA_OP_LOX10:
case elfcpp::R_SPARC_GOT10:
case elfcpp::R_SPARC_GOT13:
case elfcpp::R_SPARC_GOT22:
@@ -2412,6 +2418,9 @@ Target_sparc<size, big_endian>::Relocate::relocate(
unsigned int got_offset = 0;
switch (r_type)
{
+ case elfcpp::R_SPARC_GOTDATA_OP:
+ case elfcpp::R_SPARC_GOTDATA_OP_HIX22:
+ case elfcpp::R_SPARC_GOTDATA_OP_LOX10:
case elfcpp::R_SPARC_GOT10:
case elfcpp::R_SPARC_GOT13:
case elfcpp::R_SPARC_GOT22:
@@ -2526,10 +2535,15 @@ Target_sparc<size, big_endian>::Relocate::relocate(
Reloc::lo10(view, got_offset, addend);
break;
+ case elfcpp::R_SPARC_GOTDATA_OP:
+ break;
+
+ case elfcpp::R_SPARC_GOTDATA_OP_LOX10:
case elfcpp::R_SPARC_GOT13:
Reloc::rela32_13(view, got_offset, addend);
break;
+ case elfcpp::R_SPARC_GOTDATA_OP_HIX22:
case elfcpp::R_SPARC_GOT22:
Reloc::hi22(view, got_offset, addend);
break;