http://llvm.org/bugs/show_bug.cgi?id=4429

           Summary: ExecutionEngine JIT and Interpreter generated as .o when
                    using cmake and makes icedtea6 linking fail.
           Product: new-bugs
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


Created an attachment (id=3112)
 --> (http://llvm.org/bugs/attachment.cgi?id=3112)
xecutionEngine_JIT_Interpreter_o_to_a.patch cmake fix

When building icedtea6 (OpenJDK) using shark i have started to get a linking
error after llvm r73709 

icedtea6 fist creates a libjvm.so library (Linking vm...) containing the llvm
shark JIT, this links ok.

Then icedtea6 links a launcher binary against this .so library and here the
linking fail, the launcher binary dont contain any llvm calls. 

The attached patch fixes this issue by making llvm generate .a files for
LLVMExecutionEngine JIT and Interpreter.


{                                                    \
            echo Linking vm...;                                         \
                                                 \
            gcc -m32 -Xlinker -O1 -shared                                 \
                       -Xlinker --version-script=mapfile_reorder -Xlinker
-soname=libjvm.so -L/usr/local/lib  -lpthread -lffi -ldl -lm  -o libjvm.so
abstractCompiler.o accessFlags.o adaptiveSizePolicy.o adjoiningGenerations.o
adjoiningVirtualSpaces.o ageTable.o allocation.o allocationStats.o aprofiler.o
arguments.o array.o arrayKlass.o arrayKlassKlass.o arrayOop.o asPSOldGen.o
asPSYoungGen.o asParNewGeneration.o assembler.o assembler_linux_zero.o
assembler_zero.o atomic.o attachListener.o attachListener_linux.o barrierSet.o
bcEscapeAnalyzer.o biasedLocking.o binaryTreeDictionary.o bitMap.o
blockOffsetTable.o bytecode.o bytecodeHistogram.o bytecodeInterpreter.o
bytecodeInterpreterWithChecks.o bytecodeInterpreter_zero.o bytecodeStream.o
bytecodeTracer.o bytecodes.o bytecodes_zero.o cSpaceCounters.o
cardTableExtension.o cardTableModRefBS.o cardTableRS.o ciArray.o ciArrayKlass.o
ciConstant.o ciConstantPoolCache.o ciEnv.o ciExceptionHandler.o ciField.o
ciFlags.o ciInstance.o ciInstanceKlass.o ciInstanceKlassKlass.o ciKlass.o
ciKlassKlass.o ciMethod.o ciMethodBlocks.o ciMethodData.o ciMethodKlass.o
ciNullObject.o ciObjArray.o ciObjArrayKlass.o ciObjArrayKlassKlass.o ciObject.o
ciObjectFactory.o ciSignature.o ciStreams.o ciSymbol.o ciSymbolKlass.o ciType.o
ciTypeArray.o ciTypeArrayKlass.o ciTypeArrayKlassKlass.o ciTypeFlow.o
ciUtilities.o classFileError.o classFileParser.o classFileStream.o
classLoader.o classLoadingService.o classify.o cmsAdaptiveSizePolicy.o
cmsCollectorPolicy.o cmsGCAdaptivePolicyCounters.o cmsLockVerifier.o
cmsPermGen.o coTracker.o codeBlob.o codeBuffer.o codeCache.o collectedHeap.o
collectionSetChooser.o collectorCounters.o collectorPolicy.o
compactibleFreeListSpace.o compactingPermGenGen.o compilationPolicy.o
compileBroker.o compileLog.o compiledIC.o compiledICHolderKlass.o
compiledICHolderOop.o compilerOracle.o compressedStream.o concurrentG1Refine.o
concurrentG1RefineThread.o concurrentGCThread.o concurrentMark.o
concurrentMarkSweepGeneration.o concurrentMarkSweepThread.o
concurrentMarkThread.o concurrentZFThread.o constMethodKlass.o constMethodOop.o
constantPoolKlass.o constantPoolOop.o constantTag.o copy.o cpCacheKlass.o
cpCacheOop.o cppInterpreter.o cppInterpreter_zero.o debug.o debugInfo.o
debugInfoRec.o debug_zero.o defNewGeneration.o deoptimization.o
depChecker_zero.o dependencies.o dictionary.o dirtyCardQueue.o disassembler.o
disassembler_zero.o dtraceAttacher.o dtraceJSDT.o dtraceJSDT_linux.o dump.o
dump_zero.o events.o evmCompat.o exceptionHandlerTable.o exceptions.o
fieldDescriptor.o fieldType.o filemap.o forte.o fprofiler.o frame.o
frame_zero.o freeBlockDictionary.o freeChunk.o freeList.o g1BlockOffsetTable.o
g1CollectedHeap.o g1CollectorPolicy.o g1MMUTracker.o g1MarkSweep.o g1RemSet.o
g1SATBCardTableModRefBS.o g1_globals.o gSpaceCounters.o
gcAdaptivePolicyCounters.o gcCause.o gcLocker.o gcOverheadReporter.o
gcPolicyCounters.o gcStats.o gcTaskManager.o gcTaskThread.o gcUtil.o
genCollectedHeap.o genMarkSweep.o genRemSet.o generateOopMap.o generation.o
generationCounters.o generationSpec.o globalDefinitions.o globals.o
growableArray.o handles.o hashtable.o heap.o heapDumper.o heapInspection.o
heapRegion.o heapRegionRemSet.o heapRegionSeq.o histogram.o hpi.o hpi_linux.o
icBuffer.o icBuffer_zero.o icache.o icache_zero.o immutableSpace.o init.o
instanceKlass.o instanceKlassKlass.o instanceOop.o instanceRefKlass.o
intHisto.o interfaceSupport.o interp_masm_zero.o interpreter.o
interpreterRT_zero.o interpreterRuntime.o interpreter_zero.o
invocationCounter.o iterator.o java.o javaAssertions.o javaCalls.o
javaClasses.o jni.o jniCheck.o jniFastGetField.o jniFastGetField_zero.o
jniHandles.o jniPeriodicChecker.o jvm.o jvm_linux.o
jvmtiClassFileReconstituter.o jvmtiCodeBlobEvents.o jvmtiEnter.o
jvmtiEnterTrace.o jvmtiEnv.o jvmtiEnvBase.o jvmtiEnvThreadState.o
jvmtiEventController.o jvmtiExport.o jvmtiExtensions.o jvmtiGetLoadedClasses.o
jvmtiImpl.o jvmtiManageCapabilities.o jvmtiRedefineClasses.o jvmtiTagMap.o
jvmtiThreadState.o jvmtiTrace.o jvmtiUtil.o klass.o klassKlass.o klassOop.o
klassVtable.o linkResolver.o loaderConstraints.o location.o lowMemoryDetector.o
management.o markOop.o markSweep.o memRegion.o memoryManager.o memoryPool.o
memoryService.o memprofiler.o methodComparator.o methodDataKlass.o
methodDataOop.o methodKlass.o methodLiveness.o methodOop.o monitorChunk.o
mutableNUMASpace.o mutableSpace.o mutex.o mutexLocker.o mutex_linux.o
nativeInst_zero.o nativeLookup.o nmethod.o numberSeq.o objArrayKlass.o
objArrayKlassKlass.o objArrayOop.o objectMonitor_linux.o objectStartArray.o
oop.o oopFactory.o oopMap.o oopMapCache.o oopRecorder.o oopsHierarchy.o
orderAccess.o os.o osThread.o osThread_linux.o os_linux.o os_linux_zero.o
ostream.o parCardTableModRefBS.o parGCAllocBuffer.o parMarkBitMap.o
parNewGeneration.o parallelScavengeHeap.o pcDesc.o pcTasks.o perf.o perfData.o
perfMemory.o perfMemory_linux.o permGen.o placeholders.o preserveException.o
privilegedStack.o psAdaptiveSizePolicy.o psCompactionManager.o
psGCAdaptivePolicyCounters.o psGenerationCounters.o psMarkSweep.o
psMarkSweepDecorator.o psMemoryPool.o psOldGen.o psParallelCompact.o
psPermGen.o psPromotionLAB.o psPromotionManager.o psScavenge.o psTasks.o
psVirtualspace.o psYoungGen.o ptrQueue.o referencePolicy.o referenceProcessor.o
reflection.o reflectionUtils.o register.o register_definitions_zero.o
register_zero.o relocInfo.o relocInfo_zero.o relocator.o resolutionErrors.o
resourceArea.o restore.o rewriter.o rframe.o runtimeService.o safepoint.o
satbQueue.o scopeDesc.o serialize.o sharedHeap.o sharedRuntime.o
sharedRuntimeTrans.o sharedRuntimeTrig.o sharedRuntime_zero.o sharkBlock.o
sharkBuilder.o sharkCacheDecache.o sharkCompiler.o sharkConstant.o sharkEntry.o
sharkFunction.o sharkInliner.o sharkIntrinsics.o sharkMemoryManager.o
sharkRuntime.o sharkState.o sharkStateScanner.o sharkTopLevelBlock.o
sharkType.o shark_globals.o signature.o sizes.o space.o spaceCounters.o
spaceDecorator.o sparsePRT.o specialized_oop_closures.o stackMapFrame.o
stackMapTable.o stackValue.o stackValueCollection.o statSampler.o
stubCodeGenerator.o stubGenerator_zero.o stubRoutines.o stubRoutines_linux.o
stubRoutines_zero.o stubs.o survRateGroup.o sweeper.o symbolKlass.o symbolOop.o
symbolTable.o synchronizer.o systemDictionary.o task.o taskqueue.o
templateInterpreter.o templateInterpreter_zero.o templateTable.o
templateTable_zero.o tenuredGeneration.o thread.o threadCritical_linux.o
threadLS_linux_zero.o threadLocalAllocBuffer.o threadLocalStorage.o
threadService.o thread_linux_zero.o timer.o typeArrayKlass.o
typeArrayKlassKlass.o typeArrayOop.o unhandledOops.o universe.o unsafe.o utf8.o
verificationType.o verifier.o vframe.o vframeArray.o vframe_hp.o virtualspace.o
vmCMSOperations.o vmError.o vmError_linux.o vmGCOperations.o vmPSOperations.o
vmStructs.o vmSymbols.o vmThread.o vm_operations.o vm_operations_g1.o
vm_version.o vm_version_linux_zero.o vm_version_zero.o vmreg.o vmreg_zero.o
vtableStubs.o vtableStubs_zero.o vtune_linux.o workgroup.o xmlstream.o
yieldingWorkgroup.o sharkValue.o  -lstdc++ -lm -ldl -lpthread -lffi
-lLLVMX86AsmPrinter -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter
-lLLVMJIT -lLLVMExecutionEngine -lLLVMCodeGen -lLLVMScalarOpts
-lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMCore
-lLLVMSupport -lLLVMSystem;       \
                                                \
            rm -f libjvm.so.1; ln -s libjvm.so libjvm.so.1;                    
             \
            if [ -x /usr/sbin/selinuxenabled ] ; then                   \
              /usr/sbin/selinuxenabled;                                 \
              if [ $? = 0 ] ; then                                      \
                /usr/bin/chcon -t textrel_shlib_t libjvm.so;                  
\
                if [ $? != 0 ]; then                                   \
                  echo "ERROR: Cannot chcon libjvm.so";                 \
                fi                                                      \
              fi                                                        \
            fi                                                          \
        }
Linking vm...
{ \
            echo Linking launcher...; \
             \
            gcc -m32 -Xlinker -O1 -m32 -export-dynamic  -L `pwd` -o gamma
launcher.o -ljvm -lm -ldl -lpthread; \
             \
        }
Linking launcher...
/home/xerxes/icedtea6/openjdk-ecj/build/linux-i586/hotspot/outputdir/linux_zero_shark/product/libjvm.so:
undefined reference to `llvm::sys::Mutex::Mutex(bool)'
/home/xerxes/icedtea6/openjdk-ecj/build/linux-i586/hotspot/outputdir/linux_zero_shark/product/libjvm.so:
undefined reference to `llvm::sys::Mutex::~Mutex()'
/home/xerxes/icedtea6/openjdk-ecj/build/linux-i586/hotspot/outputdir/linux_zero_shark/product/libjvm.so:
undefined reference to `llvm::sys::Mutex::release()'
/home/xerxes/icedtea6/openjdk-ecj/build/linux-i586/hotspot/outputdir/linux_zero_shark/product/libjvm.so:
undefined reference to `llvm::sys::Mutex::acquire()'
collect2: ld returned 1 exit status
make[7]: *** [gamma] Error 1


-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to