[kaffe] libraries/clib/net/InetAddressImpl.c cannot be compiled on old Linux

Ito Kazumitsu ito.kazumitsu@hitachi-cable.co.jp
Thu Jun 12 21:06:01 2003


This is what I did to make kaffe 1.1.0 work with Linux 2.0.38.

1.  tar xzvf kaffe-1.1.0.tar.gz
    cd kaffe-1.1.0

2.  Copy from CVS files added or modified since the release of kaffe 1.1.0.

3.  Modify some programs (patch attached below).

    libraries/clib/net/InetAddressImpl.c.orig
    libraries/clib/net/NetworkInterfaceImpl.c.orig
    libraries/clib/net/PlainSocketImpl.c.orig
    include/getaddrinfo.h.orig
    include/dummyin6.h.orig

4.  ./configure

5.  make 'CFLAGS=-Din_port_t=int -g -O2 -Wall -Wstrict-prototypes'
                 ^^^^^^^^^^^^^^^
6.  make check

And I got:

================================
2 of 136 tests failed
(1 tests were not run)
Please report to kaffe@kaffe.org
================================

Those tests which failed were:

FAIL: DoublePrint.java
FAIL: Reflect.java

"FAIL: DoublePrint.java" is a expected result.
And  diff test/regression/Reflect.out test/regression/Reflect.fail is

19c19
< Method: public static native void java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int)
---
> Method: public static void java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int)

which is natural because I used the rt.jar that comes with kaffe 1.1.0
release.

And below is my patch.

--- libraries/clib/net/InetAddressImpl.c.orig	Fri Jun 13 09:01:20 2003
+++ libraries/clib/net/InetAddressImpl.c	Fri Jun 13 11:35:41 2003
@@ -54,7 +54,7 @@
 	case java_net_InetAddressImpl_INET_ADDRESS_V4:
 		retval = AF_INET;
 		break;
-#if defined(AF_INET6)
+#if defined(AF_INET6) && !defined(FAKE_INET6)
 	case java_net_InetAddressImpl_INET_ADDRESS_V6:
 		retval = AF_INET6;
 		break;
@@ -120,7 +120,7 @@
 				       sizeof(ia));
 			}
 		}
-#if defined(AF_INET6)
+#if defined(AF_INET6) && !defined(FAKE_INET6)
 		if( retval == NULL )
 		{
 			struct in6_addr ia;
@@ -182,7 +182,7 @@
 			switch( curr->ai_family )
 			{
 			case PF_INET:
-#if defined(PF_INET6)
+#if defined(PF_INET6) && !defined(FAKE_INET6)
 			case PF_INET6:
 #endif
 				count += 1;
@@ -196,7 +196,7 @@
 		curr = ai;
 		while( curr && retval )
 		{
-#if defined(PF_INET6)
+#if defined(PF_INET6) && !defined(FAKE_INET6)
 			struct sockaddr_in6 *in6;
 #endif
 			struct sockaddr_in *in4;
@@ -222,7 +222,7 @@
 					retval = 0;
 				}
 				break;
-#if defined(PF_INET6)
+#if defined(PF_INET6) && !defined(FAKE_INET6)
 			case PF_INET6:
 				in6 = (struct sockaddr_in6 *)
 					curr->ai_addr;
@@ -377,7 +377,7 @@
 {
 #if defined(HAVE_GETADDRINFO)
 	struct Hjava_lang_String *retval = 0;
-#if defined(AF_INET6)
+#if defined(AF_INET6) && !defined(FAKE_INET6)
 	struct sockaddr_in6 sa_buf;
 	struct sockaddr_in6 *sin6 = &sa_buf;
 #else
@@ -403,7 +403,7 @@
 		sin->sin_port = 0;
 		memcpy(&sin->sin_addr, unhand_byte_array(addr), addr->length);
 		break;
-#if defined(AF_INET6)
+#if defined(AF_INET6) && !defined(FAKE_INET6)
 	case 16:
 #if defined(BSD44)
 		sin6->sin6_len = sizeof(struct sockaddr_in6);
@@ -518,7 +518,7 @@
 	case 4:
 		family = AF_INET;
 		break;
-#if defined(AF_INET6)
+#if defined(AF_INET6) && !defined(FAKE_INET6)
 	case 16:
 		family = AF_INET6;
 		break;
--- libraries/clib/net/NetworkInterfaceImpl.c.orig	Fri Jun 13 09:02:13 2003
+++ libraries/clib/net/NetworkInterfaceImpl.c	Fri Jun 13 11:35:55 2003
@@ -133,7 +133,7 @@
 					  NII_MAX_ADDRESS_SIZE);
 				retval = stringC2Java(addr);
 				break;
-#if defined(AF_INET6)
+#if defined(AF_INET6) && !defined(FAKE_INET6)
 			case AF_INET6:
 				inet_ntop(sa->sa_family,
 					  &((struct sockaddr_in6 *)sa)->
--- libraries/clib/net/PlainSocketImpl.c.orig	Fri Jun 13 09:02:53 2003
+++ libraries/clib/net/PlainSocketImpl.c	Fri Jun 13 11:36:25 2003
@@ -322,7 +322,7 @@
 			       sizeof(addr.sin_addr));
 			break;
 
-#if notnow && defined(AF_INET6)
+#if notnow && defined(AF_INET6) && !defined(FAKE_INET6)
 		case AF_INET6:
 			remote_addr = (HArrayOfByte *)newArray(TYPE_CLASS(TYPE_Byte),
 							       sizeof(in6->sin6_addr));
--- include/getaddrinfo.h.orig	Fri Jun 13 08:49:18 2003
+++ include/getaddrinfo.h	Fri Jun 13 11:30:51 2003
@@ -137,6 +137,7 @@
 #define freeaddrinfo my_freeaddrinfo
 #define getaddrinfo my_getaddrinfo
 #define getnameinfo my_getnameinfo
+#define FAKE_INET6 1
 #endif
 
 /********************************************************************/
--- include/dummyin6.h.orig	Fri Jun 13 08:48:31 2003
+++ include/dummyin6.h	Fri Jun 13 11:48:15 2003
@@ -72,7 +72,9 @@
 struct sockaddr_in6 {
     sa_family_t sin6_family;
     in_port_t sin6_port;
+    int sin6_flowinfo;               /* fake */
     struct in6_addr sin6_addr;
+    int sin6_scope_id;               /* fake */
 };
 #endif