This is the mail archive of the
mailing list for the binutils project.
Re: [RFC] MIPS ABI Extension for IEEE Std 754 Non-Compliant Interlinking
- From: Cary Coutant <ccoutant at gmail dot com>
- To: "Maciej W. Rozycki" <macro at imgtec dot com>
- Cc: linux-mips at linux-mips dot org, libc-alpha at sourceware dot org, Binutils <binutils at sourceware dot org>, GCC Development <gcc at gcc dot gnu dot org>, Matthew Fortune <Matthew dot Fortune at imgtec dot com>, Daniel Sanders <Daniel dot Sanders at imgtec dot com>, Leonid Yegoshin <Leonid dot Yegoshin at imgtec dot com>
- Date: Sat, 14 Nov 2015 08:06:33 -0800
- Subject: Re: [RFC] MIPS ABI Extension for IEEE Std 754 Non-Compliant Interlinking
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot DEB dot 2 dot 00 dot 1511140411050 dot 7097 at tp dot orcam dot me dot uk>
> 3.3.2 Static Linking Object Acceptance Rules
> The static linker shall follow the user selection as to the linking mode
> used, either of `strict' and `relaxed'. The selection will be made
> according to the usual way assumed for the environment used, which may be
> a command-line option, a property setting, etc.
> In the `strict' linking mode both `strict' and `legacy' objects can be
> linked together. All shall follow the same legacy-NaN or 2008-NaN ABI, as
> denoted by the EF_MIPS_NAN2008 flag described in Section 3.1. The value
> of the flag shall be the same across all the objects linked together. The
> output of a link involving any `strict' objects shall be marked as
> `strict'. No `relaxed' objects shall be allowed in the same link.
> In the `relaxed' linking mode any `strict', `relaxed' and `legacy'
> objects can be linked together, regardless of the value of their
> EF_MIPS_NAN2008 flag. If the flag has the same value across all objects
> linked, then the value shall be propagated to the binary produced. The
> output shall be marked as `relaxed'. It is recommended that the linker
> provides a way to warn the user whenever a `relaxed' link is made of
> `strict' and `legacy' objects only.
This paragraph first says that "If the flag has the same value across
all objects linked, then the value shall be propagated to the binary
produced", but then says the "output shall be marked as `relaxed'."
Are you missing an "Otherwise" there?
Early on in the document, you mention "this applies regardless of
whether it relies on the use of NaN data or IEEE Std 754 arithmetic in
the first place," yet your solution is only two-state. Wouldn't it be
better to have a three-state solution where objects that do not in
fact rely on the NaN representation at all can be marked as "don't
care"? Such objects could always be mixed with either strict or
relaxed objects, regardless of linking mode.