Handle PLT32 against local symbols.

This commit is contained in:
Ian Lance Taylor 2007-10-20 00:33:31 +00:00
parent 342dae88a7
commit df2efe713a
1 changed files with 8 additions and 3 deletions

View File

@ -771,6 +771,11 @@ Target_i386::Scan::local(const General_options&,
case elfcpp::R_386_PC8: case elfcpp::R_386_PC8:
break; 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_GOTOFF:
case elfcpp::R_386_GOTPC: case elfcpp::R_386_GOTPC:
// We need a GOT section. // We need a GOT section.
@ -870,7 +875,6 @@ Target_i386::Scan::local(const General_options&,
} }
break; break;
case elfcpp::R_386_PLT32:
case elfcpp::R_386_32PLT: case elfcpp::R_386_32PLT:
case elfcpp::R_386_TLS_GD_32: case elfcpp::R_386_TLS_GD_32:
case elfcpp::R_386_TLS_GD_PUSH: case elfcpp::R_386_TLS_GD_PUSH:
@ -1276,8 +1280,9 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
break; break;
case elfcpp::R_386_PLT32: case elfcpp::R_386_PLT32:
gold_assert(gsym->has_plt_offset() gold_assert(gsym == NULL
|| gsym->final_value_is_known()); || gsym->has_plt_offset()
|| gsym->final_value_is_known());
Relocate_functions<32, false>::pcrel32(view, object, psymval, address); Relocate_functions<32, false>::pcrel32(view, object, psymval, address);
break; break;