aboutsummaryrefslogtreecommitdiff
path: root/compiler-rt
diff options
context:
space:
mode:
authorKrasimir Georgiev <krasimir@google.com>2023-04-14 08:18:43 +0000
committerKrasimir Georgiev <krasimir@google.com>2023-04-14 08:18:43 +0000
commitde4c038c7ba2c6a8d529cb094f1a7c3deaae9b75 (patch)
tree3f7e726658414f1a90451e4cc33aaf97651f8625 /compiler-rt
parente5f50bd26807cac67baaf17735c9adc0e02f0e82 (diff)
downloadllvm-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.cpp18
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.