This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
RE: [MIPS] Reserve a .gnu_attribute value
- From: "Maciej W. Rozycki" <macro at linux-mips dot org>
- To: "Moore, Catherine" <Catherine_Moore at mentor dot com>
- Cc: Richard Sandiford <rdsandiford at googlemail dot com>, Richard Sandiford <richard dot sandiford at arm dot com>, "binutils at sourceware dot org" <binutils at sourceware dot org>, "andrew dot bennett at imgtec dot com" <andrew dot bennett at imgtec dot com>, Matthew Fortune <Matthew dot Fortune at imgtec dot com>
- Date: Thu, 9 Jul 2015 20:57:43 +0100 (BST)
- Subject: RE: [MIPS] Reserve a .gnu_attribute value
- Authentication-results: sourceware.org; auth=none
- References: <FD3DCEAC5B03E9408544A1E416F112420192C36A82 at NA-MBX-01 dot mgc dot mentorg dot com> <87mvzqbzne dot fsf at e105548-lin dot cambridge dot arm dot com> <FD3DCEAC5B03E9408544A1E416F112420192C3C84C at NA-MBX-01 dot mgc dot mentorg dot com> <87wpyatqvn dot fsf at googlemail dot com> <alpine dot LFD dot 2 dot 11 dot 1507082004480 dot 31060 at eddie dot linux-mips dot org> <FD3DCEAC5B03E9408544A1E416F112420192C3C93B at NA-MBX-01 dot mgc dot mentorg dot com>
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