HotSpot Build Failure
David Schlosnagle
schlosna at gmail.com
Mon Aug 2 20:49:37 PDT 2010
On Mon, Aug 2, 2010 at 9:57 PM, John Yeary <johnyeary at gmail.com> wrote:
> I could not get the tip to build using Soylatte. I tried using my JDK7 build
> as the ALT_BOOTDIR from two days ago, and it fails to build from it too. Has
> anyone successfully built it since the code updates today? What did you use
> for your build script?
I pulled in all of today's bsd-port changes, ran a clean build using
[1] and encountered the following error [2] related to recent changes
to bsd-port/jdk/src/solaris/native/java/net/NetworkInterface.c [3]:
../../../src/solaris/native/java/net/NetworkInterface.c: In function
'getIndex':
../../../src/solaris/native/java/net/NetworkInterface.c:1832: error:
'SIOCGIFINDEX' undeclared (first use in this function)
../../../src/solaris/native/java/net/NetworkInterface.c:1832: error:
(Each undeclared identifier is reported only once
../../../src/solaris/native/java/net/NetworkInterface.c:1832: error:
for each function it appears in.)
../../../src/solaris/native/java/net/NetworkInterface.c:1836: error:
'struct ifreq' has no member named 'ifr_index'
make[5]: *** [/Users/david/Documents/dev/jdk/bsd-port/build/bsd-i586/tmp/sun/java.net/net/obj/NetworkInterface.o]
Error 1
make[5]: *** Waiting for unfinished jobs....
make[4]: *** [library_parallel_compile] Error 2
make[3]: *** [all] Error 1
make[2]: *** [all] Error 1
make[1]: *** [jdk-build] Error 2
make: *** [build_product_image] Error 2
I then made the following small change [4] to
bsd-port/jdk/src/solaris/native/java/net/NetworkInterface.c in the BSD
specific getIndex function to use if_nametoindex [5] along the lines
of the BSD specific changeset 5df63dc24cfe [6], and was able to build
successfully on Mac OS X 10.6.4 with Intel i7. I haven't had a chance
to really test the fix or to setup jtreg yet, so feel free to give it
a thorough workout especially on other BSDs.
diff --git a/src/solaris/native/java/net/NetworkInterface.c
b/src/solaris/native/java/net/NetworkInterface.c
--- a/src/solaris/native/java/net/NetworkInterface.c
+++ b/src/solaris/native/java/net/NetworkInterface.c
@@ -1823,17 +1823,12 @@
static int getIndex(int sock, const char *name){
/*
- * Try to get the interface index
- * (Not supported on Solaris 2.6 or 7)
+ * Try to get the interface index using BSD specific if_nametoindex
*/
- struct ifreq if2;
- strcpy(if2.ifr_name, name);
-
- if (ioctl(sock, SIOCGIFINDEX, (char *)&if2) < 0) {
- return -1;
- }
-
- return if2.ifr_index;
+ int index = if_nametoindex(name);
+ if (index == 0)
+ index = -1;
+ return index;
}
[1]: http://gist.github.com/505787#file_compile.sh
[2]: http://gist.github.com/505787#file_gistfile2.sh
[3]: http://hg.openjdk.java.net/bsd-port/bsd-port/jdk/rev/ab6dd1a45471
[4]: http://gist.github.com/505787#file_gistfile3.diff
[5]: http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man3/if_nameindex.3.html
[6]: http://hg.openjdk.java.net/bsd-port/bsd-port/jdk/diff/5df63dc24cfe/src/solaris/native/java/net/NetworkInterface.c
Hope that helps,
Dave
More information about the bsd-port-dev
mailing list