[perl #34549] atan2() isn't IEEE compliant on OpenBSD/*BSD/Cygwin/Solaris
Rolf Grossmann
rg at progtech.net
Fri Mar 27 21:13:47 UTC 2009
Andy Dougherty wrote:
> On Solaris 8, here's how it seems to work:
[...]
Wow, you figured it out. Great work.
> For gcc, the file values-Xa.o appears to be hard-wired in to the
> built-in specs. The only way to change it appears to be to override it
> with a custom specs file. Hmm. That might not be too hard. We just
> create a file (I'll call it 'parrot-gcc.specs') with the following two
> lines:
>
> *startfile_arch:
> %{ansi:values-Xc.o%s} %{!ansi:values-xpg4.o%s}
>
> and then add -specs=parrot-gcc.specs to $linkflags.
> (if values-xi.o is available, that might be a better choice.)
I think xpg4 will be fine. Anything else will need to also figure out
if we're building 32bit or 64bit binaries and adjust the path aswell.
> It's not *too* messy. What do you think?
I think it's great.
> (Hmm. It might get messy
> for installation, however -- where do we put the specs file so that
> languages that build against parrot know how to pick it up?)
Just a little. We need to adjust the install_config.fpmc so that the
linker option points to the installed specs file (and of course install
the file). That way, the installed pbc_to_exe should pick it up, which
should work for languages. People embedding parrot should probably use
the compile flags from parrot_config, so they will be getting it
aswell. The only "mess" I can see is conditionally installing another file.
When I was building parrot to verify the fix actually works for parrot
aswell, I found one small remaining problem. When using g++ as the
linker, the values-xpg4 does not seem to have the expected effect. I've
verified with -v that it is actually used, still atan2 is giving the
wrong result. Can you verify that, and if so, do you have an idea
what's causing it?
RG.
PS: You can see the successful build at
http://smolder.plusthree.com/app/public_projects/report_details/19425
More information about the parrot-dev
mailing list