diff --git a/Makefile.in b/Makefile.in index a0f7a11f5bb..950c67fe751 100644 --- a/Makefile.in +++ b/Makefile.in @@ -38,7 +38,7 @@ ifeq ($(CFG_OSTYPE), Linux) CFG_LIB_NAME=lib$(1).so CFG_GCC_CFLAGS += -fPIC -march=i686 CFG_GCC_LINK_FLAGS += -shared -fPIC -ldl -lpthread -lrt - CFG_GCC_DEF_FLAG := + CFG_GCC_DEF_FLAG := -Wl,--export-dynamic,--dynamic-list= ifeq ($(CFG_CPUTYPE), x86_64) CFG_GCC_CFLAGS += -m32 CFG_GCC_LINK_FLAGS += -m32 @@ -53,7 +53,7 @@ ifeq ($(CFG_OSTYPE), Darwin) CFG_UNIXY := 1 CFG_LDENV := DYLD_LIBRARY_PATH CFG_GCC_LINK_FLAGS += -dynamiclib -lpthread - CFG_GCC_DEF_FLAG := -exported_symbols_list + CFG_GCC_DEF_FLAG := -Wl,-exported_symbols_list, # Darwin has a very blurry notion of "64 bit", and claims it's running # "on an i386" when the whole userspace is 64-bit and the compiler # emits 64-bit binaries by default. So we just force -m32 here. Smarter @@ -148,7 +148,7 @@ ifdef CFG_GCC CFG_COMPILE_C = $(CFG_GCC_CROSS)g++ $(CFG_GCC_CFLAGS) -c -o $(1) $(2) CFG_DEPEND_C = $(CFG_GCC_CROSS)g++ $(CFG_GCC_CFLAGS) -MT "$(1)" -MM $(2) CFG_LINK_C = $(CFG_GCC_CROSS)g++ $(CFG_GCC_LINK_FLAGS) -o $(1) \ - $(CFG_GCC_DEF_FLAG) $(3) $(2) + $(CFG_GCC_DEF_FLAG)$(3) $(2) else CFG_ERR := $(error please try on a system with gcc) endif diff --git a/src/rt/rustrt.linux.def b/src/rt/rustrt.linux.def new file mode 100644 index 00000000000..f7127b40f48 --- /dev/null +++ b/src/rt/rustrt.linux.def @@ -0,0 +1,70 @@ +{ + align_of; + debug_box; + debug_fn; + debug_obj; + debug_opaque; + debug_ptrcast; + debug_tag; + debug_trap; + debug_tydesc; + do_gc; + last_os_error; + rand_free; + rand_new; + rand_next; + refcount; + rust_file_is_dir; + rust_get_stdin; + rust_get_stdout; + rust_run_program; + rust_start; + size_of; + str_alloc; + str_buf; + str_byte_len; + str_from_buf; + str_from_cstr; + str_from_vec; + task_sleep; + unsupervise; + upcall_clone_chan; + upcall_del_chan; + upcall_del_port; + upcall_exit; + upcall_fail; + upcall_flush_chan; + upcall_free; + upcall_get_type_desc; + upcall_grow_task; + upcall_join; + upcall_kill; + upcall_log_int; + upcall_log_str; + upcall_malloc; + upcall_mark; + upcall_new_chan; + upcall_new_port; + upcall_new_str; + upcall_new_task; + upcall_new_thread; + upcall_new_vec; + upcall_recv; + upcall_require_c_sym; + upcall_require_rust_sym; + upcall_send; + upcall_sleep; + upcall_start_task; + upcall_start_thread; + upcall_trace_str; + upcall_trace_word; + upcall_vec_grow; + upcall_yield; + vec_alloc; + vec_alloc_mut; + vec_buf; + vec_len; + vec_len_set; + vec_print_debug_info; +} + diff --git a/src/rustllvm/rustllvm.linux.def b/src/rustllvm/rustllvm.linux.def new file mode 100644 index 00000000000..795db5d73c7 --- /dev/null +++ b/src/rustllvm/rustllvm.linux.def @@ -0,0 +1,590 @@ +{ + LLVMRustCreateMemoryBufferWithContentsOfFile; + LLVMRustGetLastError; + LLVMCreateObjectFile; + LLVMDisposeObjectFile; + LLVMGetSections; + LLVMDisposeSectionIterator; + LLVMIsSectionIteratorAtEnd; + LLVMMoveToNextSection; + LLVMGetSectionName; + LLVMGetSectionSize; + LLVMGetSectionContents; + LLVMABIAlignmentOfType; + LLVMABISizeOfType; + LLVMAddAggressiveDCEPass; + LLVMAddAlias; + LLVMAddArgumentPromotionPass; + LLVMAddAttribute; + LLVMAddCFGSimplificationPass; + LLVMAddCase; + LLVMAddConstantMergePass; + LLVMAddConstantPropagationPass; + LLVMAddDeadArgEliminationPass; + LLVMAddDeadStoreEliminationPass; + LLVMAddDeadTypeEliminationPass; + LLVMAddDemoteMemoryToRegisterPass; + LLVMAddDestination; + LLVMAddFunction; + LLVMAddFunctionAttr; + LLVMAddFunctionAttrsPass; + LLVMAddFunctionInliningPass; + LLVMAddGVNPass; + LLVMAddGlobal; + LLVMAddGlobalDCEPass; + LLVMAddGlobalInAddressSpace; + LLVMAddGlobalMapping; + LLVMAddGlobalOptimizerPass; + LLVMAddIPConstantPropagationPass; + LLVMAddIPSCCPPass; + LLVMAddIncoming; + LLVMAddIndVarSimplifyPass; + LLVMAddInstrAttribute; + LLVMAddInstructionCombiningPass; + LLVMAddInternalizePass; + LLVMAddJumpThreadingPass; + LLVMAddLICMPass; + LLVMAddLoopDeletionPass; + LLVMAddLoopRotatePass; + LLVMAddLoopUnrollPass; + LLVMAddLoopUnswitchPass; + LLVMAddLowerSetJmpPass; + LLVMAddMemCpyOptPass; + LLVMAddModule; + LLVMAddModuleProvider; + LLVMAddPromoteMemoryToRegisterPass; + LLVMAddPruneEHPass; + LLVMAddRaiseAllocationsPass; + LLVMAddReassociatePass; + LLVMAddSCCPPass; + LLVMAddScalarReplAggregatesPass; + LLVMAddScalarReplAggregatesPassWithThreshold; + LLVMAddSimplifyLibCallsPass; + LLVMAddStripDeadPrototypesPass; + LLVMAddStripSymbolsPass; + LLVMAddTailCallEliminationPass; + LLVMAddTargetData; + LLVMAddTypeName; + LLVMAddVerifierPass; + LLVMAlignOf; + LLVMAppendBasicBlock; + LLVMAppendBasicBlockInContext; + LLVMArrayType; + LLVMBasicBlockAsValue; + LLVMBlockAddress; + LLVMBuildAShr; + LLVMBuildAdd; + LLVMBuildAggregateRet; + LLVMBuildAlloca; + LLVMBuildAnd; + LLVMBuildArrayAlloca; + LLVMBuildArrayMalloc; + LLVMBuildBinOp; + LLVMBuildBitCast; + LLVMBuildBr; + LLVMBuildCall; + LLVMBuildCast; + LLVMBuildCondBr; + LLVMBuildExactSDiv; + LLVMBuildExtractElement; + LLVMBuildExtractValue; + LLVMBuildFAdd; + LLVMBuildFCmp; + LLVMBuildFDiv; + LLVMBuildFMul; + LLVMBuildFNeg; + LLVMBuildFPCast; + LLVMBuildFPExt; + LLVMBuildFPToSI; + LLVMBuildFPToUI; + LLVMBuildFPTrunc; + LLVMBuildFRem; + LLVMBuildFSub; + LLVMBuildFree; + LLVMBuildGEP; + LLVMBuildGlobalString; + LLVMBuildGlobalStringPtr; + LLVMBuildICmp; + LLVMBuildInBoundsGEP; + LLVMBuildIndirectBr; + LLVMBuildInsertElement; + LLVMBuildInsertValue; + LLVMBuildIntCast; + LLVMBuildIntToPtr; + LLVMBuildInvoke; + LLVMBuildIsNotNull; + LLVMBuildIsNull; + LLVMBuildLShr; + LLVMBuildLoad; + LLVMBuildMalloc; + LLVMBuildMul; + LLVMBuildNSWAdd; + LLVMBuildNSWMul; + LLVMBuildNSWNeg; + LLVMBuildNSWSub; + LLVMBuildNUWAdd; + LLVMBuildNUWMul; + LLVMBuildNUWNeg; + LLVMBuildNUWSub; + LLVMBuildNeg; + LLVMBuildNot; + LLVMBuildOr; + LLVMBuildPhi; + LLVMBuildPointerCast; + LLVMBuildPtrDiff; + LLVMBuildPtrToInt; + LLVMBuildRet; + LLVMBuildRetVoid; + LLVMBuildSDiv; + LLVMBuildSExt; + LLVMBuildSExtOrBitCast; + LLVMBuildSIToFP; + LLVMBuildSRem; + LLVMBuildSelect; + LLVMBuildShl; + LLVMBuildShuffleVector; + LLVMBuildStore; + LLVMBuildStructGEP; + LLVMBuildSub; + LLVMBuildSwitch; + LLVMBuildTrunc; + LLVMBuildTruncOrBitCast; + LLVMBuildUDiv; + LLVMBuildUIToFP; + LLVMBuildURem; + LLVMBuildUnreachable; + LLVMBuildUnwind; + LLVMBuildVAArg; + LLVMBuildXor; + LLVMBuildZExt; + LLVMBuildZExtOrBitCast; + LLVMByteOrder; + LLVMCallFrameAlignmentOfType; + LLVMClearInsertionPosition; + LLVMConstAShr; + LLVMConstAdd; + LLVMConstAllOnes; + LLVMConstAnd; + LLVMConstArray; + LLVMConstBitCast; + LLVMConstExactSDiv; + LLVMConstExtractElement; + LLVMConstExtractValue; + LLVMConstFAdd; + LLVMConstFCmp; + LLVMConstFDiv; + LLVMConstFMul; + LLVMConstFNeg; + LLVMConstFPCast; + LLVMConstFPExt; + LLVMConstFPToSI; + LLVMConstFPToUI; + LLVMConstFPTrunc; + LLVMConstFRem; + LLVMConstFSub; + LLVMConstGEP; + LLVMConstICmp; + LLVMConstInBoundsGEP; + LLVMConstInlineAsm; + LLVMConstInsertElement; + LLVMConstInsertValue; + LLVMConstInt; + LLVMConstIntCast; + LLVMConstIntGetSExtValue; + LLVMConstIntGetZExtValue; + LLVMConstIntOfArbitraryPrecision; + LLVMConstIntOfString; + LLVMConstIntOfStringAndSize; + LLVMConstIntToPtr; + LLVMConstLShr; + LLVMConstMul; + LLVMConstNSWAdd; + LLVMConstNSWMul; + LLVMConstNSWNeg; + LLVMConstNSWSub; + LLVMConstNUWAdd; + LLVMConstNUWMul; + LLVMConstNUWNeg; + LLVMConstNUWSub; + LLVMConstNeg; + LLVMConstNot; + LLVMConstNull; + LLVMConstOr; + LLVMConstPointerCast; + LLVMConstPointerNull; + LLVMConstPtrToInt; + LLVMConstReal; + LLVMConstRealOfString; + LLVMConstRealOfStringAndSize; + LLVMConstSDiv; + LLVMConstSExt; + LLVMConstSExtOrBitCast; + LLVMConstSIToFP; + LLVMConstSRem; + LLVMConstSelect; + LLVMConstShl; + LLVMConstShuffleVector; + LLVMConstString; + LLVMConstStringInContext; + LLVMConstStruct; + LLVMConstStructInContext; + LLVMConstSub; + LLVMConstTrunc; + LLVMConstTruncOrBitCast; + LLVMConstUDiv; + LLVMConstUIToFP; + LLVMConstURem; + LLVMConstVector; + LLVMConstXor; + LLVMConstZExt; + LLVMConstZExtOrBitCast; + LLVMContextCreate; + LLVMContextDispose; + LLVMCopyStringRepOfTargetData; + LLVMCountBasicBlocks; + LLVMCountIncoming; + LLVMCountParamTypes; + LLVMCountParams; + LLVMCountStructElementTypes; + LLVMCreateBuilder; + LLVMCreateBuilderInContext; + LLVMCreateExecutionEngine; + LLVMCreateExecutionEngineForModule; + LLVMCreateFunctionPassManager; + LLVMCreateFunctionPassManagerForModule; + LLVMCreateGenericValueOfFloat; + LLVMCreateGenericValueOfInt; + LLVMCreateGenericValueOfPointer; + LLVMCreateInterpreter; + LLVMCreateInterpreterForModule; + LLVMCreateJITCompiler; + LLVMCreateJITCompilerForModule; + LLVMCreateMemoryBufferWithContentsOfFile; + LLVMCreateMemoryBufferWithSTDIN; + LLVMCreateModuleProviderForExistingModule; + LLVMCreateObjectFile; + LLVMCreatePassManager; + LLVMCreateTargetData; + LLVMCreateTypeHandle; + LLVMDeleteBasicBlock; + LLVMDeleteFunction; + LLVMDeleteGlobal; + LLVMDeleteTypeName; + LLVMDisposeBuilder; + LLVMDisposeExecutionEngine; + LLVMDisposeGenericValue; + LLVMDisposeMemoryBuffer; + LLVMDisposeMessage; + LLVMDisposeModule; + LLVMDisposeModuleProvider; + LLVMDisposeObjectFile; + LLVMDisposePassManager; + LLVMDisposeSectionIterator; + LLVMDisposeTargetData; + LLVMDisposeTypeHandle; + LLVMDoubleType; + LLVMDoubleTypeInContext; + LLVMDumpModule; + LLVMDumpValue; + LLVMElementAtOffset; + LLVMFP128Type; + LLVMFP128TypeInContext; + LLVMFinalizeFunctionPassManager; + LLVMFindFunction; + LLVMFloatType; + LLVMFloatTypeInContext; + LLVMFreeMachineCodeForFunction; + LLVMFunctionType; + LLVMGenericValueIntWidth; + LLVMGenericValueToFloat; + LLVMGenericValueToInt; + LLVMGenericValueToPointer; + LLVMGetAlignment; + LLVMGetArrayLength; + LLVMGetAttribute; + LLVMGetBasicBlockParent; + LLVMGetBasicBlocks; + LLVMGetBitcodeModule; + LLVMGetBitcodeModuleInContext; + LLVMGetBitcodeModuleProvider; + LLVMGetBitcodeModuleProviderInContext; + LLVMGetConstOpcode; + LLVMGetCurrentDebugLocation; + LLVMGetDataLayout; + LLVMGetElementType; + LLVMGetEntryBasicBlock; + LLVMGetExecutionEngineTargetData; + LLVMGetFirstBasicBlock; + LLVMGetFirstFunction; + LLVMGetFirstGlobal; + LLVMGetFirstInstruction; + LLVMGetFirstParam; + LLVMGetFirstUse; + LLVMGetFunctionAttr; + LLVMGetFunctionCallConv; + LLVMGetGC; + LLVMGetGlobalContext; + LLVMGetGlobalContext; + LLVMGetGlobalParent; + LLVMGetGlobalPassRegistry; + LLVMGetIncomingBlock; + LLVMGetIncomingValue; + LLVMGetInitializer; + LLVMGetInsertBlock; + LLVMGetInstructionCallConv; + LLVMGetInstructionParent; + LLVMGetIntTypeWidth; + LLVMGetIntrinsicID; + LLVMGetLastBasicBlock; + LLVMGetLastFunction; + LLVMGetLastGlobal; + LLVMGetLastInstruction; + LLVMGetLastParam; + LLVMGetLinkage; + LLVMGetMDKindID; + LLVMGetMDKindIDInContext; + LLVMGetMetadata; + LLVMGetModuleContext; + LLVMGetNamedFunction; + LLVMGetNamedGlobal; + LLVMGetNextBasicBlock; + LLVMGetNextFunction; + LLVMGetNextGlobal; + LLVMGetNextInstruction; + LLVMGetNextParam; + LLVMGetNextUse; + LLVMGetNumOperands; + LLVMGetOperand; + LLVMGetParam; + LLVMGetParamParent; + LLVMGetParamTypes; + LLVMGetParams; + LLVMGetPointerAddressSpace; + LLVMGetPointerToGlobal; + LLVMGetPreviousBasicBlock; + LLVMGetPreviousFunction; + LLVMGetPreviousGlobal; + LLVMGetPreviousInstruction; + LLVMGetPreviousParam; + LLVMGetReturnType; + LLVMGetSection; + LLVMGetSectionContents; + LLVMGetSectionName; + LLVMGetSectionSize; + LLVMGetSections; + LLVMGetStructElementTypes; + LLVMGetTarget; + LLVMGetTypeByName; + LLVMGetTypeContext; + LLVMGetTypeKind; + LLVMGetTypeName; + LLVMGetUndef; + LLVMGetUsedValue; + LLVMGetUser; + LLVMGetValueName; + LLVMGetVectorSize; + LLVMGetVisibility; + LLVMHasMetadata; + LLVMInitializeCBackendTarget; + LLVMInitializeCBackendTargetInfo; + LLVMInitializeCodeGen; + LLVMInitializeFunctionPassManager; + LLVMInitializeIPA; + LLVMInitializeInstCombine; + LLVMInitializeInstrumentation; + LLVMInitializeScalarOpts; + LLVMInitializeTarget; + LLVMInitializeTransformUtils; + LLVMInitializeX86AsmLexer; + LLVMInitializeX86AsmLexer; + LLVMInitializeX86AsmParser; + LLVMInitializeX86AsmParser; + LLVMInitializeX86AsmPrinter; + LLVMInitializeX86AsmPrinter; + LLVMInitializeX86Disassembler; + LLVMInitializeX86Disassembler; + LLVMInitializeX86Target; + LLVMInitializeX86Target; + LLVMInitializeX86TargetInfo; + LLVMInitializeX86TargetInfo; + LLVMInsertBasicBlock; + LLVMInsertBasicBlockInContext; + LLVMInsertIntoBuilder; + LLVMInsertIntoBuilderWithName; + LLVMInt16Type; + LLVMInt16TypeInContext; + LLVMInt1Type; + LLVMInt1TypeInContext; + LLVMInt32Type; + LLVMInt32TypeInContext; + LLVMInt64Type; + LLVMInt64TypeInContext; + LLVMInt8Type; + LLVMInt8TypeInContext; + LLVMIntPtrType; + LLVMIntType; + LLVMIntTypeInContext; + LLVMInvalidateStructLayout; + LLVMIsAAllocaInst; + LLVMIsAArgument; + LLVMIsABasicBlock; + LLVMIsABinaryOperator; + LLVMIsABitCastInst; + LLVMIsABranchInst; + LLVMIsACallInst; + LLVMIsACastInst; + LLVMIsACmpInst; + LLVMIsAConstant; + LLVMIsAConstantAggregateZero; + LLVMIsAConstantArray; + LLVMIsAConstantExpr; + LLVMIsAConstantFP; + LLVMIsAConstantInt; + LLVMIsAConstantPointerNull; + LLVMIsAConstantStruct; + LLVMIsAConstantVector; + LLVMIsADbgDeclareInst; + LLVMIsADbgInfoIntrinsic; + LLVMIsAEHSelectorInst; + LLVMIsAExtractElementInst; + LLVMIsAExtractValueInst; + LLVMIsAFCmpInst; + LLVMIsAFPExtInst; + LLVMIsAFPToSIInst; + LLVMIsAFPToUIInst; + LLVMIsAFPTruncInst; + LLVMIsAFunction; + LLVMIsAGetElementPtrInst; + LLVMIsAGlobalAlias; + LLVMIsAGlobalValue; + LLVMIsAGlobalVariable; + LLVMIsAICmpInst; + LLVMIsAInlineAsm; + LLVMIsAInsertElementInst; + LLVMIsAInsertValueInst; + LLVMIsAInstruction; + LLVMIsAIntToPtrInst; + LLVMIsAIntrinsicInst; + LLVMIsAInvokeInst; + LLVMIsALoadInst; + LLVMIsAMemCpyInst; + LLVMIsAMemIntrinsic; + LLVMIsAMemMoveInst; + LLVMIsAMemSetInst; + LLVMIsAPHINode; + LLVMIsAPtrToIntInst; + LLVMIsAReturnInst; + LLVMIsASExtInst; + LLVMIsASIToFPInst; + LLVMIsASelectInst; + LLVMIsAShuffleVectorInst; + LLVMIsAStoreInst; + LLVMIsASwitchInst; + LLVMIsATerminatorInst; + LLVMIsATruncInst; + LLVMIsAUIToFPInst; + LLVMIsAUnaryInstruction; + LLVMIsAUndefValue; + LLVMIsAUnreachableInst; + LLVMIsAUnwindInst; + LLVMIsAUser; + LLVMIsAVAArgInst; + LLVMIsAZExtInst; + LLVMIsConstant; + LLVMIsDeclaration; + LLVMIsFunctionVarArg; + LLVMIsGlobalConstant; + LLVMIsNull; + LLVMIsPackedStruct; + LLVMIsSectionIteratorAtEnd; + LLVMIsTailCall; + LLVMIsThreadLocal; + LLVMIsUndef; + LLVMLabelType; + LLVMLabelTypeInContext; + LLVMLinkInInterpreter; + LLVMLinkInJIT; + LLVMLinkInMCJIT; + LLVMMDNode; + LLVMMDNodeInContext; + LLVMMDString; + LLVMMDStringInContext; + LLVMModuleCreateWithName; + LLVMModuleCreateWithNameInContext; + LLVMMoveBasicBlockAfter; + LLVMMoveBasicBlockBefore; + LLVMMoveToNextSection; + LLVMOffsetOfElement; + LLVMOpaqueType; + LLVMOpaqueTypeInContext; + LLVMPPCFP128Type; + LLVMPPCFP128TypeInContext; + LLVMParseBitcode; + LLVMParseBitcodeInContext; + LLVMPointerSize; + LLVMPointerType; + LLVMPositionBuilder; + LLVMPositionBuilderAtEnd; + LLVMPositionBuilderBefore; + LLVMPreferredAlignmentOfGlobal; + LLVMPreferredAlignmentOfType; + LLVMRecompileAndRelinkFunction; + LLVMRefineType; + LLVMRemoveAttribute; + LLVMRemoveFunctionAttr; + LLVMRemoveInstrAttribute; + LLVMRemoveModule; + LLVMRemoveModuleProvider; + LLVMReplaceAllUsesWith; + LLVMResolveTypeHandle; + LLVMRunFunction; + LLVMRunFunctionAsMain; + LLVMRunFunctionPassManager; + LLVMRunPassManager; + LLVMRunStaticConstructors; + LLVMRunStaticDestructors; + LLVMSetAlignment; + LLVMSetCurrentDebugLocation; + LLVMSetDataLayout; + LLVMSetFunctionCallConv; + LLVMSetGC; + LLVMSetGlobalConstant; + LLVMSetInitializer; + LLVMSetInstDebugLocation; + LLVMSetInstrParamAlignment; + LLVMSetInstructionCallConv; + LLVMSetLinkage; + LLVMSetMetadata; + LLVMSetModuleInlineAsm; + LLVMSetOperand; + LLVMSetParamAlignment; + LLVMSetSection; + LLVMSetTailCall; + LLVMSetTarget; + LLVMSetThreadLocal; + LLVMSetValueName; + LLVMSetVisibility; + LLVMSizeOf; + LLVMSizeOfTypeInBits; + LLVMStoreSizeOfType; + LLVMStructType; + LLVMStructTypeInContext; + LLVMTypeOf; + LLVMValueAsBasicBlock; + LLVMValueIsBasicBlock; + LLVMVectorType; + LLVMVerifyFunction; + LLVMVerifyModule; + LLVMViewFunctionCFG; + LLVMViewFunctionCFGOnly; + LLVMVoidType; + LLVMVoidTypeInContext; + LLVMWriteBitcodeToFD; + LLVMWriteBitcodeToFile; + LLVMWriteBitcodeToFileHandle; + LLVMX86FP80Type; + LLVMX86FP80TypeInContext; + LLVMX86MMXType; + LLVMX86MMXTypeInContext; +} +