PowerPC64 st_other decoding in readelf
localentry:1 is a valid encoding, so display it. The patch also bails out of get_ppc64_symbol_other when st_other bits besides the three used for localentry offsets are set, to avoid hiding any such values. * readelf.c (get_ppc64_symbol_other): Return NULL if st_other field contains unrecognised or reserved values. Handle localentry:1 value.
This commit is contained in:
parent
7dd36a6f1c
commit
14732552e7
2 changed files with 14 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
2018-08-23 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* readelf.c (get_ppc64_symbol_other): Return NULL if st_other
|
||||
field contains unrecognised or reserved values. Handle
|
||||
localentry:1 value.
|
||||
|
||||
2018-08-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/23536
|
||||
|
|
|
@ -11088,11 +11088,16 @@ get_ia64_symbol_other (Filedata * filedata, unsigned int other)
|
|||
static const char *
|
||||
get_ppc64_symbol_other (unsigned int other)
|
||||
{
|
||||
if (PPC64_LOCAL_ENTRY_OFFSET (other) != 0)
|
||||
if ((other & ~STO_PPC64_LOCAL_MASK) != 0)
|
||||
return NULL;
|
||||
|
||||
other >>= STO_PPC64_LOCAL_BIT;
|
||||
if (other <= 6)
|
||||
{
|
||||
static char buf[32];
|
||||
snprintf (buf, sizeof buf, _("<localentry>: %d"),
|
||||
PPC64_LOCAL_ENTRY_OFFSET (other));
|
||||
if (other >= 2)
|
||||
other = ppc64_decode_local_entry (other);
|
||||
snprintf (buf, sizeof buf, _("<localentry>: %d"), other);
|
||||
return buf;
|
||||
}
|
||||
return NULL;
|
||||
|
|
Loading…
Add table
Reference in a new issue