aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/powerpc.cc10
2 files changed, 16 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index f600b84..8ccb431 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2014-03-05 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::Scan::local, global): Support
+ R_PPC64_ADDR64_LOCAL.
+ (Target_powerpc::Relocate::relocate): Likewise.
+
2014-03-03 Alan Modra <amodra@gmail.com>
* dwp.cc (print_version): Update copyright year to current.
diff --git a/gold/powerpc.cc b/gold/powerpc.cc
index 1aa4791..8130149 100644
--- a/gold/powerpc.cc
+++ b/gold/powerpc.cc
@@ -5482,6 +5482,7 @@ Target_powerpc<size, big_endian>::Scan::local(
case elfcpp::R_PPC64_DTPREL16_HIGHESTA:
case elfcpp::R_PPC64_TLSGD:
case elfcpp::R_PPC64_TLSLD:
+ case elfcpp::R_PPC64_ADDR64_LOCAL:
break;
case elfcpp::R_POWERPC_GOT16:
@@ -5928,6 +5929,7 @@ Target_powerpc<size, big_endian>::Scan::global(
case elfcpp::R_PPC64_DTPREL16_HIGHESTA:
case elfcpp::R_PPC64_TLSGD:
case elfcpp::R_PPC64_TLSLD:
+ case elfcpp::R_PPC64_ADDR64_LOCAL:
break;
case elfcpp::R_POWERPC_GOT16:
@@ -7137,6 +7139,13 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
value -= dtp_offset;
break;
+ case elfcpp::R_PPC64_ADDR64_LOCAL:
+ if (gsym != NULL)
+ value += object->ppc64_local_entry_offset(gsym);
+ else
+ value += object->ppc64_local_entry_offset(r_sym);
+ break;
+
default:
break;
}
@@ -7339,6 +7348,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
case elfcpp::R_PPC64_ADDR64:
case elfcpp::R_PPC64_REL64:
case elfcpp::R_PPC64_TOC:
+ case elfcpp::R_PPC64_ADDR64_LOCAL:
Reloc::addr64(view, value);
break;