15046 – Math functions misdetected by cross configuration (original) (raw)
Description Daniel Jacobowitz 2004-04-21 15:54:40 UTC
crossconfig.m4 is pretty incomplete. The example I found was for GNU/Linux targeted crosses, but I suspect many of the others have the same problem; likewise, by inspection, I think that this problem is in 3.4 also (it worked in 3.3, and I haven't tested 3.4 yet).
The problem is that the -linux case doesn't define all the C99 math functions. This means that sqrtf is provided in libmath/stubs.o as (float) sqrt (val). sqrt is a call to __builtin_sqrt, which GCC expands to sqrtf, generating an infinite loop.
Comment 1 Drea Pinski 2004-04-21 17🔞59 UTC
Confirmed.
Comment 2 rittle 2004-04-23 02:36:43 UTC
Subject: Re: New: Math functions misdetected by cross configuration
crossconfig.m4 is pretty incomplete. The example I found was for GNU/Linux targeted crosses, but I suspect many of the others have the same problem; likewise, by inspection, I think that this problem is in 3.4 also (it worked in 3.3, and I haven't tested 3.4 yet). [...]
I think you are right. We expect target maintainers (for those targets which are usually crossed) to update the entries as they (re-)attempt ports. Sorry, but this is the protocol at the moment. Offhand, I don't recall why autoconf doesn't work here...
Regards, Loren
Comment 3 Daniel Jacobowitz 2004-04-23 03:38:37 UTC
Subject: Re: Math functions misdetected by cross configuration
Well, we can't use autoconf normally, because we can't necessarily run link tests. On the other hands:
- sometimes we can run link tests
- sometimes we could use compile tests instead; there's a macro to check for presence of a prototype. I may experiment with these...
Comment 4 Benjamin Kosnik 2004-05-13 17:19:27 UTC
You have to have both link and compile visibility. Compile-time bits are often obscured by defines on the compile line, FYI.
Here's a patch that fixes the linux crosses WRT C99 math. Give it a whirl, if you can, and I'll put it on gcc-3.4.0 if it works for you.
-benjamin
Comment 7 Drea Pinski 2004-05-15 23:41:53 UTC
Fixed for 3.4.1.
Comment 8 Daniel Jacobowitz 2004-05-18 19:51:48 UTC
Subject: Re: Math functions misdetected by cross configuration
Thanks. I tested the patch on arm-linux (better late than never), and now libstdc++-v3 contains the right set of stubs and no stubs which recursively call themselves.
Comment 9 Alexandre Oliva 2004-07-26 20:34:45 UTC
This patch actually breaks uclinux, since it doesn't provide a number of the functions defined here. Also, the problem of stub functions recursively calling themselves is not addressed at all. I suppose we may need some additional libstdc++ hackery to fix that.
Comment 10 Mark Mitchell 2004-08-29 18:55:10 UTC
Postponed until GCC 3.4.3.
Comment 11 Mark Mitchell 2004-11-01 00:46:13 UTC
Postponed until GCC 3.4.4.
Comment 12 Drea Pinski 2005-06-13 03:29:58 UTC
(In reply to comment #9)
This patch actually breaks uclinux, since it doesn't provide a number of the functions defined here. Also, the problem of stub functions recursively calling themselves is not addressed at all. I suppose we may need some additional libstdc++ hackery to fix that. But that is a bug in the configure which makes uclinux thinks it is a glibc, really there should be a different triplit for those targets.
Comment 13 Drea Pinski 2005-07-15 21:52:28 UTC
The orginal problem was fixed in 3.4.1. The next problem is in PR 20353.