[RFC] MIPS ABI Extension for IEEE Std 754 Non-Compliant Interlinking
Sat Nov 14 16:06:00 GMT 2015
> 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.
More information about the Binutils