Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions source/loader/layers/sanitizer/common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,11 @@ struct SourceInfo {
int column = 0;
};

struct ModuleInfo {
std::string name;
uptr addr;
};

enum class DeviceType : uint64_t { UNKNOWN = 0, CPU, GPU_PVC, GPU_DG2 };

inline const char *ToString(DeviceType Type) {
Expand Down
19 changes: 18 additions & 1 deletion source/loader/layers/sanitizer/linux/symbolizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
*/
#include "common.hpp"
#include "link.h"
#include "llvm/DebugInfo/Symbolize/DIPrinter.h"
#include "llvm/DebugInfo/Symbolize/Symbolize.h"

Expand All @@ -27,6 +29,20 @@ llvm::symbolize::PrinterConfig GetPrinterConfig() {
return Config;
}

uptr GetModuleBase(const char *ModuleName) {
ModuleInfo Data{ModuleName, 0};
dl_iterate_phdr(
[](struct dl_phdr_info *Info, size_t, void *Arg) {
ModuleInfo *Data = (ModuleInfo *)Arg;
if (strstr(Info->dlpi_name, Data->name.c_str())) {
Data->addr = (uptr)Info->dlpi_addr;
}
return 0;
},
(void *)&Data);
return Data.addr;
}

} // namespace ur_sanitizer_layer

extern "C" {
Expand All @@ -49,7 +65,8 @@ void SymbolizeCode(const char *ModuleName, uint64_t ModuleOffset,

auto ResOrErr = ur_sanitizer_layer::GetSymbolizer()->symbolizeInlinedCode(
ModuleName,
{ModuleOffset, llvm::object::SectionedAddress::UndefSection});
{ModuleOffset - ur_sanitizer_layer::GetModuleBase(ModuleName),
llvm::object::SectionedAddress::UndefSection});

if (!ResOrErr) {
return;
Expand Down
8 changes: 5 additions & 3 deletions source/loader/layers/sanitizer/stacktrace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
*/

#include "stacktrace.hpp"
#include "asan_interceptor.hpp"
#include "ur_sanitizer_layer.hpp"

extern "C" {
Expand Down Expand Up @@ -92,9 +93,10 @@ void StackTrace::print() const {
BacktraceInfo BI = BacktraceSymbols[i];

// Skip runtime modules
if (Contains(BI, "libsycl.so") ||
Contains(BI, "libpi_unified_runtime.so") ||
Contains(BI, "libur_loader.so")) {
if (!getContext()->interceptor->getOptions().Debug &&
(Contains(BI, "libsycl.so") || Contains(BI, "libur_loader.so") ||
Contains(BI, "libomptarget.rtl.unified_runtime.so") ||
Contains(BI, "libomptarget.so"))) {
continue;
}

Expand Down
Loading