aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-10-20 00:33:31 +0000
committerIan Lance Taylor <iant@google.com>2007-10-20 00:33:31 +0000
commitdf2efe713a06aa0d0aa7dcd7850d97ea9fff85ec (patch)
tree955396326a9e391b884575fd39640c9db17fbf8c /gold
parent342dae88a71da570e66113cda581fb7c70b181e3 (diff)
downloadgdb-df2efe713a06aa0d0aa7dcd7850d97ea9fff85ec.zip
gdb-df2efe713a06aa0d0aa7dcd7850d97ea9fff85ec.tar.gz
gdb-df2efe713a06aa0d0aa7dcd7850d97ea9fff85ec.tar.bz2
Handle PLT32 against local symbols.
Diffstat (limited to 'gold')
-rw-r--r--gold/i386.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/gold/i386.cc b/gold/i386.cc
index e091f18..4532bfd 100644
--- a/gold/i386.cc
+++ b/gold/i386.cc
@@ -771,6 +771,11 @@ Target_i386::Scan::local(const General_options&,
case elfcpp::R_386_PC8:
break;
+ case elfcpp::R_386_PLT32:
+ // Since we know this is a local symbol, we can handle this as a
+ // PC32 reloc.
+ break;
+
case elfcpp::R_386_GOTOFF:
case elfcpp::R_386_GOTPC:
// We need a GOT section.
@@ -870,7 +875,6 @@ Target_i386::Scan::local(const General_options&,
}
break;
- case elfcpp::R_386_PLT32:
case elfcpp::R_386_32PLT:
case elfcpp::R_386_TLS_GD_32:
case elfcpp::R_386_TLS_GD_PUSH:
@@ -1276,8 +1280,9 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
break;
case elfcpp::R_386_PLT32:
- gold_assert(gsym->has_plt_offset()
- || gsym->final_value_is_known());
+ gold_assert(gsym == NULL
+ || gsym->has_plt_offset()
+ || gsym->final_value_is_known());
Relocate_functions<32, false>::pcrel32(view, object, psymval, address);
break;