Bug 188980 - java.io.ProcessBuilder not working in java/openjdk7 7.55.13_3,1
Summary: java.io.ProcessBuilder not working in java/openjdk7 7.55.13_3,1
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Greg Lewis
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-04-25 02:20 UTC by Jimmy Kelley
Modified: 2014-04-29 05:20 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jimmy Kelley 2014-04-25 02:20:00 UTC
The java.io.ProcessBuilder function was working in openjdk-7.51.13_2,1 but is broken in openjdk-7.55.13_3,1; it throws an IOException, "no such file or directory" no matter what command string is supplied (even with a full path).  The problem does not exist in openjdk6 or openjdk8.

How-To-Repeat: Simple program that demonstrates the problem:

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;

public class PBuilder {
  public static void main(String args[]) {
    try {
      Process p = new ProcessBuilder("/bin/date").start();

      //Read out dir output
      InputStream is = p.getInputStream();
      InputStreamReader isr = new InputStreamReader(is);
      BufferedReader br = new BufferedReader(isr);
      String line;
      System.out.printf("Output of running is:\n");
      while ((line = br.readLine()) != null) {
        System.out.println(line);
      }
        
      //Wait to get exit value
      try {
        int exitValue = p.waitFor();
        System.out.println("\n\nExit Value is " + exitValue);
      } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
      }
    }
    catch(java.io.IOException e) {
      e.printStackTrace();
    }
  }
}
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2014-04-27 14:06:47 UTC
Responsible Changed
From-To: freebsd-ports-bugs->glewis

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Jimmy Kelley 2014-04-27 22:15:01 UTC
After a bit of detective work, it appears that some new process spawning
code in UNIXProcess from openjdk8 has been back-ported to openjdk7.
This new code uses a "jspawnhelper" to spawn off child processes
($JAVA_HOME/jre/lib/jspawnhelper);  it's there in an installed openjdk8
port,
but missing in an installed openjdk7 port.  I'm running a local build of
the port to see if perhaps it's being built but just not packaged.
Comment 3 Jimmy Kelley 2014-04-28 12:12:08 UTC
Here's a patch (thanks Greg Lewis for pointing me in the right direction):

--- patch-set.orig      2014-04-22 08:59:30.000000000 -0500
+++ patch-set   2014-04-27 21:25:08.000000000 -0500
@@ -21299,7 +21299,7 @@

  ifeq ($(HAVE_ALTZONE),true)
  OTHER_CPPFLAGS += -DHAVE_ALTZONE
-@@ -451,3 +454,36 @@
+@@ -451,3 +454,40 @@
  clean::
        $(RM) $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java

@@ -21313,6 +21313,10 @@
 +    HELPER_EXE = $(LIBDIR)/jspawnhelper
 +    BUILDHELPER = 1
 +endif
++ifeq ($(PLATFORM), bsd)
++    HELPER_EXE = $(LIBDIR)/jspawnhelper
++    BUILDHELPER = 1
++endif
 +
 +ARCHFLAG =
 +ifeq ($(ARCH_DATA_MODEL), 64)
Comment 4 dfilter service freebsd_committer freebsd_triage 2014-04-29 05:15:16 UTC
Author: glewis
Date: Tue Apr 29 04:15:11 2014
New Revision: 352568
URL: http://svnweb.freebsd.org/changeset/ports/352568
QAT: https://qat.redports.org/buildarchive/r352568/

Log:
  . Fix spawning external processes from the JVM. [1]
  . Remove some patches that have been merged to the upstream repository.
  
  PR:		188979, 188980 [1]
  Obtained from:	Kurt Miller (via the upstream bsd-port repo) [1]

Deleted:
  head/java/openjdk7/files/patch-hotspot-make-bsd-makefiles-gcc.make
  head/java/openjdk7/files/patch-hotspot-src-share-vm-code-relocInfo.hpp
  head/java/openjdk7/files/patch-src-solaris-classes-sun-nio-ch-DefaultAsynchronousChanneldProvider.java
Modified:
  head/java/openjdk7/Makefile
  head/java/openjdk7/files/patch-set

Modified: head/java/openjdk7/Makefile
==============================================================================
--- head/java/openjdk7/Makefile	Tue Apr 29 03:59:27 2014	(r352567)
+++ head/java/openjdk7/Makefile	Tue Apr 29 04:15:11 2014	(r352568)
@@ -3,7 +3,7 @@
 
 PORTNAME=	openjdk
 PORTVERSION=	${JDK_MAJOR_VERSION}.${PORT_MINOR_VERSION}.${PORT_BUILD_NUMBER}
-PORTREVISION=	3
+PORTREVISION=	4
 PORTEPOCH=	1
 CATEGORIES=	java devel
 MASTER_SITES=	http://download.java.net/openjdk/jdk${JDK_MAJOR_VERSION}u${JDK_MINOR_VERSION}/promoted/b${JDK_BUILD_NUMBER}/ \

Modified: head/java/openjdk7/files/patch-set
==============================================================================
--- head/java/openjdk7/files/patch-set	Tue Apr 29 03:59:27 2014	(r352567)
+++ head/java/openjdk7/files/patch-set	Tue Apr 29 04:15:11 2014	(r352568)
@@ -2473,6 +2473,25 @@
 +endif
  
  CFLAGS += -DVM_LITTLE_ENDIAN
+--- hotspot/make/bsd/makefiles/build_vm_def.sh	2013-09-06 11:21:59.000000000 -0700
++++ hotspot/make/bsd/makefiles/build_vm_def.sh	2014-04-28 17:39:01.000000000 -0700
+@@ -7,6 +7,16 @@
+ NM=nm
+ fi
+ 
++if [ `uname` == "OpenBSD" ] ; then
++$NM $* \
++    | awk '{
++              if ($2 != "U") if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 ";"
++              if ($2 != "U") if ($3 ~ /^UseSharedSpaces$/) print "\t" $3 ";"
++              if ($2 != "U") if ($3 ~ /^_ZN9Arguments17SharedArchivePathE$/) print "\t" $3 ";"
++          }' \
++    | sort -u
++else
+ $NM -Uj $* | awk '
+    { if ($3 ~ /^_ZTV/ || $3 ~ /^gHotSpotVM/) print "\t" $3 }
+    '
++fi
 --- hotspot/make/bsd/makefiles/buildtree.make	2013-09-06 11:22:00.000000000 -0700
 +++ hotspot/make/bsd/makefiles/buildtree.make	2014-04-20 12:39:31.000000000 -0700
 @@ -1,5 +1,5 @@
@@ -2509,7 +2528,7 @@
  .dbxrc:  $(BUILDTREE_MAKE)
  	@echo Creating $@ ...
 --- hotspot/make/bsd/makefiles/gcc.make	2013-09-06 11:22:00.000000000 -0700
-+++ hotspot/make/bsd/makefiles/gcc.make	2014-04-20 12:39:31.000000000 -0700
++++ hotspot/make/bsd/makefiles/gcc.make	2014-04-28 17:39:01.000000000 -0700
 @@ -116,7 +116,10 @@
  CFLAGS += -fno-rtti
  CFLAGS += -fno-exceptions
@@ -2522,6 +2541,19 @@
  # version 4 and above support fvisibility=hidden (matches jni_x86.h file)
  # except 4.1.2 gives pointless warnings that can't be disabled (afaik)
  ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
+@@ -214,7 +217,11 @@
+ 
+ # Flags for generating make dependency flags.
+ ifneq ("${CC_VER_MAJOR}", "2")
+-DEPFLAGS = -fpch-deps -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)
++DEPFLAGS =
++ifeq (,$(findstring clang,$(shell $(CC) -v 2>&1)))
++DEPFLAGS += -fpch-deps
++endif
++DEPFLAGS += -MMD -MP -MF $(DEP_DIR)/$(@:%=%.d)
+ endif
+ 
+ # -DDONT_USE_PRECOMPILED_HEADER will exclude all includes in precompiled.hpp.
 --- hotspot/make/bsd/makefiles/jsig.make	2013-09-06 11:22:00.000000000 -0700
 +++ hotspot/make/bsd/makefiles/jsig.make	2014-04-20 12:39:31.000000000 -0700
 @@ -36,9 +36,16 @@
@@ -3325,7 +3357,7 @@
 +}
 +
 --- hotspot/src/os/bsd/vm/os_bsd.cpp	2013-09-06 11:22:03.000000000 -0700
-+++ hotspot/src/os/bsd/vm/os_bsd.cpp	2014-04-20 12:39:29.000000000 -0700
++++ hotspot/src/os/bsd/vm/os_bsd.cpp	2014-04-28 17:39:01.000000000 -0700
 @@ -187,6 +187,8 @@
  static int SR_signum = SIGUSR2;
  sigset_t SR_sigset;
@@ -3335,19 +3367,21 @@
  
  ////////////////////////////////////////////////////////////////////////////////
  // utility functions
-@@ -355,7 +357,11 @@
+@@ -355,7 +357,13 @@
     * since it returns a 64 bit value)
     */
    mib[0] = CTL_HW;
 +#ifdef HW_MEMSIZE
    mib[1] = HW_MEMSIZE;
++#elif defined (HW_USERMEM64)
++  mib[1] = HW_USERMEM64;
 +#else
 +  mib[1] = HW_USERMEM;
 +#endif
    len = sizeof(mem_val);
    if (sysctl(mib, 2, &mem_val, &len, NULL, 0) != -1) {
         assert(len == sizeof(mem_val), "unexpected data size");
-@@ -971,13 +977,14 @@
+@@ -971,13 +979,14 @@
  #endif
  
  #ifdef __APPLE__
@@ -3364,7 +3398,7 @@
    return m_ident_info.thread_id;
  }
  #endif
-@@ -1009,9 +1016,14 @@
+@@ -1009,9 +1018,14 @@
  
  #ifdef _ALLBSD_SOURCE
  #ifdef __APPLE__
@@ -3382,7 +3416,7 @@
  #else
    // thread_id is pthread_id on BSD
    osthread->set_thread_id(::pthread_self());
-@@ -1207,8 +1219,14 @@
+@@ -1207,8 +1221,14 @@
    // Store pthread info into the OSThread
  #ifdef _ALLBSD_SOURCE
  #ifdef __APPLE__
@@ -3399,7 +3433,7 @@
  #else
    osthread->set_thread_id(::pthread_self());
  #endif
-@@ -1830,7 +1848,7 @@
+@@ -1830,7 +1850,7 @@
  
  intx os::current_thread_id() {
  #ifdef __APPLE__
@@ -3408,7 +3442,7 @@
  #else
    return (intx)::pthread_self();
  #endif
-@@ -2381,14 +2399,14 @@
+@@ -2381,14 +2401,14 @@
  }
  
  void os::print_os_info_brief(outputStream* st) {
@@ -3425,7 +3459,7 @@
  
    os::Posix::print_uname_info(st);
  
-@@ -2397,10 +2415,6 @@
+@@ -2397,10 +2417,6 @@
    os::Posix::print_load_average(st);
  }
  
@@ -3436,7 +3470,7 @@
  void os::print_memory_info(outputStream* st) {
  
    st->print("Memory:");
-@@ -2417,6 +2431,7 @@
+@@ -2417,6 +2433,7 @@
    st->print("(" UINT64_FORMAT "k free)",
              os::available_memory() >> 10);
  #ifndef _ALLBSD_SOURCE
@@ -3444,7 +3478,7 @@
    st->print(", swap " UINT64_FORMAT "k",
              ((jlong)si.totalswap * si.mem_unit) >> 10);
    st->print("(" UINT64_FORMAT "k free)",
-@@ -2424,12 +2439,22 @@
+@@ -2424,12 +2441,22 @@
  #endif
    st->cr();
  
@@ -3467,7 +3501,7 @@
  // Taken from /usr/include/bits/siginfo.h  Supposed to be architecture specific
  // but they're the same for all the bsd arch that we support
  // and they're the same for solaris but there's no common place to put this.
-@@ -2575,6 +2600,25 @@
+@@ -2575,6 +2602,25 @@
          len = strlen(buf);
          jrelib_p = buf + len;
  
@@ -3493,7 +3527,7 @@
          // Add the appropriate library subdir
          snprintf(jrelib_p, buflen-len, "/jre/lib");
          if (0 != access(buf, F_OK)) {
-@@ -2604,6 +2648,7 @@
+@@ -2604,6 +2650,7 @@
            if (rp == NULL)
              return;
          }
@@ -3501,7 +3535,7 @@
        }
      }
    }
-@@ -2707,10 +2752,14 @@
+@@ -2707,10 +2754,14 @@
      bool timedwait(unsigned int sec, int nsec);
    private:
      jlong currenttime() const;
@@ -3517,7 +3551,7 @@
    SEM_INIT(_semaphore, 0);
  }
  
-@@ -2775,7 +2824,7 @@
+@@ -2775,7 +2826,7 @@
  
  bool Semaphore::timedwait(unsigned int sec, int nsec) {
    struct timespec ts;
@@ -3526,7 +3560,7 @@
  
    while (1) {
      int result = sem_timedwait(&_semaphore, &ts);
-@@ -2996,7 +3045,11 @@
+@@ -2996,7 +3047,11 @@
  }
  
  void os::pd_free_memory(char *addr, size_t bytes, size_t alignment_hint) {
@@ -3538,7 +3572,7 @@
  }
  
  void os::numa_make_global(char *addr, size_t bytes) {
-@@ -3829,6 +3882,7 @@
+@@ -3829,6 +3884,7 @@
    return OS_OK;
  #elif defined(__FreeBSD__)
    int ret = pthread_setprio(thread->osthread()->pthread_id(), newpri);
@@ -3826,6 +3860,17 @@
    st->print(" Build %d", osvi.dwBuildNumber);
    st->print(" %s", osvi.szCSDVersion);           // service pack
    st->cr();
+--- hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp	2013-09-06 11:22:04.000000000 -0700
++++ hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp	2014-04-28 17:39:01.000000000 -0700
+@@ -945,7 +945,7 @@
+   if (rslt != 0)
+     fatal(err_msg("pthread_stackseg_np failed with err = %d", rslt));
+ 
+-  *bottom = (address)((char *)ss.ss_sp - ss.ss_size);
++  *bottom = (address)(align_size_up((intptr_t)ss.ss_sp, os::vm_page_size()) - ss.ss_size);
+   *size   = ss.ss_size;
+ #elif defined(_ALLBSD_SOURCE)
+   pthread_attr_t attr;
 --- hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp	2013-09-06 11:22:04.000000000 -0700
 +++ hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp	2014-04-20 12:39:31.000000000 -0700
 @@ -24,7 +24,7 @@
@@ -3892,6 +3937,26 @@
          (m->name() != vmSymbols::object_initializer_name())) {
  
        Symbol* name = m->name();
+--- hotspot/src/share/vm/code/relocInfo.hpp	2013-09-06 11:22:10.000000000 -0700
++++ hotspot/src/share/vm/code/relocInfo.hpp	2014-04-28 17:39:01.000000000 -0700
+@@ -371,7 +371,7 @@
+   // "immediate" in the prefix header word itself.  This optimization
+   // is invisible outside this module.)
+ 
+-  inline friend relocInfo prefix_relocInfo(int datalen = 0);
++  inline friend relocInfo prefix_relocInfo(int datalen);
+ 
+  protected:
+   // an immediate relocInfo optimizes a prefix with one 10-bit unsigned value
+@@ -466,7 +466,7 @@
+   return relocInfo(relocInfo::none, relocInfo::offset_limit() - relocInfo::offset_unit);
+ }
+ 
+-inline relocInfo prefix_relocInfo(int datalen) {
++inline relocInfo prefix_relocInfo(int datalen = 0) {
+   assert(relocInfo::fits_into_immediate(datalen), "datalen in limits");
+   return relocInfo(relocInfo::data_prefix_tag, relocInfo::RAW_BITS, relocInfo::datalen_tag | datalen);
+ }
 --- hotspot/src/share/vm/gc_implementation/shared/gcTraceSend.cpp	2013-09-06 11:22:12.000000000 -0700
 +++ hotspot/src/share/vm/gc_implementation/shared/gcTraceSend.cpp	2014-04-20 12:39:30.000000000 -0700
 @@ -109,7 +109,7 @@
@@ -4324,8 +4389,22 @@
          iterator->TState = ObjectWaiter::TS_ENTER ;
       }
 --- hotspot/src/share/vm/runtime/os.cpp	2013-09-06 11:22:15.000000000 -0700
-+++ hotspot/src/share/vm/runtime/os.cpp	2014-04-20 12:39:30.000000000 -0700
-@@ -1139,9 +1139,6 @@
++++ hotspot/src/share/vm/runtime/os.cpp	2014-04-28 17:39:01.000000000 -0700
+@@ -399,13 +399,6 @@
+     if (_native_java_library == NULL) {
+       vm_exit_during_initialization("Unable to load native library", ebuf);
+     }
+-
+-#if defined(__OpenBSD__)
+-    // Work-around OpenBSD's lack of $ORIGIN support by pre-loading libnet.so
+-    // ignore errors
+-    dll_build_name(buffer, sizeof(buffer), Arguments::get_dll_dir(), "net");
+-    dll_load(buffer, ebuf, sizeof(ebuf));
+-#endif
+   }
+   static jboolean onLoaded = JNI_FALSE;
+   if (onLoaded) {
+@@ -1139,9 +1132,6 @@
          "%/lib/jce.jar:"
          "%/lib/charsets.jar:"
          "%/lib/jfr.jar:"
@@ -21278,7 +21357,7 @@
      java/lang/reflect/AccessibleObject.java \
      java/lang/reflect/Field.java \
 --- jdk/make/java/java/Makefile	2013-09-06 11:27:37.000000000 -0700
-+++ jdk/make/java/java/Makefile	2014-04-20 12:39:22.000000000 -0700
++++ jdk/make/java/java/Makefile	2014-04-28 17:39:02.000000000 -0700
 @@ -84,6 +84,7 @@
                  java/util/prefs/FileSystemPreferencesFactory.java \
  
@@ -21299,7 +21378,7 @@
  
  ifeq ($(HAVE_ALTZONE),true)
  OTHER_CPPFLAGS += -DHAVE_ALTZONE
-@@ -451,3 +454,36 @@
+@@ -451,3 +454,39 @@
  clean::
  	$(RM) $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java
  
@@ -21313,6 +21392,9 @@
 +    HELPER_EXE = $(LIBDIR)/jspawnhelper
 +    BUILDHELPER = 1
 +endif
++ifeq ($(PLATFORM), bsd)
++    BUILDHELPER = 1
++endif
 +
 +ARCHFLAG = 
 +ifeq ($(ARCH_DATA_MODEL), 64)
@@ -56058,8 +56140,8 @@
  static const char *system_dir   = "/usr/jdk";
  static const char *user_dir     = "/jdk";
 --- jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd	2013-09-06 11:29:06.000000000 -0700
-+++ jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd	2014-04-20 12:39:22.000000000 -0700
-@@ -63,11 +63,59 @@
++++ jdk/src/solaris/classes/java/lang/UNIXProcess.java.bsd	2014-04-28 17:39:02.000000000 -0700
+@@ -63,11 +63,66 @@
      private /* final */ InputStream  stdout;
      private /* final */ InputStream  stderr;
  
@@ -56094,7 +56176,14 @@
 +            public LaunchMechanism run() {
 +                String javahome = System.getProperty("java.home");
 +
-+                helperpath = toCString(javahome + "/lib/jspawnhelper");
++                String osname = System.getProperty("os.name");
++                if (osname.endsWith("BSD")) {
++                    String osArch = System.getProperty("os.arch");
++                    helperpath = toCString(javahome + "/lib/" + osArch + "/jspawnhelper");
++                } else {
++                    helperpath = toCString(javahome + "/lib/jspawnhelper");
++                }
++
 +                String s = System.getProperty(
 +                    "jdk.lang.Process.launchMechanism", "posix_spawn");
 +
@@ -56120,7 +56209,7 @@
       *
       * @param fds an array of three file descriptors.
       *        Indexes 0, 1, and 2 correspond to standard input,
-@@ -80,7 +128,8 @@
+@@ -80,7 +135,8 @@
       *        output.
       * @return the pid of the subprocess
       */
@@ -56130,7 +56219,7 @@
                                     byte[] argBlock, int argc,
                                     byte[] envBlock, int envc,
                                     byte[] dir,
-@@ -132,7 +181,9 @@
+@@ -132,7 +188,9 @@
                  final boolean redirectErrorStream)
              throws IOException {
  
@@ -56141,7 +56230,7 @@
                            argBlock, argc,
                            envBlock, envc,
                            dir,
-@@ -236,11 +287,10 @@
+@@ -236,11 +294,10 @@
          try { stderr.close(); } catch (IOException ignored) {}
      }
  
@@ -56620,6 +56709,17 @@
 +        return upper;
 +    }
 +}
+--- jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java	2013-09-06 11:29:08.000000000 -0700
++++ jdk/src/solaris/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java	2014-04-28 17:39:02.000000000 -0700
+@@ -50,7 +50,7 @@
+             return new SolarisAsynchronousChannelProvider();
+         if (osname.equals("Linux"))
+             return new LinuxAsynchronousChannelProvider();
+-        if (osname.contains("OS X"))
++        if (osname.contains("OS X") || osname.endsWith("BSD"))
+             return new BsdAsynchronousChannelProvider();
+         throw new InternalError("platform not recognized");
+     }
 --- jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	2013-09-06 11:29:08.000000000 -0700
 +++ jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	2014-04-20 12:39:22.000000000 -0700
 @@ -26,9 +26,11 @@
@@ -57894,7 +57994,7 @@
  }
  
 --- jdk/src/solaris/native/java/lang/childproc.c	1969-12-31 16:00:00.000000000 -0800
-+++ jdk/src/solaris/native/java/lang/childproc.c	2014-04-20 12:39:22.000000000 -0700
++++ jdk/src/solaris/native/java/lang/childproc.c	2014-04-28 17:39:02.000000000 -0700
 @@ -0,0 +1,387 @@
 +/*
 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
@@ -57961,12 +58061,12 @@
 +}
 +
 +#if defined(__OpenBSD__)
-+static int
++int
 +closeDescriptors(void)
 +{
-+	    int err;
-+	        RESTARTABLE(closefrom(FAIL_FILENO + 1), err);
-+		    return err;
++    int err;
++    RESTARTABLE(closefrom(FAIL_FILENO + 1), err);
++    return err;
 +}
 +#else
 +
@@ -58678,8 +58778,8 @@
                  (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
                  inet6Index++;
 --- jdk/src/solaris/native/java/net/NetworkInterface.c	2013-09-06 11:29:10.000000000 -0700
-+++ jdk/src/solaris/native/java/net/NetworkInterface.c	2014-04-20 12:39:22.000000000 -0700
-@@ -60,14 +60,18 @@
++++ jdk/src/solaris/native/java/net/NetworkInterface.c	2014-04-28 17:39:02.000000000 -0700
+@@ -60,14 +60,19 @@
  #include <sys/param.h>
  #include <sys/ioctl.h>
  #include <sys/sockio.h>
@@ -58689,6 +58789,7 @@
  #include <net/if_var.h>
 +#elif defined(__OpenBSD__)
 +#include <netinet/if_ether.h>
++#include <netinet6/in6_var.h>
 +#elif defined(__NetBSD__)
 +#include <net/if_ether.h>
 +#endif
@@ -58700,7 +58801,7 @@
  
  #include "jvm.h"
  #include "jni_util.h"
-@@ -118,7 +122,6 @@
+@@ -118,7 +123,6 @@
  static jmethodID ni_ia4ctrID;
  static jmethodID ni_ia6ctrID;
  static jmethodID ni_ibctrID;
@@ -58708,7 +58809,7 @@
  static jfieldID ni_ibaddressID;
  static jfieldID ni_ib4broadcastID;
  static jfieldID ni_ib4maskID;
-@@ -193,7 +196,6 @@
+@@ -193,7 +197,6 @@
      ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
      ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
      ni_ibctrID = (*env)->GetMethodID(env, ni_ibcls, "<init>", "()V");
@@ -58716,7 +58817,7 @@
      ni_ibaddressID = (*env)->GetFieldID(env, ni_ibcls, "address", "Ljava/net/InetAddress;");
      ni_ib4broadcastID = (*env)->GetFieldID(env, ni_ibcls, "broadcast", "Ljava/net/Inet4Address;");
      ni_ib4maskID = (*env)->GetFieldID(env, ni_ibcls, "maskLength", "S");
-@@ -332,11 +334,9 @@
+@@ -332,11 +335,9 @@
  #ifdef AF_INET6
                  if (family == AF_INET6) {
                      jbyte *bytes = (jbyte *)&(((struct sockaddr_in6*)addrP->addr)->sin6_addr);
@@ -58729,7 +58830,7 @@
                      i = 0;
                      while (i < 16) {
                          if (caddr[i] != bytes[i]) {
-@@ -670,21 +670,17 @@
+@@ -670,21 +671,17 @@
              int scope=0;
              iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID);
              if (iaObj) {
@@ -58755,7 +58856,7 @@
              }
              ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
              if (ibObj) {
-@@ -1293,11 +1289,15 @@
+@@ -1293,11 +1290,15 @@
        return -1;
    }
  
@@ -58771,7 +58872,7 @@
    return 0;
  }
  
-@@ -1989,11 +1989,15 @@
+@@ -1989,11 +1990,15 @@
        return -1;
    }
  
@@ -59720,8 +59821,8 @@
  #else
  #   define ULTRA_CHIP   "sun4u"
 --- jdk/src/solaris/native/sun/net/portconfig.c	1969-12-31 16:00:00.000000000 -0800
-+++ jdk/src/solaris/native/sun/net/portconfig.c	2014-04-20 12:39:22.000000000 -0700
-@@ -0,0 +1,122 @@
++++ jdk/src/solaris/native/sun/net/portconfig.c	2014-04-28 17:39:02.000000000 -0700
+@@ -0,0 +1,140 @@
 +/*
 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -59790,6 +59891,24 @@
 +        range->higher = net_getParam("/dev/tcp", "tcp_largest_anon_port");
 +        return 0;
 +    }
++#elif defined(__OpenBSD__)
++    {
++        int mib[3];
++        mib[0] = CTL_NET;
++        mib[1] = PF_INET;
++
++        mib[2] = IPCTL_IPPORT_HIFIRSTAUTO;
++        size_t rlen = sizeof(range->lower);
++        if (sysctl(mib, 3, &range->lower, &rlen, NULL, 0) == -1)
++            return -1;
++
++        mib[2] = IPCTL_IPPORT_HILASTAUTO;
++        rlen = sizeof(range->higher);
++        if (sysctl(mib, 3, &range->higher, &rlen, NULL, 0) == -1)
++            return -1;
++
++        return 0;
++    }
 +#elif defined(_ALLBSD_SOURCE)
 +    {
 +        int ret;
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 5 Greg Lewis freebsd_committer freebsd_triage 2014-04-29 05:17:03 UTC
State Changed
From-To: open->closed

Thanks Jimmy.  I decided to go with a slightly more elaborate patch from the 
upstream repo, but the effect is pretty much the same.