mirror of
https://github.com/openharmony/third_party_elfutils.git
synced 2026-07-18 17:24:31 -04:00
Add ppc64le ELFv2 abi support to backends and elflint.
The big endian vs little endian changes are already handled by detecting the EI_DATA data encoding. And the function descriptors are already not used when we see there is no .opd section. This change adds new checks for st_other bits, new relocations and recognizes DT_PPC64_OPT. Signed-off-by: Menanteau Guy <menantea@linux.vnet.ibm.com> Signed-off-by: Mark Wielaard <mjw@redhat.com>
This commit is contained in:
@@ -1,3 +1,14 @@
|
||||
2014-07-04 Menanteau Guy <menantea@linux.vnet.ibm.com>
|
||||
Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* ppc64_init.c (ppc64_init): Hook check_st_other_bits.
|
||||
* ppc64_reloc.def: TLSGD, TLSLD, TOCSAVE, ADDR16_HIGH, ADDR16_HIGHA,
|
||||
TPREL16_HIGH, TPREL16_HIGHA, DTPREL16_HIGH, DTPREL16_HIGHA, JMP_IREL,
|
||||
IRELATIVE, REL16, REL16_LO, REL16_HI and REL16_HA.
|
||||
* ppc64_symbol.c (ppc64_dynamic_tag_name): Recognize DT_PPC64_OPT.
|
||||
(ppc64_dynamic_tag_check): Likewise.
|
||||
(ppc64_check_st_other_bits): New function.
|
||||
|
||||
2014-07-04 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* aarch64_retval.c (aarch64_return_value_location): Handle
|
||||
|
||||
@@ -61,6 +61,7 @@ ppc64_init (elf, machine, eh, ehlen)
|
||||
HOOK (eh, machine_flag_check);
|
||||
HOOK (eh, copy_reloc_p);
|
||||
HOOK (eh, check_special_symbol);
|
||||
HOOK (eh, check_st_other_bits);
|
||||
HOOK (eh, bss_plt_p);
|
||||
HOOK (eh, return_value_location);
|
||||
HOOK (eh, register_info);
|
||||
|
||||
@@ -132,6 +132,21 @@ RELOC_TYPE (DTPREL16_HIGHER, REL)
|
||||
RELOC_TYPE (DTPREL16_HIGHERA, REL)
|
||||
RELOC_TYPE (DTPREL16_HIGHEST, REL)
|
||||
RELOC_TYPE (DTPREL16_HIGHESTA, REL)
|
||||
RELOC_TYPE (TLSGD, REL)
|
||||
RELOC_TYPE (TLSLD, REL)
|
||||
RELOC_TYPE (TOCSAVE, REL)
|
||||
RELOC_TYPE (ADDR16_HIGH, REL)
|
||||
RELOC_TYPE (ADDR16_HIGHA, REL)
|
||||
RELOC_TYPE (TPREL16_HIGH, REL)
|
||||
RELOC_TYPE (TPREL16_HIGHA, REL)
|
||||
RELOC_TYPE (DTPREL16_HIGH, REL)
|
||||
RELOC_TYPE (DTPREL16_HIGHA, REL)
|
||||
RELOC_TYPE (JMP_IREL, REL)
|
||||
RELOC_TYPE (IRELATIVE, REL)
|
||||
RELOC_TYPE (REL16, REL)
|
||||
RELOC_TYPE (REL16_LO, REL)
|
||||
RELOC_TYPE (REL16_HI, REL)
|
||||
RELOC_TYPE (REL16_HA, REL)
|
||||
|
||||
/* Notes from Alan Modra:
|
||||
|
||||
|
||||
+10
-1
@@ -72,6 +72,8 @@ ppc64_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)),
|
||||
return "PPC64_OPD";
|
||||
case DT_PPC64_OPDSZ:
|
||||
return "PPC64_OPDSZ";
|
||||
case DT_PPC64_OPT:
|
||||
return "PPC64_OPT";
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -84,7 +86,8 @@ ppc64_dynamic_tag_check (int64_t tag)
|
||||
{
|
||||
return (tag == DT_PPC64_GLINK
|
||||
|| tag == DT_PPC64_OPD
|
||||
|| tag == DT_PPC64_OPDSZ);
|
||||
|| tag == DT_PPC64_OPDSZ
|
||||
|| tag == DT_PPC64_OPT);
|
||||
}
|
||||
|
||||
|
||||
@@ -120,3 +123,9 @@ ppc64_machine_flag_check (GElf_Word flags)
|
||||
{
|
||||
return flags == 0 || flags == 1 || flags == 2;
|
||||
}
|
||||
|
||||
bool
|
||||
ppc64_check_st_other_bits (unsigned char st_other)
|
||||
{
|
||||
return (PPC64_LOCAL_ENTRY_OFFSET (st_other) != 0);
|
||||
}
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
2014-07-04 Menanteau Guy <menantea@linux.vnet.ibm.com>
|
||||
Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* elflint (check_symtab): Add ".TOC." to the list of possibly
|
||||
dangling symbols because of sourceware PR13621.
|
||||
|
||||
2014-06-14 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* elflint (check_symtab): Use ebl_func_addr_mask on st_value.
|
||||
|
||||
+2
-1
@@ -799,7 +799,8 @@ section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"),
|
||||
&& strcmp (name, "__fini_array_end") != 0
|
||||
&& strcmp (name, "__bss_start") != 0
|
||||
&& strcmp (name, "__bss_start__") != 0
|
||||
&& strcmp (name, "__TMC_END__") != 0))
|
||||
&& strcmp (name, "__TMC_END__") != 0
|
||||
&& strcmp (name, ".TOC.") != 0))
|
||||
ERROR (gettext ("\
|
||||
section [%2d] '%s': symbol %zu: st_value out of bounds\n"),
|
||||
idx, section_name (ebl, idx), cnt);
|
||||
|
||||
Reference in New Issue
Block a user