Subject: Problems with JDK 1.5.0 patchset 6
To: None <netbsd-java@NetBSD.org>
From: Bernd Ernesti <veego@NetBSD.org>
List: netbsd-java
Date: 08/12/2007 22:45:25
--61jdw2sOBCFtR2d/
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,

I'm trying to update the jdk15 wip package to p6 and got one problem:

gmake[6]: Entering directory `/pkgsrc/lang/jdk15/work.i386/j2se/make/sun/javac/javac'
/bin/mkdir -p /pkgsrc/lang/jdk15/work.i386/control/build/bsd-i586/tmp/sun/com.sun.tools.javac/javac/obj
rm -f /pkgsrc/lang/jdk15/work.i386/control/build/bsd-i586/tmp/sun/com.sun.tools.javac/javac/.classes.list
/pkgsrc/lang/jdk15/work.i386/control/build/bsd-i586/bin/java -classpath ../../../tools/CompileProperties CompileProperties ../../../../src/share/classes/com/sun/tools/javac/resources/compiler.properties /pkgsrc/lang/jdk15/work.i386/control/build/bsd-i586/gensrc/com/sun/tools/javac/resources/compiler.java
dl failure on line 730Error: failed /pkgsrc/lang/jdk15/work.i386/control/build/bsd-i586/lib/i386/client/libjvm.so, because /usr/lib/libstdc++.so.6: Undefined PLT symbol "_Unwind_GetIP" (symnum = 161)

It seems for me this is related to a problem with libgcc_s.

partly nm output of libjvm.so:
  0032ecbc t _Unwind_Backtrace
  0032d8b8 t _Unwind_DeleteException
  0032db08 t _Unwind_FindEnclosingFunction
  00330544 t _Unwind_Find_FDE
  0032f040 t _Unwind_ForcedUnwind
  0032edf8 t _Unwind_ForcedUnwind_Phase2
  0032d860 t _Unwind_GetCFA
  0032d8a0 t _Unwind_GetDataRelBase
  0032d914 t _Unwind_GetGR
  0032d86c t _Unwind_GetIP
  0032d888 t _Unwind_GetLanguageSpecificData
  0032d894 t _Unwind_GetRegionStart
  0032d8ac t _Unwind_GetTextRelBase
  0032f0f0 t _Unwind_RaiseException
  0032ed54 t _Unwind_RaiseException_Phase2
  0032ef8c t _Unwind_Resume
  0032f23c t _Unwind_Resume_or_Rethrow
  0032d8d8 t _Unwind_SetGR
  0032d878 t _Unwind_SetIP
ldd output:
  /pkgsrc/lang/jdk15/work.i386/control/build/bsd-i586/lib/i386/client/libjvm.so:
        -lstdc++.6 => /usr/lib/libstdc++.so.6
        -lm.0 => /usr/lib/libm387.so.0
        -lm.0 => /usr/lib/libm.so.0
        -lpthread.0 => /usr/lib/libpthread.so.0

The missing libgcc_s is kind of expected because it is linked with -static-libgcc,
but I found this page: http://www.trilithium.com/johan/2005/06/static-libstdc/
Which makes me think that this won't work.
Reading in the Changelog bought me to these lines:

2007-01-20 Saturday 17:49  christos
        * hotspot/build/bsd/makefiles/: gcc.make, vm.make:
        From Chuck Silvers:
        Copy the logic for -static-libgcc to the hotspot build, eliminating the
        need for the -lgcc_s hack.
2007-01-16 Tuesday 21:27  christos
        * hotspot/build/bsd/makefiles/vm.make:
        Add -lgcc_s for the NetBSD build. This is necessary for gcc-4 because
        linking with -lstdc++ requires -lgcc_eh or -lgcc_s to do the exception
        handling. Perhaps it is easier to just compile with g++ and let things
        happen automatically rather than expose the ugly guts of the libraries.
        Anyway, most platforms that use gcc-4 will need this until we fix it
        properly.
2007-01-15 Monday 04:50  christos
        * j2se/make/common/Defs-bsd.gmk:
        XXX: For now link with -lgcc_s for _Unwind_Restore. This is on NetBSD with:
            gcc version 4.1.2 20070110 prerelease (NetBSD nb1 20070110)

Btw, this is with NetBSD-current on i386.

Attached is the output for the linking of libjvm.so, where libjvm was linked two
times (and I don't mean the libjvm_g.so).

Thanks,
Bernd


--61jdw2sOBCFtR2d/
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="libjvm.txt"
Content-Transfer-Encoding: quoted-printable

gcc -shared -mimpure-text -fPIC -static-libgcc -Xlinker -O1 -Xlinker --vers=
ion-script=3D/pkgsrc/lang/jdk15/work.i386/hotspot/build/bsd/makefiles/mapfi=
le-vers-product -Xlinker -soname=3Dlibjvm.so -o libjvm.so accessFlags.o ad_=
i486.o ad_i486_clone.o ad_i486_expand.o ad_i486_format.o ad_i486_gen.o ad_i=
486_misc.o ad_i486_peephole.o ad_i486_pipeline.o adapters.o adapters_i486.o=
 addnode.o adjoiningGenerations.o adjoiningVirtualSpaces.o ageTable.o alloc=
ation.o aprofiler.o arguments.o array.o arrayKlass.o arrayKlassKlass.o arra=
yOop.o asPSOldGen.o asPSYoungGen.o assembler.o assembler_bsd_i486.o assembl=
er_i486.o atomic.o biasedLocking.o binaryTreeDictionary.o bitMap.o block.o =
blockOffsetTable.o buildOopMap.o bytecode.o bytecodeHistogram.o bytecodeInf=
o.o bytecodeStream.o bytecodeTracer.o bytecodes.o bytecodes_i486.o c2_globa=
ls.o c2_init_i486.o c2compiler.o cInterpreter.o cSpaceCounters.o callGenera=
tor.o callnode.o carRememberedSet.o cardTableExtension.o cardTableModRefBS.=
o cardTableRS.o cartable.o cfgnode.o cha.o chaitin.o chaitin_bsd.o ciArray.=
o ciArrayKlass.o ciConstant.o ciConstantPoolCache.o ciEnv.o ciExceptionHand=
ler.o ciField.o ciFlags.o ciInstance.o ciInstanceKlass.o ciInstanceKlassKla=
ss.o ciKlass.o ciKlassKlass.o ciMethod.o ciMethodData.o ciMethodKlass.o ciN=
ullObject.o ciObjArrayKlass.o ciObjArrayKlassKlass.o ciObject.o ciObjectFac=
tory.o ciOopMap.o ciSignature.o ciStreams.o ciSymbol.o ciSymbolKlass.o ciTy=
pe.o ciTypeArray.o ciTypeArrayKlass.o ciTypeArrayKlassKlass.o ciTypeFlow.o =
ciUtilities.o classFileParser.o classFileStream.o classLoader.o classLoadin=
gService.o classes.o classify.o cmsLockVerifier.o coalesce.o codeBlob.o cod=
eBuffer.o codeCache.o collectedHeap.o collectorCounters.o collectorPolicy.o=
 compactibleFreeListSpace.o compactingPermGenGen.o compilationPolicy.o comp=
ile.o compileBroker.o compileLog.o compiledIC.o compiledICHolderKlass.o com=
piledICHolderOop.o compilerOracle.o compressedStream.o concurrentMarkSweepG=
eneration.o concurrentMarkSweepThread.o connode.o constMethodKlass.o constM=
ethodOop.o constantPoolKlass.o constantPoolOop.o constantTag.o cpCacheKlass=
.o cpCacheOop.o debug.o debugInfo.o debugInfoRec.o debug_i486.o defNewGener=
ation.o deoptimization.o depChecker_i486.o dfa_i486.o dict.o dictionary.o d=
isassembler_i486.o divnode.o doCall.o domgraph.o dump.o dump_md.o events.o =
evmCompat.o exceptionHandlerTable.o exceptions.o extendedPC_i486.o fieldDes=
criptor.o fieldType.o filemap.o forte.o fprofiler.o frame.o frame_i486.o fr=
eeBlockDictionary.o freeChunk.o freeList.o gSpaceCounters.o gcCause.o gcLoc=
ker.o gcPolicyCounters.o gcStats.o gcTaskManager.o gcTaskThread.o gcUtil.o =
gcm.o genCollectedHeap.o genMarkSweep.o genRemSet.o generateOopMap.o genera=
teOptoStub.o generation.o generationCounters.o generationSpec.o getThread_b=
sd_i486.o globalDefinitions.o globals.o graphKit.o growableArray.o handles.=
o hashtable.o heap.o heapDumper.o heapInspection.o histogram.o hpi.o hpi_bs=
d.o icBuffer.o icBuffer_i486.o icache.o icache_i486.o idealKit.o ifg.o ifno=
de.o immutableSpace.o indexSet.o init.o instanceKlass.o instanceKlassKlass.=
o instanceOop.o instanceRefKlass.o interfaceSupport.o interp_masm_i486.o in=
terpreter.o interpreterRT_i486.o interpreterRuntime.o interpreter_i486.o in=
vocationCounter.o iterator.o java.o javaAssertions.o javaCalls.o javaClasse=
s.o jni.o jniCheck.o jniFastGetField.o jniFastGetField_i486.o jniHandles.o =
jniId.o jvm.o jvm_bsd.o jvmdiEnter.o jvmdiEnterTrace.o jvmdiEventFromJvmtiE=
vent.o jvmdiFrame.o jvmpi.o jvmtiCodeBlobEvents.o jvmtiEnter.o jvmtiEnterTr=
ace.o jvmtiEnv.o jvmtiEnvBase.o jvmtiEnvThreadState.o jvmtiEventController.=
o jvmtiExport.o jvmtiExtensions.o jvmtiGetLoadedClasses.o jvmtiImpl.o jvmti=
ManageCapabilities.o jvmtiRedefineClasses.o jvmtiTagMap.o jvmtiThreadState.=
o klass.o klassKlass.o klassOop.o klassVtable.o lcm.o library_call.o linkRe=
solver.o live.o loaderConstraints.o location.o locknode.o loopTransform.o l=
oopnode.o loopopts.o lowMemoryDetector.o machnode.o management.o markOop.o =
markSweep.o matcher.o memRegion.o memnode.o memoryManager.o memoryPool.o me=
moryService.o memprofiler.o methodComparator.o methodDataKlass.o methodData=
Oop.o methodKlass.o methodLiveness.o methodOop.o monitorChunk.o mulnode.o m=
ultnode.o mutableSpace.o mutex.o mutexLocker.o mutex_bsd.o nativeInst_i486.=
o nativeLookup.o nmethod.o nmethod_i486.o node.o objArrayKlass.o objArrayKl=
assKlass.o objArrayOop.o objectMonitor_bsd.o objectStartArray.o onStackRepl=
acement.o oop.o oopFactory.o oopMap.o oopMapCache.o oopRecorder.o opcodes.o=
 orderAccess.o os.o osThread.o osThread_bsd.o os_bsd.o os_bsd_i486.o ostrea=
m.o output.o parGCAllocBuffer.o parMarkBitMap.o parNewGeneration.o parallel=
ScavengeHeap.o parse1.o parse2.o parse3.o parseHelper.o pcDesc.o pcTasks.o =
perf.o perfData.o perfMemory.o perfMemory_bsd.o permGen.o phase.o phaseX.o =
placeholders.o port.o postaloc.o preserveException.o privilegedStack.o psAd=
aptiveSizePolicy.o psCompactionManager.o psGCAdaptivePolicyCounters.o psGen=
erationCounters.o psMarkSweep.o psMarkSweepDecorator.o psOldGen.o psParalle=
lCompact.o psPermGen.o psPromotionLAB.o psPromotionManager.o psScavenge.o p=
sTasks.o psVirtualspace.o psYoungGen.o rawMonitor.o recompilationMonitor.o =
referencePolicy.o referenceProcessor.o referenceProcessorMT.o reflection.o =
reflectionUtils.o reg_split.o regalloc.o register.o register_definitions_i4=
86.o register_i486.o regmask.o relocInfo.o relocInfo_i486.o relocator.o res=
ourceArea.o restore.o rewriter.o rframe.o rootnode.o runtime.o runtimeServi=
ce.o runtime_i486.o safepoint.o safepoint_bsd_i486.o scopeDesc.o serialize.=
o set.o shared.o sharedHeap.o sharedRuntime.o sharedRuntimeTrig.o sharedRun=
time_i486.o shared_i486.o signature.o sizes.o space.o spaceCounters.o speci=
alized_oop_closures.o split_if.o stackMapFrame.o stackMapTable.o stackValue=
.o stackValueCollection.o statSampler.o stubCodeGenerator.o stubGenerator_i=
486.o stubRoutines.o stubRoutines_bsd.o stubRoutines_i486.o stubs.o subnode=
.o sweeper.o symbolKlass.o symbolOop.o symbolTable.o synchronizer.o systemD=
ictionary.o task.o taskqueue.o templateTable.o templateTable_i486.o tenured=
Generation.o thread.o threadCodeBuffer.o threadCritical_bsd.o threadLS_bsd_=
i486.o threadLocalAllocBuffer.o threadLocalStorage.o threadService.o thread=
_bsd_i486.o timer.o train.o trainGeneration.o type.o typeArrayKlass.o typeA=
rrayKlassKlass.o typeArrayOop.o universe.o unsafe.o utf8.o vectset.o verifi=
cationType.o verifier.o vframe.o vframeArray.o vframe_hp.o virtualspace.o v=
mError.o vmError_bsd.o vmStructs.o vmSymbols.o vmThread.o vm_operations.o v=
m_version.o vm_version_i486.o vtableStubs.o vtune_bsd.o workgroup.o xmlstre=
am.o vtableStubs_i486.o   bsd_i486.o -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -l=
m -pthread
Linking vm...
echo Stripping vm... ; \
        strip --strip-debug libjvm.so
Linking launcher...
echo Making signal interposition lib...; \
        gcc  -D_GNU_SOURCE -D_REENTRANT -static-libgcc -Xlinker -O1 -shared=
 -fPIC -o libjsig.so /pkgsrc/lang/jdk15/work.i386/hotspot/src/os/bsd/vm/jsi=
g.c
Making signal interposition lib...
if [ -d /pkgsrc/lang/jdk15/work.i386/hotspot/agent -a "i486" !=3D "ia64" ] =
; then \
           /usr/pkg/bin/gmake -f vm.make libsaproc.so; \
        fi
gmake[3]: Leaving directory `/pkgsrc/lang/jdk15/work.i386/control/build/bsd=
-i586/hotspot-i586/tmp/bsd_i486_compiler2/product'
All done.

--61jdw2sOBCFtR2d/
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="libjvm2.txt"
Content-Transfer-Encoding: quoted-printable

gcc -shared -mimpure-text -fPIC -static-libgcc -Xlinker -O1 -Xlinker --vers=
ion-script=3D/pkgsrc/lang/jdk15/work.i386/hotspot/build/bsd/makefiles/mapfi=
le-vers-product -Xlinker -soname=3Dlibjvm.so -o libjvm.so accessFlags.o adj=
oiningGenerations.o adjoiningVirtualSpaces.o ageTable.o allocation.o aprofi=
ler.o arguments.o array.o arrayKlass.o arrayKlassKlass.o arrayOop.o asPSOld=
Gen.o asPSYoungGen.o assembler.o assembler_bsd_i486.o assembler_i486.o atom=
ic.o biasedLocking.o binaryTreeDictionary.o bitMap.o blockOffsetTable.o byt=
ecode.o bytecodeHistogram.o bytecodeStream.o bytecodeTracer.o bytecodes.o b=
ytecodes_i486.o c1_AllocTable.o c1_AllocTable_i486.o c1_CacheLocals.o c1_Ca=
cheLocals_i486.o c1_Canonicalizer.o c1_CodeGenerator.o c1_CodeGenerator_i48=
6.o c1_CodeStubs_i486.o c1_Compilation.o c1_Compiler.o c1_Defs.o c1_FrameMa=
p.o c1_FrameMap_i486.o c1_GraphBuilder.o c1_IR.o c1_Instruction.o c1_Instru=
ctionPrinter.o c1_Items.o c1_Items_i486.o c1_LIR.o c1_LIRAssembler.o c1_LIR=
Assembler_i486.o c1_LIREmitter.o c1_LIREmitter_i486.o c1_LIROptimizer.o c1_=
Loops.o c1_MacroAssembler_i486.o c1_Optimizer.o c1_RInfo.o c1_RInfo_i486.o =
c1_RegAlloc.o c1_RegAlloc_i486.o c1_Runtime1.o c1_Runtime1_i486.o c1_ScanBl=
ocks.o c1_ValueMap.o c1_ValueSet.o c1_ValueStack.o c1_ValueType.o c1_global=
s.o cInterpreter.o cSpaceCounters.o carRememberedSet.o cardTableExtension.o=
 cardTableModRefBS.o cardTableRS.o cartable.o cha.o ciArray.o ciArrayKlass.=
o ciBytecodeStream.o ciConstant.o ciConstantPoolCache.o ciEnv.o ciException=
Handler.o ciField.o ciFlags.o ciInstance.o ciInstanceKlass.o ciInstanceKlas=
sKlass.o ciKlass.o ciKlassKlass.o ciMethod.o ciMethodData.o ciMethodKlass.o=
 ciNullObject.o ciObjArrayKlass.o ciObjArrayKlassKlass.o ciObject.o ciObjec=
tFactory.o ciOopMap.o ciSignature.o ciStreams.o ciSymbol.o ciSymbolKlass.o =
ciType.o ciTypeArray.o ciTypeArrayKlass.o ciTypeArrayKlassKlass.o ciUtiliti=
es.o classFileParser.o classFileStream.o classLoader.o classLoadingService.=
o classify.o cmsLockVerifier.o codeBlob.o codeBuffer.o codeCache.o collecte=
dHeap.o collectorCounters.o collectorPolicy.o compactibleFreeListSpace.o co=
mpactingPermGenGen.o compilationPolicy.o compileBroker.o compileLog.o compi=
ledIC.o compiledICHolderKlass.o compiledICHolderOop.o compilerOracle.o comp=
ressedStream.o concurrentMarkSweepGeneration.o concurrentMarkSweepThread.o =
constMethodKlass.o constMethodOop.o constantPoolKlass.o constantPoolOop.o c=
onstantTag.o cpCacheKlass.o cpCacheOop.o debug.o debugInfo.o debugInfoRec.o=
 debug_i486.o defNewGeneration.o deoptimization.o depChecker_i486.o diction=
ary.o disassembler_i486.o dump.o dump_md.o events.o evmCompat.o exceptionHa=
ndlerTable.o exceptions.o extendedPC_i486.o fieldDescriptor.o fieldType.o f=
ilemap.o forte.o fprofiler.o frame.o frame_i486.o freeBlockDictionary.o fre=
eChunk.o freeList.o gSpaceCounters.o gcCause.o gcLocker.o gcPolicyCounters.=
o gcStats.o gcTaskManager.o gcTaskThread.o gcUtil.o genCollectedHeap.o genM=
arkSweep.o genRemSet.o generateOopMap.o generation.o generationCounters.o g=
enerationSpec.o getThread_bsd_i486.o globalDefinitions.o globals.o growable=
Array.o handles.o hashtable.o heap.o heapDumper.o heapInspection.o histogra=
m.o hpi.o hpi_bsd.o icBuffer.o icBuffer_i486.o icache.o icache_i486.o immut=
ableSpace.o init.o instanceKlass.o instanceKlassKlass.o instanceOop.o insta=
nceRefKlass.o interfaceSupport.o interp_masm_i486.o interpreter.o interpret=
erRT_i486.o interpreterRuntime.o interpreter_i486.o invocationCounter.o ite=
rator.o java.o javaAssertions.o javaCalls.o javaClasses.o jni.o jniCheck.o =
jniFastGetField.o jniFastGetField_i486.o jniHandles.o jniId.o jvm.o jvm_bsd=
.o jvmdiEnter.o jvmdiEnterTrace.o jvmdiEventFromJvmtiEvent.o jvmdiFrame.o j=
vmpi.o jvmtiCodeBlobEvents.o jvmtiEnter.o jvmtiEnterTrace.o jvmtiEnv.o jvmt=
iEnvBase.o jvmtiEnvThreadState.o jvmtiEventController.o jvmtiExport.o jvmti=
Extensions.o jvmtiGetLoadedClasses.o jvmtiImpl.o jvmtiManageCapabilities.o =
jvmtiRedefineClasses.o jvmtiTagMap.o jvmtiThreadState.o klass.o klassKlass.=
o klassOop.o klassVtable.o linkResolver.o loaderConstraints.o location.o lo=
wMemoryDetector.o management.o markOop.o markSweep.o memRegion.o memoryMana=
ger.o memoryPool.o memoryService.o memprofiler.o methodComparator.o methodD=
ataKlass.o methodDataOop.o methodKlass.o methodOop.o monitorChunk.o mutable=
Space.o mutex.o mutexLocker.o mutex_bsd.o nativeInst_i486.o nativeLookup.o =
nmethod.o nmethod_i486.o objArrayKlass.o objArrayKlassKlass.o objArrayOop.o=
 objectMonitor_bsd.o objectStartArray.o onStackReplacement.o oop.o oopFacto=
ry.o oopMap.o oopMapCache.o oopRecorder.o orderAccess.o os.o osThread.o osT=
hread_bsd.o os_bsd.o os_bsd_i486.o ostream.o parGCAllocBuffer.o parMarkBitM=
ap.o parNewGeneration.o parallelScavengeHeap.o pcDesc.o pcTasks.o perf.o pe=
rfData.o perfMemory.o perfMemory_bsd.o permGen.o placeholders.o preserveExc=
eption.o privilegedStack.o psAdaptiveSizePolicy.o psCompactionManager.o psG=
CAdaptivePolicyCounters.o psGenerationCounters.o psMarkSweep.o psMarkSweepD=
ecorator.o psOldGen.o psParallelCompact.o psPermGen.o psPromotionLAB.o psPr=
omotionManager.o psScavenge.o psTasks.o psVirtualspace.o psYoungGen.o rawMo=
nitor.o recompilationMonitor.o referencePolicy.o referenceProcessor.o refer=
enceProcessorMT.o reflection.o reflectionUtils.o register.o register_defini=
tions_i486.o register_i486.o relocInfo.o relocInfo_i486.o relocator.o resou=
rceArea.o restore.o rewriter.o rframe.o runtimeService.o safepoint.o safepo=
int_bsd_i486.o scopeDesc.o serialize.o shared.o sharedHeap.o sharedRuntime.=
o sharedRuntimeTrig.o sharedRuntime_i486.o shared_i486.o signature.o sizes.=
o space.o spaceCounters.o specialized_oop_closures.o stackMapFrame.o stackM=
apTable.o stackValue.o stackValueCollection.o statSampler.o stubCodeGenerat=
or.o stubGenerator_i486.o stubRoutines.o stubRoutines_bsd.o stubRoutines_i4=
86.o stubs.o sweeper.o symbolKlass.o symbolOop.o symbolTable.o synchronizer=
.o systemDictionary.o task.o taskqueue.o templateTable.o templateTable_i486=
.o tenuredGeneration.o thread.o threadCodeBuffer.o threadCritical_bsd.o thr=
eadLS_bsd_i486.o threadLocalAllocBuffer.o threadLocalStorage.o threadServic=
e.o thread_bsd_i486.o timer.o train.o trainGeneration.o typeArrayKlass.o ty=
peArrayKlassKlass.o typeArrayOop.o universe.o unsafe.o utf8.o verificationT=
ype.o verifier.o vframe.o vframeArray.o vframe_hp.o virtualspace.o vmError.=
o vmError_bsd.o vmStructs.o vmSymbols.o vmThread.o vm_operations.o vm_versi=
on.o vm_version_i486.o vtableStubs.o vtableStubs_i486.o vtune_bsd.o workgro=
up.o xmlstream.o c1_LIROptimizer_i486.o   bsd_i486.o -Wl,-Bstatic -lstdc++ =
-Wl,-Bdynamic -lm -pthread
Linking vm...
echo Stripping vm... ; \
        strip --strip-debug libjvm.so
Stripping vm...
Linking launcher...
echo Making signal interposition lib...; \
        gcc  -D_GNU_SOURCE -D_REENTRANT -static-libgcc -Xlinker -O1 -shared=
 -fPIC -o libjsig.so /pkgsrc/lang/jdk15/work.i386/hotspot/src/os/bsd/vm/jsi=
g.c
Making signal interposition lib...
if [ -d /pkgsrc/lang/jdk15/work.i386/hotspot/agent -a "i486" !=3D "ia64" ] =
; then \
           /usr/pkg/bin/gmake -f vm.make libsaproc.so; \
        fi
gmake[3]: Leaving directory `/pkgsrc/lang/jdk15/work.i386/control/build/bsd=
-i586/hotspot-i586/tmp/bsd_i486_compiler1/product'
All done.


--61jdw2sOBCFtR2d/--