This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PowerPC64 st_other decoding in readelf
- From: Alan Modra <amodra at gmail dot com>
- To: binutils at sourceware dot org
- Date: Fri, 24 Aug 2018 00:24:22 +0930
- Subject: 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.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index a936ff3758..2d9d48d002 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -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;
--
Alan Modra
Australia Development Lab, IBM