+2014-12-04 Alan Modra <amodra@gmail.com>
+
+ * Powerpc.cc (Target_powerpc::Branch_info::make_stub): Ignore
+ addend of PLTREL24 reloc when not generating a plt stub. Make
+ max_branch_offset an "Address".
+ (Target_powerpc::Relocate::relocate): Make max_branch_offset
+ an "Address".
+
2014-12-04 Alan Modra <amodra@gmail.com>
PR 17670
}
else
{
- unsigned long max_branch_offset;
+ Address max_branch_offset;
if (this->r_type_ == elfcpp::R_POWERPC_REL14
|| this->r_type_ == elfcpp::R_POWERPC_REL14_BRTAKEN
|| this->r_type_ == elfcpp::R_POWERPC_REL14_BRNTAKEN)
if (size == 64)
to += this->object_->ppc64_local_entry_offset(this->r_sym_);
}
- to += this->addend_;
+ if (!(size == 32 && this->r_type_ == elfcpp::R_PPC_PLTREL24))
+ to += this->addend_;
if (stub_table == NULL)
stub_table = this->object_->stub_table(this->shndx_);
if (size == 64 && target->abiversion() < 2)
else if (!has_stub_value)
{
Address addend = 0;
- if (r_type != elfcpp::R_PPC_PLTREL24)
+ if (!(size == 32 && r_type == elfcpp::R_PPC_PLTREL24))
addend = rela.get_r_addend();
value = psymval->value(object, addend);
if (size == 64 && is_branch_reloc(r_type))
&value, &dest_shndx);
}
}
- unsigned int max_branch_offset = 0;
+ Address max_branch_offset = 0;
if (r_type == elfcpp::R_POWERPC_REL24
|| r_type == elfcpp::R_PPC_PLTREL24
|| r_type == elfcpp::R_PPC_LOCAL24PC)