Placement of signgam in libc instead of libm

Joel Sherrill joel@rtems.org
Thu Apr 20 21:20:25 GMT 2023


Hi

While double some checking that all references used by the long double math
routines Jennifer are resolved when linking, we have found a small oddity.

The file libc/reent/signgam.c is implemented as follows:

int *
__signgam (void)
{
  return &_REENT_SIGNGAM(_REENT);
}

When TLS is enabled, the macro _REENT_SIGNGAM resolves to
_tls_gamma_signgam which is in the file libm/math/w_lgamma.c. This creates
the first reference from libc to libm that I have ever seen and requires
explicitly linking with -lm -lc when using lgamma().

Would anyone be opposed to moving this method to libm/math?

--joel


More information about the Newlib mailing list