From 97d0ecc28938a9345337c249484bb2d74e677d2f Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 3 Nov 2026 16:24:18 +0100 Subject: [PATCH] [interpreter] Fix missing symbols during linking of rootcling_stage1 While building ROOT 6.42.00-rc1 the linking of rootcling_stage1 fails with /usr/bin/ld.bfd: interpreter/llvm-project/llvm/lib/libLLVMCodeGen.a(GCMetadataPrinter.cpp.o):(.data.rel.ro.local._ZTVN4llvm17GCMetadataPrinterE[_ZTVN4llvm17GCMetadataPrinterE]+0x20): undefined reference to `llvm::GCMetadataPrinter::beginAssembly(llvm::Module&, llvm::GCModuleInfo&, llvm::AsmPrinter&)' /usr/bin/ld.bfd: interpreter/llvm-project/llvm/lib/libLLVMCodeGen.a(GCMetadataPrinter.cpp.o):(.data.rel.ro.local._ZTVN4llvm17GCMetadataPrinterE[_ZTVN4llvm17GCMetadataPrinterE]+0x28): undefined reference to `llvm::GCMetadataPrinter::finishAssembly(llvm::Module&, llvm::GCModuleInfo&, llvm::AsmPrinter&)' /usr/bin/ld.bfd: interpreter/llvm-project/llvm/lib/libLLVMCodeGen.a(GCMetadataPrinter.cpp.o):(.data.rel.ro.local._ZTVN4llvm17GCMetadataPrinterE[_ZTVN4llvm17GCMetadataPrinterE]+0x30): undefined reference to `llvm::GCMetadataPrinter::emitStackMaps(llvm::StackMaps&, llvm::AsmPrinter&)' collect2: error: ld returned 1 exit status This commit addresses the issue by moving them from being inline methods in the header file to being implemented methids in the source file. --- .../llvm/include/llvm/CodeGen/GCMetadataPrinter.h | 6 +++--- .../llvm-project/llvm/lib/CodeGen/GCMetadataPrinter.cpp | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/interpreter/llvm-project/llvm/include/llvm/CodeGen/GCMetadataPrinter.h b/interpreter/llvm-project/llvm/include/llvm/CodeGen/GCMetadataPrinter.h index 9d421be8313f0..e2b6f60c7c007 100644 --- a/interpreter/llvm-project/llvm/include/llvm/CodeGen/GCMetadataPrinter.h +++ b/interpreter/llvm-project/llvm/include/llvm/CodeGen/GCMetadataPrinter.h @@ -57,16 +57,16 @@ class GCMetadataPrinter { /// Called before the assembly for the module is generated by /// the AsmPrinter (but after target specific hooks.) - virtual void beginAssembly(Module &M, GCModuleInfo &Info, AsmPrinter &AP) {} + virtual void beginAssembly(Module &M, GCModuleInfo &Info, AsmPrinter &AP); /// Called after the assembly for the module is generated by /// the AsmPrinter (but before target specific hooks) - virtual void finishAssembly(Module &M, GCModuleInfo &Info, AsmPrinter &AP) {} + virtual void finishAssembly(Module &M, GCModuleInfo &Info, AsmPrinter &AP); /// Called when the stack maps are generated. Return true if /// stack maps with a custom format are generated. Otherwise /// returns false and the default format will be used. - virtual bool emitStackMaps(StackMaps &SM, AsmPrinter &AP) { return false; } + virtual bool emitStackMaps(StackMaps &SM, AsmPrinter &AP); }; } // end namespace llvm diff --git a/interpreter/llvm-project/llvm/lib/CodeGen/GCMetadataPrinter.cpp b/interpreter/llvm-project/llvm/lib/CodeGen/GCMetadataPrinter.cpp index 500dba9aea37e..ec7021a6f708e 100644 --- a/interpreter/llvm-project/llvm/lib/CodeGen/GCMetadataPrinter.cpp +++ b/interpreter/llvm-project/llvm/lib/CodeGen/GCMetadataPrinter.cpp @@ -19,3 +19,9 @@ LLVM_INSTANTIATE_REGISTRY(GCMetadataPrinterRegistry) GCMetadataPrinter::GCMetadataPrinter() = default; GCMetadataPrinter::~GCMetadataPrinter() = default; + +void GCMetadataPrinter::beginAssembly(Module &M, GCModuleInfo &Info, AsmPrinter &AP) {} + +void GCMetadataPrinter::finishAssembly(Module &M, GCModuleInfo &Info, AsmPrinter &AP) {} + +bool GCMetadataPrinter::emitStackMaps(StackMaps &SM, AsmPrinter &AP) { return false; }