llvm-project/llvm/lib/ExecutionEngine/Orc
Lang Hames ca6f58486f [ORC] Fix symbol dependence propagation algorithm in ObjectLinkingLayer.
ObjectLinkingLayer was not correctly propagating dependencies through local
symbols within an object. This could cause symbol lookup to return before a
searched-for symbol is ready if the following conditions are met:
(1) The definition of the symbol being searched for transitively depends on a
    local symbol within the same object, and that local symbol in turn
    transitively depends on an external symbol provided by some other module
    in the JIT.
(2) Concurrent compilation is enabled.
(3) Thread scheduling causes the lookup of the searched-for symbol to return
    before all transitive dependencies of the looked-up symbol are emitted.

This bug was found by inspection and has not been observed in practice.

A jitlink test case has been added to verify that symbol dependencies are
correctly propagated through local symbol definitions.
2020-02-11 12:56:41 -08:00
..
CMakeLists.txt [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
CompileOnDemandLayer.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
CompileUtils.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
Core.cpp [ORC] Add debug logging to JITDylib::addDependencies. 2020-02-11 12:56:40 -08:00
DebugUtils.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
ExecutionUtils.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
IRCompileLayer.cpp [ORC] Add support for emulated TLS to ORCv2. 2020-01-21 19:55:33 -08:00
IRTransformLayer.cpp [ORC] Add support for emulated TLS to ORCv2. 2020-01-21 19:55:33 -08:00
IndirectionUtils.cpp [NFC][ORC] Fix typos and whitespaces in comments 2020-01-03 21:54:03 +01:00
JITTargetMachineBuilder.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
LLJIT.cpp [ORC] Add support for emulated TLS to ORCv2. 2020-01-21 19:55:33 -08:00
LLVMBuild.txt Break out OrcError and RPC 2019-10-29 17:31:28 -07:00
Layer.cpp [ORC] Add support for emulated TLS to ORCv2. 2020-01-21 19:55:33 -08:00
LazyReexports.cpp [ORC] Update lazyReexports to support aliases with different symbol names. 2020-01-15 08:02:53 -08:00
Legacy.cpp [ORC][JITLink] Add support for weak references, and improve handling of static 2019-11-28 13:30:49 -08:00
NullResolver.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ObjectLinkingLayer.cpp [ORC] Fix symbol dependence propagation algorithm in ObjectLinkingLayer. 2020-02-11 12:56:41 -08:00
ObjectTransformLayer.cpp [ORC] Add a utility to support dumping JIT'd objects to disk for debugging. 2019-11-14 21:27:19 -08:00
OrcABISupport.cpp [Support] Add error handling to sys::Process::getPageSize(). 2019-05-08 02:11:07 +00:00
OrcCBindings.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
OrcCBindingsStack.h Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
OrcMCJITReplacement.cpp [ORC] Add deprecation warnings to ORCv1 layers and utilities. 2019-07-17 16:40:52 +00:00
OrcMCJITReplacement.h Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
RTDyldObjectLinkingLayer.cpp [ORC] Add weak symbol support to defineMaterializing, fix for PR40074. 2020-01-19 10:46:07 -08:00
SpeculateAnalyses.cpp [ORCv2] - New Speculate Query Implementation 2019-08-27 18:23:36 +00:00
Speculation.cpp [Alignment][NFC] Deprecate Align::None() 2020-01-24 12:53:58 +01:00
ThreadSafeModule.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00