Subject: Re: libm and libc
To: Aymeric Vincent <xmimic@free.fr>
From: Klaus Klein <kleink@uni-trier.de>
List: tech-userlevel
Date: 05/26/2001 17:22:24
Aymeric Vincent <xmimic@free.fr> writes:
> I would like libm to be independant of the standard C library.
>
> It looks like libc defines __infinity, isinf() and the like. Why is
> that?
There are two different reasons for those two symbols:
* While X/Open states that portable application must link against
libm in order to make visible functions from <math.h>, it does
not state this for symbolic constants from <math.h>. Needing
to link against libm to use HUGE_VAL isn't what I'd expect.
(Of course there are other ways to implement this, one of them being
moving this into <machine/math.h>.)
* isinf() and isnan() needed within libc itself, and libc must not
depend on libm.
> If it's necessary for some standard compliance, would it be possible
> to redefine those symbols as weak symbols in libm?
>
> [ I'm trying to use a program in C++/Java which uses the math lib, but
> doesn't import our libc since the jdk runs in linux emulation ]
Given that libm actually depends on some of the more critical
internals of libc (i.e. __errno; __sF could be worked around) which
differ in their glibc implementations, it's not quite clear to me what
you would gain by including only __infinity and isinf()/isnan().
- Klaus