diff options
author | Krasimir Georgiev <krasimir@google.com> | 2023-04-14 08:18:43 +0000 |
---|---|---|
committer | Krasimir Georgiev <krasimir@google.com> | 2023-04-14 08:18:43 +0000 |
commit | de4c038c7ba2c6a8d529cb094f1a7c3deaae9b75 (patch) | |
tree | 3f7e726658414f1a90451e4cc33aaf97651f8625 /compiler-rt | |
parent | e5f50bd26807cac67baaf17735c9adc0e02f0e82 (diff) | |
download | llvm-de4c038c7ba2c6a8d529cb094f1a7c3deaae9b75.zip llvm-de4c038c7ba2c6a8d529cb094f1a7c3deaae9b75.tar.gz llvm-de4c038c7ba2c6a8d529cb094f1a7c3deaae9b75.tar.bz2 |
[sanitizer] adapt for 75f1f158812dabc03e70697b6b9c272230bce63d
No functional changes intended.
Diffstat (limited to 'compiler-rt')
-rw-r--r-- | compiler-rt/lib/sanitizer_common/symbolizer/sanitizer_symbolize.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/compiler-rt/lib/sanitizer_common/symbolizer/sanitizer_symbolize.cpp b/compiler-rt/lib/sanitizer_common/symbolizer/sanitizer_symbolize.cpp index bca12d4..2bc0444 100644 --- a/compiler-rt/lib/sanitizer_common/symbolizer/sanitizer_symbolize.cpp +++ b/compiler-rt/lib/sanitizer_common/symbolizer/sanitizer_symbolize.cpp @@ -41,6 +41,16 @@ static llvm::symbolize::PrinterConfig getDefaultPrinterConfig() { return Config; } +static llvm::symbolize::ErrorHandler symbolize_error_handler( + llvm::raw_string_ostream &OS) { + return + [&](const llvm::ErrorInfoBase &ErrorInfo, llvm::StringRef ErrorBanner) { + OS << ErrorBanner; + ErrorInfo.log(OS); + OS << '\n'; + }; +} + namespace __sanitizer { int internal_snprintf(char *buffer, uintptr_t length, const char *format, ...); @@ -57,8 +67,8 @@ bool __sanitizer_symbolize_code(const char *ModuleName, uint64_t ModuleOffset, llvm::raw_string_ostream OS(Result); llvm::symbolize::PrinterConfig Config = getDefaultPrinterConfig(); llvm::symbolize::Request Request{ModuleName, ModuleOffset}; - auto Printer = - std::make_unique<llvm::symbolize::LLVMPrinter>(OS, OS, Config); + auto Printer = std::make_unique<llvm::symbolize::LLVMPrinter>( + OS, symbolize_error_handler(OS), Config); // TODO: it is neccessary to set proper SectionIndex here. // object::SectionedAddress::UndefSection works for only absolute addresses. @@ -86,8 +96,8 @@ bool __sanitizer_symbolize_data(const char *ModuleName, uint64_t ModuleOffset, llvm::symbolize::PrinterConfig Config = getDefaultPrinterConfig(); llvm::raw_string_ostream OS(Result); llvm::symbolize::Request Request{ModuleName, ModuleOffset}; - auto Printer = - std::make_unique<llvm::symbolize::LLVMPrinter>(OS, OS, Config); + auto Printer = std::make_unique<llvm::symbolize::LLVMPrinter>( + OS, symbolize_error_handler(OS), Config); // TODO: it is neccessary to set proper SectionIndex here. // object::SectionedAddress::UndefSection works for only absolute addresses. |