Re: [PATCH 3/4] In _IEEE_LIBM mode, use weak symbols instead of wrapper funcs

Joel Sherrill <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAF9ehCXiV9AVeQBYeAtr-WjaFg1vVjyX4O2jTyxUHNq+XaFWGA@mail.gmail.com>
On Mon, Aug 27, 2018 at 2:23 PM, Craig Howland <[email protected]>
wrote:

> On 08/27/2018 02:32 PM, [email protected] wrote:
>
>> From: Keith Packard <[email protected]>
>>
>> When the math library is compiled to just use bare IEEE_LIBM mode, many
>> public functions are just wrappers around the __ieee754 version.
>> Eliminate the extra function by creating a weak alias symbol for the
>> public name directly from the ieee754 name.
>>
>> Signed-off-by: Keith Packard <[email protected]>
>> ---
>>   newlib/libm/math/e_acos.c       |  5 +++++
>>   ...
>>   86 files changed, 360 insertions(+), 197 deletions(-)
>>
>> diff --git a/newlib/libm/math/e_acos.c b/newlib/libm/math/e_acos.c
>> index 319b1d56f..25509c0f0 100644
>> --- a/newlib/libm/math/e_acos.c
>> +++ b/newlib/libm/math/e_acos.c
>> @@ -59,6 +59,11 @@ qS2 =  2.02094576023350569471e+00, /* 0x40002AE5,
>> 0x9C598AC8 */
>>   qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
>>   qS4 =  7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
>>   +#ifdef _IEEE_LIBM
>> +double acos(double x)
>> +       __attribute__((weak, alias("__ieee754_acos")));
>> +#endif
>> +
>>   #ifdef __STDC__
>>         double __ieee754_acos(double x)
>>   #else
>> ...
>>
> While this is a nice idea, it is a problem for targets which don't support
> weak aliases (i.e. those without proper object file support for them).
> (Does anyone know for certain if this is a real problem instead of just a
> theoretical one?  (I'd guess so.)  All my Newlib targets are ELF.)  An
> alternative implementation could be macro definitions in math.h.


My suggestion is to use the macro __weak_reference() from newlib's
sys/cdefs.h which appears to account for ELF and not-ELF.

This is from FreeBSD so I would have confidence that they got it right.

--joel


>
> Craig
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.