1010#include " llvm/DebugInfo/Symbolize/DIPrinter.h"
1111#include " llvm/DebugInfo/Symbolize/Symbolize.h"
1212
13- namespace ur_sanitizer_layer {
14-
15- llvm::symbolize::LLVMSymbolizer *GetSymbolizer () {
16- static llvm::symbolize::LLVMSymbolizer Symbolizer;
17- return &Symbolizer;
18- }
19-
20- llvm::symbolize::PrinterConfig GetPrinterConfig () {
13+ static llvm::symbolize::PrinterConfig GetPrinterConfig () {
2114 llvm::symbolize::PrinterConfig Config;
2215 Config.Pretty = false ;
2316 Config.PrintAddress = false ;
@@ -27,35 +20,32 @@ llvm::symbolize::PrinterConfig GetPrinterConfig() {
2720 return Config;
2821}
2922
30- } // namespace ur_sanitizer_layer
31-
3223extern " C" {
3324
3425void SymbolizeCode (const char *ModuleName, uint64_t ModuleOffset,
3526 char *ResultString, size_t ResultSize, size_t *RetSize) {
3627 std::string Result;
3728 llvm::raw_string_ostream OS (Result);
3829 llvm::symbolize::Request Request{ModuleName, ModuleOffset};
39- llvm::symbolize::PrinterConfig Config =
40- ur_sanitizer_layer::GetPrinterConfig ();
30+ llvm::symbolize::PrinterConfig Config = GetPrinterConfig ();
4131 llvm::symbolize::ErrorHandler EH = [&](const llvm::ErrorInfoBase &ErrorInfo,
4232 llvm::StringRef ErrorBanner) {
4333 OS << ErrorBanner;
4434 ErrorInfo.log (OS);
4535 OS << ' \n ' ;
4636 };
47- auto Printer =
48- std::make_unique< llvm::symbolize::LLVMPrinter> (OS, EH, Config);
37+ llvm::symbolize::LLVMSymbolizer Symbolizer;
38+ llvm::symbolize::LLVMPrinter Printer (OS, EH, Config);
4939
50- auto ResOrErr = ur_sanitizer_layer::GetSymbolizer ()-> symbolizeInlinedCode (
40+ auto ResOrErr = Symbolizer. symbolizeInlinedCode (
5141 ModuleName,
5242 {ModuleOffset, llvm::object::SectionedAddress::UndefSection});
5343
5444 if (!ResOrErr) {
5545 return ;
5646 }
57- Printer-> print (Request, *ResOrErr);
58- ur_sanitizer_layer::GetSymbolizer ()-> pruneCache ();
47+ Printer. print (Request, *ResOrErr);
48+ Symbolizer. pruneCache ();
5949 if (RetSize) {
6050 *RetSize = Result.size () + 1 ;
6151 }
0 commit comments