Sure, will change the before I push. I considered that but didn’t run with it.
Cheers, Henry > On Apr 6, 2020, at 7:43 PM, David Holmes <david.hol...@oracle.com> wrote: > > Hi Henry, > > On 7/04/2020 3:36 am, Henry Jen wrote: >> Here is the combined webrev[1] which I think is what we should have. By >> using __solaris__, we make sure no extra define from build and assuming that >> all solaris build will have gethrtime() and use that. > > This looks good to me and means the Solaris code should start working > correctly again, as well as providing an implementation on all other > platforms. > > Only minor suggestion is to move > > 33 #include <sys/time.h> > > outside of the ifdef in the header file as all platforms will include it > anyway. You can then also remove the include in the .c file > > 819 #include <sys/time.h> > > Thanks, > David > ----- > >> The current build only use that for static build launcher, not custom >> launcher use libjli. >> Cheers, >> Henry >> [1] http://cr.openjdk.java.net/~henryjen/jdk/8241638.2/webrev/ >>> On Apr 5, 2020, at 9:21 PM, David Holmes <david.hol...@oracle.com> wrote: >>> >>> On 6/04/2020 12:37 pm, David Holmes wrote: >>>> On 6/04/2020 12:20 pm, Henry Jen wrote: >>>>> On Apr 5, 2020, at 7:15 PM, David Holmes <david.hol...@oracle.com> wrote: >>>>>> >>>>>> On 6/04/2020 11:50 am, David Holmes wrote: >>>>>>> There is something not right here ... >>>>>>> On 4/04/2020 3:13 pm, Henry Jen wrote: >>>>>>>> Internal test shows that inline implementation is not working for some >>>>>>>> Solaris artifacts, because the -DHAVE_GETHRTIME is not consistently >>>>>>>> defined, so it is actually broken. :) >>>>>>>> >>>>>>>>> [2020-04-03T15:59:26,981Z] Creating >>>>>>>>> support/test/hotspot/jtreg/native/bin/jvm-test-launcher from 1 file(s) >>>>>>> Are you sure that line actually pertains to any error? The test defines >>>>>>> a custom launcher which doesn't use libjli so should never be including >>>>>>> the header file we are discussing. >>>>>>>>> [2020-04-03T16:02:10,984Z] >>>>>>>>> [2020-04-03T16:02:10,984Z] ERROR: Build failed for target 'default >>>>>>>>> (product-bundles test-bundles static-libs-bundles)' in configuration >>>>>>>>> 'solaris-sparcv9-open' (exit code 2) >>>>>>>>> [2020-04-03T16:02:11,051Z] >>>>>>>>> [2020-04-03T16:02:11,051Z] === Output from failing command(s) >>>>>>>>> repeated here === >>>>>>>>> [2020-04-03T16:02:11,055Z] * For target >>>>>>>>> support_native_java.base_libjli_BUILD_LIBJLI_link: >>>>>>>>> [2020-04-03T16:02:11,061Z] Undefined first referenced >>>>>>>>> [2020-04-03T16:02:11,061Z] symbol in file >>>>>>>>> [2020-04-03T16:02:11,061Z] getTimeMicros >>>>>>>>> /export/home/opt/mach5/mesos/work_dir/e101deec-9613-4d46-a64d-559e689496aa/workspace/build/solaris-sparcv9-open/support/native/java.base/libjli/java.o >>>>>>>>> [2020-04-03T16:02:11,061Z] ld: fatal: symbol referencing errors >>>>>>> This looks like a direct linkage error. AFAICS >>>>>>> ./launcher/LauncherCommon.gmk only defines -DHAVE_GETHRTIME for >>>>>>> launcher executables. But if we are building libjli it is not an >>>>>>> executable. I'm suspecting there is actually a long standing build bug >>>>>>> here from when libjli was introduced. Possibly only evident on an >>>>>>> incremental build. >>>>>> >>>>>> I can confirm that the flags set in LauncherCommon.gmk are not passed to >>>>>> the compilation of java_md_solinux.c (I added a custom -DDAVIDH to the >>>>>> linux flags and checked the build). So I have no idea how this has been >>>>>> working, if indeed it actually has. >>>>>> >>>>> >>>>> I should say it’s the inconsistency for building java.c for launcher >>>>> executable and libjli.so, thus cause libjli.so failed to build. It wasn’t >>>>> detected before because CounterGet is defined as no-op, so nothing to >>>>> link with. >>>> My point is that this seems completely broken. HAVE_GETHRTIME is never >>>> defined when building libjli, only when building the launcher executables, >>>> and the launcher executable code never calls CounterGet(). This suggests >>>> that the launcher debug code on Solaris has been using the same code as >>>> linux and thus should be seen to be reporting the same thing ... which it >>>> is ... >>>> _JAVA_LAUNCHER_DEBUG=true >>>> /java/re/jdk/9/promoted/latest/binaries/solaris-x64/bin/java -version >>>> ----_JAVA_LAUNCHER_DEBUG---- >>>> Launcher state: >>>> First application arg index: -1 >>>> debug:on >>>> javargs:off >>>> program name:java >>>> launcher name:java >>>> javaw:off >>>> fullversion:9+181 >>>> Command line args: >>>> argv[0] = /java/re/jdk/9/promoted/latest/binaries/solaris-x64/bin/java >>>> argv[1] = -version >>>> JRE path is .../java_re/jdk/9/fcs/181/binaries/solaris-x64 >>>> jvm.cfg[0] = ->-server<- >>>> jvm.cfg[1] = ->-client<- >>>> 1 micro seconds to parse jvm.cfg >>>> Default VM: server >>>> Does >>>> `.../export/java_re/jdk/9/fcs/181/binaries/solaris-x64/lib/server/libjvm.so' >>>> exist ... yes. >>>> mustsetenv: FALSE >>>> JVM path is >>>> .../export/java_re/jdk/9/fcs/181/binaries/solaris-x64/lib/server/libjvm.so >>>> 1 micro seconds to LoadJavaVM >>>> Always reports 1 microsecond just like Linux. >>>> This whole setup is completely broken at the build level. >>> >>> This worked correctly in JDK 6 (6u181 is latest I could test) but is broken >>> in JDK 7. >>> >>> David >>> ----- >>> >>>> Cheers, >>>> David >>>>> Cheers, >>>>> Henry >>>>> >>>>> >>>>>> David >>>>>> >>>>>>> David >>>>>>> ----- >>>>>>>>> [2020-04-03T16:02:11,082Z] >>>>>>>>> [2020-04-03T16:02:11,082Z] * All command lines available in >>>>>>>>> /export/home/opt/mach5/mesos/work_dir/e101deec-9613-4d46-a64d-559e689496aa/workspace/build/solaris-sparcv9-open/make-support/failure-logs. >>>>>>>>> [2020-04-03T16:02:11,086Z] === End of repeated output === >>>>>>>>> [2020-04-03T16:02:11,094Z] >>>>>>>>> [2020-04-03T16:02:11,094Z] === Make failed targets repeated here === >>>>>>>>> [2020-04-03T16:02:11,736Z] CoreLibraries.gmk:206: recipe for target >>>>>>>>> '/export/home/opt/mach5/mesos/work_dir/e101deec-9613-4d46-a64d-559e689496aa/workspace/build/solaris-sparcv9-open/support/modules_libs/java.base/libjli.so' >>>>>>>>> failed >>>>>>>>> [2020-04-03T16:02:11,737Z] make/Main.gmk:195: recipe for target >>>>>>>>> 'java.base-libs' failed >>>>>>>>> [2020-04-03T16:02:11,739Z] === End of repeated output === >>>>>>>>> [2020-04-03T16:02:11,741Z] >>>>>>>> >>>>>>>> >>>>>>>> I verified that either move implementation into .c as a function >>>>>>>> body[1] or change to #ifdef __solaris__[2] will fix that. So I think >>>>>>>> we will change to detect __solaris__ as webrev[2] rather than have an >>>>>>>> extra #define. If some other build want to have that, they can be >>>>>>>> modify that #ifdef easily. >>>>>>>> >>>>>>>> As I look into it, I found Mac have similar implementation with minor >>>>>>>> mistake, so I fixed that as well. Please review following based on >>>>>>>> zhanglin’s patch. >>>>>>>> >>>>>>>> I’ll push [2] once I got a +1. >>>>>>>> >>>>>>>> [1] http://cr.openjdk.java.net/~henryjen/jdk/8241638.0/webrev/ >>>>>>>> [2] http://cr.openjdk.java.net/~henryjen/jdk/8241638.1/webrev/ >>>>>>>> >>>>>>>> Cheers, >>>>>>>> Henry >>>>>>>> >>>>>>>>> On Apr 2, 2020, at 6:17 AM, Alan Bateman <alan.bate...@oracle.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> On 02/04/2020 11:26, linzang(臧琳) wrote: >>>>>>>>>> : >>>>>>>>>> Here is the updated webrev : >>>>>>>>>> http://cr.openjdk.java.net/~lzang/8241638/webrev04/ >>>>>>>>>> Thanks for your help! >>>>>>>>>> >>>>>>>>> webrev04 looks good. My preference was to was to replace #ifdef >>>>>>>>> HAVE_GETHRTIME with #ifdef __solaris__ but there doesn't seem to be >>>>>>>>> appetite to do this now. I think Henry has offered to help sponsor. >>>>>>>>> >>>>>>>>> -Alan.