glewis at eyesbeyond.com
Wed Feb 4 22:25:43 PST 2009
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?
It will work, but it basically works by accident. Which is what it does
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
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>
> -#include <machine/endian.h>
> #include "jfdlibm.h"
Greg Lewis Email : glewis at eyesbeyond.com
Eyes Beyond Web : http://www.eyesbeyond.com
Information Technology FreeBSD : glewis at FreeBSD.org
More information about the bsd-port-dev