mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-24 06:48:18 -07:00
With llvm_slot_21 the build fails:
loader.cc:400:73: error: no matching function for call to
'clang::TextDiagnosticPrinter::TextDiagnosticPrinter(llvm::raw_fd_ostream&, clang::DiagnosticOptions*)'
400 | auto diag_client = new TextDiagnosticPrinter(llvm::errs(), &*diag_opts);
| ^
(etc.)
Add an upstream commit to fix this.
Closes: https://bugs.gentoo.org/968069
Signed-off-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Part-of: https://github.com/gentoo/gentoo/pull/44925
Closes: https://github.com/gentoo/gentoo/pull/44925
Signed-off-by: Sam James <sam@gentoo.org>
46 lines
1.7 KiB
Diff
46 lines
1.7 KiB
Diff
From: https://github.com/iovisor/bcc/commit/8c5c96ad3beeed2fa827017f451a952306826974
|
||
|
||
From: yonghong-song <ys114321@gmail.com>
|
||
Date: Mon, 14 Jul 2025 20:21:59 -0700
|
||
Subject: [PATCH] Fix a build failure with clang21 (#5369)
|
||
|
||
The build error message:
|
||
src/cc/frontends/clang/loader.cc:400:73: error: no matching function for
|
||
call to ‘clang::TextDiagnosticPrinter::TextDiagnosticPrinter(
|
||
llvm::raw_fd_ostream&, clang::DiagnosticOptions*)’
|
||
400 | auto diag_client = new TextDiagnosticPrinter(llvm::errs(), &*diag_opts);
|
||
| ^
|
||
The llvm commit
|
||
https://github.com/llvm/llvm-project/pull/139584
|
||
caused the build failure.
|
||
|
||
Adjust the code properly and the error is fixed.
|
||
---
|
||
src/cc/frontends/clang/loader.cc | 8 ++++++++
|
||
1 file changed, 8 insertions(+)
|
||
|
||
diff --git a/src/cc/frontends/clang/loader.cc b/src/cc/frontends/clang/loader.cc
|
||
index 07dc9d6ab019..6f8387aaf017 100644
|
||
--- a/src/cc/frontends/clang/loader.cc
|
||
+++ b/src/cc/frontends/clang/loader.cc
|
||
@@ -396,11 +396,19 @@ int ClangLoader::do_compile(
|
||
flags_cstr_rem.end());
|
||
|
||
// set up the error reporting class
|
||
+#if LLVM_VERSION_MAJOR >= 21
|
||
+ DiagnosticOptions diag_opts;
|
||
+ auto diag_client = new TextDiagnosticPrinter(llvm::errs(), diag_opts);
|
||
+
|
||
+ IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
|
||
+ DiagnosticsEngine diags(DiagID, diag_opts, diag_client);
|
||
+#else
|
||
IntrusiveRefCntPtr<DiagnosticOptions> diag_opts(new DiagnosticOptions());
|
||
auto diag_client = new TextDiagnosticPrinter(llvm::errs(), &*diag_opts);
|
||
|
||
IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
|
||
DiagnosticsEngine diags(DiagID, &*diag_opts, diag_client);
|
||
+#endif
|
||
|
||
// set up the command line argument wrapper
|
||
|