Resolves #1555627 - fix compilation error with latest llvm/clang
Signed-off-by: Rafael Santos <rdossant@redhat.com>
This commit is contained in:
parent
1ea1557894
commit
e63764f404
6
bcc.spec
6
bcc.spec
@ -7,11 +7,12 @@
|
||||
|
||||
Name: bcc
|
||||
Version: 0.5.0
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?dist}
|
||||
Summary: BPF Compiler Collection (BCC)
|
||||
License: ASL 2.0
|
||||
URL: https://github.com/iovisor/bcc
|
||||
Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
|
||||
Patch0: clang-api.patch
|
||||
|
||||
# Arches will be included as upstream support is added and dependencies are
|
||||
# satisfied in the respective arches
|
||||
@ -163,6 +164,9 @@ mv %{buildroot}%{_datadir}/%{name}/examples %{buildroot}%{_docdir}/%{name}/
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Apr 05 2018 Rafael Santos <rdossant@redhat.com> - 0.5.0-4
|
||||
- Resolves #1555627 - fix compilation error with latest llvm/clang
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
|
||||
71
clang-api.patch
Normal file
71
clang-api.patch
Normal file
@ -0,0 +1,71 @@
|
||||
From c0d1694e28336cbe4a57f420dd33c5e3bfaa2df9 Mon Sep 17 00:00:00 2001
|
||||
From: Yonghong Song <yhs@fb.com>
|
||||
Date: Thu, 28 Dec 2017 13:34:06 -0800
|
||||
Subject: [PATCH] fix a compilation error with latest llvm/clang trunk
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
bcc build with latest llvm/clang trunk failed with the
|
||||
below error:
|
||||
......
|
||||
[ 35%] Built target api-static
|
||||
/home/yhs/work/bcc/src/cc/frontends/clang/tp_frontend_action.cc: In member function ‘bool ebpf::TracepointTypeVisitor::Visit
|
||||
FunctionDecl(clang::FunctionDecl*)’:
|
||||
/home/yhs/work/bcc/src/cc/frontends/clang/tp_frontend_action.cc:163:60: error: no matching function for call to ‘clang::Qual
|
||||
Type::getAsString(clang::SplitQualType)’
|
||||
auto type_name = QualType::getAsString(type.split());
|
||||
^
|
||||
......
|
||||
|
||||
The error is caused by the below clang commit:
|
||||
commit fcc28fd8cc8139cf1e4763459447880768579d8e
|
||||
Author: Aaron Ballman <aaron@aaronballman.com>
|
||||
Date: Thu Dec 21 21:42:42 2017 +0000
|
||||
|
||||
Re-commit r321223, which adds a printing policy to the ASTDumper.
|
||||
......
|
||||
- std::string getAsString() const {
|
||||
- return getAsString(split());
|
||||
+ static std::string getAsString(SplitQualType split,
|
||||
+ const PrintingPolicy &Policy) {
|
||||
+ return getAsString(split.Ty, split.Quals, Policy);
|
||||
}
|
||||
+ static std::string getAsString(const Type *ty, Qualifiers qs,
|
||||
+ const PrintingPolicy &Policy);
|
||||
|
||||
- static std::string getAsString(SplitQualType split) {
|
||||
- return getAsString(split.Ty, split.Quals);
|
||||
- }
|
||||
-
|
||||
- static std::string getAsString(const Type *ty, Qualifiers qs);
|
||||
-
|
||||
+ std::string getAsString() const;
|
||||
std::string getAsString(const PrintingPolicy &Policy) const;
|
||||
......
|
||||
|
||||
The signature of static function getAsString(), which is used
|
||||
in src/cc/frontends/clang/tp_frontend_action.cc, got changed,
|
||||
and this caused the compilation error.
|
||||
|
||||
The patch chooses a different way to get type_name which works
|
||||
for llvm 4.0 to 6.0 (tested).
|
||||
|
||||
Signed-off-by: Yonghong Song <yhs@fb.com>
|
||||
---
|
||||
src/cc/frontends/clang/tp_frontend_action.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/cc/frontends/clang/tp_frontend_action.cc b/src/cc/frontends/clang/tp_frontend_action.cc
|
||||
index b8818baff..3b46a62a9 100644
|
||||
--- a/src/cc/frontends/clang/tp_frontend_action.cc
|
||||
+++ b/src/cc/frontends/clang/tp_frontend_action.cc
|
||||
@@ -160,7 +160,7 @@ bool TracepointTypeVisitor::VisitFunctionDecl(FunctionDecl *D) {
|
||||
auto type = arg->getType();
|
||||
if (type->isPointerType() &&
|
||||
type->getPointeeType()->isStructureOrClassType()) {
|
||||
- auto type_name = QualType::getAsString(type.split());
|
||||
+ auto type_name = type->getPointeeType().getAsString();
|
||||
string tp_cat, tp_evt;
|
||||
if (_is_tracepoint_struct_type(type_name, tp_cat, tp_evt)) {
|
||||
string tp_struct = GenerateTracepointStruct(
|
||||
Loading…
Reference in New Issue
Block a user