Patch for PR gold/19042 - unsupported reloc 311/312.

gold/

	* aarch64.cc (Target_aarch64::Scan::local): Add support for
	reloc 311/312.
This commit is contained in:
Han Shen 2015-10-27 15:17:54 -07:00
parent b80c305316
commit 4d2f5d5824
2 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2015-10.27 Han Shen <shenhan@google.com>
PR gold/19042 - unsupported reloc 311/312.
* aarch64.cc (Target_aarch64::Scan::local): Add support for
reloc 311/312.
2015-10-22 H.J. Lu <hongjiu.lu@intel.com>
* x86_64.cc (Target_x86_64<size>::Scan::get_reference_flags):

View File

@ -5987,6 +5987,29 @@ Target_aarch64<size, big_endian>::Scan::local(
case elfcpp::R_AARCH64_PREL16:
break;
case elfcpp::R_AARCH64_ADR_GOT_PAGE:
case elfcpp::R_AARCH64_LD64_GOT_LO12_NC:
// This pair of relocations is used to access a specific GOT entry.
{
bool is_new = false;
// This symbol requires a GOT entry.
if (is_ifunc)
is_new = got->add_local_plt(object, r_sym, GOT_TYPE_STANDARD);
else
is_new = got->add_local(object, r_sym, GOT_TYPE_STANDARD);
if (is_new && parameters->options().output_is_position_independent())
target->rela_dyn_section(layout)->
add_local_relative(object,
r_sym,
elfcpp::R_AARCH64_RELATIVE,
got,
object->local_got_offset(r_sym,
GOT_TYPE_STANDARD),
0,
false);
}
break;
case elfcpp::R_AARCH64_LD_PREL_LO19: // 273
case elfcpp::R_AARCH64_ADR_PREL_LO21: // 274
case elfcpp::R_AARCH64_ADR_PREL_PG_HI21: // 275