Greg,
It has been a few months since I was looking at this. Did you ever find the more extensive patches to fix this issue?
With the release of IcedTea 1.11 I am once again trying to compile the bsd-port repo on linux using IcedTea.
Michael
G'day Michael,
It will work, but it basically works by accident. Which is what it does
On Wed, Feb 04, 2009 at 08:37:03PM -0500, Michael Franz wrote:
> I have been working on compiling the bsd-port repo on linux and ran into the
> following issue. fdlibm.h includes machine/endian.h, this does not work on
> linux, there is no such file. I removed the include and it works find on OS
> X. Based on the limited research I did, including machine/endian.h should
> not be done. sys/types.h should be used instead.
>
> I have included the patch to remove the un-necessary include. Can this
> someone test this on the other BSDs?
now anyway. We did have more extensive patches to this file in an earlier
port that made it work correctly, I'll see if I can dig them out.
If you look at what the code does, it basically checks for _LITTLE_ENDIAN
being defined as an indicator that this is a little endian platform. This
is incorrect on BSD (except for maybe OS X) since both _LITTLE_ENDIAN and
_BIG_ENDIAN are defined on all architectures and to determine the
endianness the correct thing to do is to check on BYTE_ORDER. It happens
to work right now because there are no supported big endian platforms that
Java has been ported to for BSD.
I'm not sure how this works on OS X either before or after your change
since machine/endian.h on OS X (or rather i386/endian.h) doesn't appear
to define _LITTLE_ENDIAN (but rather __DARWIN_LITTLE_ENDIAN).
I think the right thing probably looks something like
#ifdef _ALLBSD_SOURCE
#include <machine/endian.h>
#elif __linux__
#include <endian.h>
#endif
And then where it currently does '#ifdef _LITTLE_ENDIAN' instead do
#if (defined(__solaris__) && defined(_LITTLE_ENDIAN)) || \
BYTE_ORDER == LITTLE_ENDIAN
but I haven't tried that or dug out our previous changes.
--
> --- a/src/share/native/java/lang/fdlibm/include/fdlibm.h Tue Oct 28
> 20:35:48 2008 -0400
> +++ b/src/share/native/java/lang/fdlibm/include/fdlibm.h Wed Feb 04
> 20:32:35 2009 -0500
> @@ -27,7 +27,6 @@
> #ifdef __OpenBSD__
> #include <sys/types.h>
> #endif
> -#include <machine/endian.h>
> #include "jfdlibm.h"
>
Greg Lewis Email : glewis@eyesbeyond.com
Eyes Beyond Web : http://www.eyesbeyond.com
Information Technology FreeBSD : glewis@FreeBSD.org