From: Christian Sigg Date: Thu, 18 Feb 2021 21:11:20 +0000 (+0100) Subject: [mlir] Load dynamic libraries in JitRunner from absolute paths so that GDB can find... X-Git-Tag: llvmorg-14-init~14646 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c86c96a710720296b6e904170f0e157d3c7dcc84;p=platform%2Fupstream%2Fllvm.git [mlir] Load dynamic libraries in JitRunner from absolute paths so that GDB can find the symbol tables. Reviewed By: mehdi_amini, ftynse Differential Revision: https://reviews.llvm.org/D96759 --- diff --git a/mlir/lib/ExecutionEngine/JitRunner.cpp b/mlir/lib/ExecutionEngine/JitRunner.cpp index 9c67f27..cf32c08 100644 --- a/mlir/lib/ExecutionEngine/JitRunner.cpp +++ b/mlir/lib/ExecutionEngine/JitRunner.cpp @@ -158,8 +158,16 @@ static Error compileAndExecute(Options &options, ModuleOp module, // If shared library implements custom mlir-runner library init and destroy // functions, we'll use them to register the library with the execution // engine. Otherwise we'll pass library directly to the execution engine. - SmallVector libs(options.clSharedLibs.begin(), - options.clSharedLibs.end()); + SmallVector, 4> libPaths; + + // Use absolute library path so that gdb can find the symbol table. + transform( + options.clSharedLibs, std::back_inserter(libPaths), + [](std::string libPath) { + SmallString<256> absPath(libPath.begin(), libPath.end()); + cantFail(llvm::errorCodeToError(llvm::sys::fs::make_absolute(absPath))); + return absPath; + }); // Libraries that we'll pass to the ExecutionEngine for loading. SmallVector executionEngineLibs; @@ -171,8 +179,8 @@ static Error compileAndExecute(Options &options, ModuleOp module, SmallVector destroyFns; // Handle libraries that do support mlir-runner init/destroy callbacks. - for (auto libPath : libs) { - auto lib = llvm::sys::DynamicLibrary::getPermanentLibrary(libPath.data()); + for (auto &libPath : libPaths) { + auto lib = llvm::sys::DynamicLibrary::getPermanentLibrary(libPath.c_str()); void *initSym = lib.getAddressOfSymbol("__mlir_runner_init"); void *destroySim = lib.getAddressOfSymbol("__mlir_runner_destroy");