[MIPS] Reserve a .gnu_attribute value
Maciej W. Rozycki
macro@linux-mips.org
Thu Jul 9 19:57:00 GMT 2015
On Wed, 8 Jul 2015, Moore, Catherine wrote:
> > > > diff --git a/binutils/readelf.c b/binutils/readelf.c index
> > > > 398a165..86cfd26 100644
> > > > --- a/binutils/readelf.c
> > > > +++ b/binutils/readelf.c
> > > > @@ -13197,6 +13197,9 @@ print_mips_fp_abi_value (int val)
> > > > case Val_GNU_MIPS_ABI_FP_64A:
> > > > printf (_("Hard float compat (32-bit CPU, 64-bit FPU)\n"));
> > > > break;
> > > > + case Val_GNU_MIPS_ABI_FP_NAN2008 :
> > > > + printf (_("NaN 2008 compatibility\n"));
> > > > + break;
> > >
> > > No space before ":"
> > >
> > > OK with that change, thanks.
> >
> > Shouldn't there be more case values? `Val_GNU_MIPS_ABI_FP_NAN2008'
> > was ORed with the lower bits, e.g. `Val_GNU_MIPS_ABI_FP_DOUBLE'.
>
> I'm trying to provide a minimal implementation that will ensure that
> Val_GNU_MIPS_ABI_FP_NAN2008 doesn't get used for anything else. There
> isn't anything in the upstream repository that will generate or use that
> bit unless it's by mistake. I thought it would be best to have readelf
> just indicate that the bit was in use.
Sure, however as proposed with your change `Val_GNU_MIPS_ABI_FP_NAN2008'
is merely an enum value, it does not indicate in any way that the whole
8-15 range has indeed been taken.
Also 0 is `Val_GNU_MIPS_ABI_FP_ANY' i.e. usually (in code generated by
recent GCC) means no-fp, so consequently the value of 8 won't normally be
there. The usual case will be 9, for `Val_GNU_MIPS_ABI_FP_DOUBLE' and
2008 NaN; `Val_GNU_MIPS_ABI_FP_SINGLE' and consequently 10 is also a
reasonable case. For these values `???' will still be printed.
FAOD I don't want to be a hindrance for you with this change, I just
wonder if we can do a better job to cheaply avoid a potential ABI clash
here. It's not like we're short of numeric values available, wasting 8 of
them is I think not a big deal.
Maybe simply masking the bit/value out in `print_mips_fp_abi_value' and
merely documenting the range in include/elf/mips.h will be a better way?
This way the FP ABI will be reported correctly and you'll still have the
EF_MIPS_NAN2008 ELF file header bit to tell legacy- and 2008-NaN binaries
apart. Win-win?
Maciej
More information about the Binutils
mailing list