Don't make PLT entry for R_X86_64_GOTPLT64

* x86_64.cc (Target_x86_64<size>::Scan::global): Don't make PLT
	entry for R_X86_64_GOTPLT64.
	(Target_x86_64<size>::Relocate::relocate): Update comments for
	R_X86_64_GOTPLT64.
This commit is contained in:
H.J. Lu 2014-11-13 11:36:57 -08:00
parent 355e210214
commit e88ba8d569
2 changed files with 9 additions and 7 deletions

View file

@ -1,3 +1,10 @@
2014-11-13 H.J. Lu <hongjiu.lu@intel.com>
* x86_64.cc (Target_x86_64<size>::Scan::global): Don't make PLT
entry for R_X86_64_GOTPLT64.
(Target_x86_64<size>::Relocate::relocate): Update comments for
R_X86_64_GOTPLT64.
2014-11-06 Evgeniy Dushistov <dushistov@mail.ru>
* plugin.cc: use lock to searialize calls of Plugin_manager::claim_file

View file

@ -2923,11 +2923,6 @@ Target_x86_64<size>::Scan::global(Symbol_table* symtab,
}
}
}
// For GOTPLT64, we also need a PLT entry (but only if the
// symbol is not fully resolved).
if (r_type == elfcpp::R_X86_64_GOTPLT64
&& !gsym->final_value_is_known())
target->make_plt_entry(symtab, layout, gsym);
}
break;
@ -3454,9 +3449,9 @@ Target_x86_64<size>::Relocate::relocate(
break;
case elfcpp::R_X86_64_GOT64:
// The ABI doc says "Like GOT64, but indicates a PLT entry is needed."
// Since we always add a PLT entry, this is equivalent.
case elfcpp::R_X86_64_GOTPLT64:
// R_X86_64_GOTPLT64 is obsolete and treated the the same as
// GOT64.
gold_assert(have_got_offset);
Relocate_functions<size, false>::rela64(view, got_offset, addend);
break;