[GOLD] Correct powerpc64 ifunc plt entry test

Found when attempting to build an ELFv2 Linux kernel.  We don't
generally need a plt entry for ELFv2 got relocs, only on ifunc, just
like ppc32.

	* powerpc.cc (Target_powerpc::Scan::local <got relocs>): Correct
	condition for need of ifunc plt entry.
	(Target_powerpc::Scan::global <got relocs>): Likewise.
This commit is contained in:
Alan Modra 2015-01-22 12:39:50 +10:30
parent b99e251379
commit b01a4b043a
2 changed files with 10 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2015-01-22 Alan Modra <amodra@gmail.com>
* powerpc.cc (Target_powerpc::Scan::local <got relocs>): Correct
condition for need of ifunc plt entry.
(Target_powerpc::Scan::global <got relocs>): Likewise.
2015-01-14 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
* mips.cc (reloc_high): Add r_sym.

View File

@ -5671,8 +5671,8 @@ Target_powerpc<size, big_endian>::Scan::local(
if (!parameters->options().output_is_position_independent())
{
if ((size == 32 && is_ifunc)
|| (size == 64 && target->abiversion() >= 2))
if (is_ifunc
&& (size == 32 || target->abiversion() >= 2))
got->add_local_plt(object, r_sym, GOT_TYPE_STANDARD);
else
got->add_local(object, r_sym, GOT_TYPE_STANDARD);
@ -6119,8 +6119,8 @@ Target_powerpc<size, big_endian>::Scan::global(
got = target->got_section(symtab, layout);
if (gsym->final_value_is_known())
{
if ((size == 32 && is_ifunc)
|| (size == 64 && target->abiversion() >= 2))
if (is_ifunc
&& (size == 32 || target->abiversion() >= 2))
got->add_global_plt(gsym, GOT_TYPE_STANDARD);
else
got->add_global(gsym, GOT_TYPE_STANDARD);