From 63b3a5772a3165225885a90e4d35e41ee8228b79 Mon Sep 17 00:00:00 2001 From: Horst Schirmeier Date: Mon, 16 Mar 2020 15:36:57 +0100 Subject: [PATCH] capstone: compile-time version check This version check could (and probably should) also be done in the cmake scripts. However, this check in CapstoneDisassembler.cpp catches another failure mode: When a cmake script is missing a include_directories() directive pointing to capstone.h -- resulting in a missing -I parameter to gcc -- accidentally a system-wide 3.x capstone.h may get #included, providing the wrong definitions and prototypes to some translation units. Change-Id: Id30f77a47e38f4e892b92189bcce9119bf03918c --- src/core/util/capstonedisassembler/CapstoneDisassembler.cpp | 5 +++++ src/core/util/capstonedisassembler/CapstoneDisassembler.hpp | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp b/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp index 0b2a5da5..195cae6a 100644 --- a/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp +++ b/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp @@ -1,3 +1,8 @@ +#include +#if CS_MAKE_VERSION(CS_API_MAJOR, CS_API_MINOR) < CS_MAKE_VERSION(4, 0) +# error Need libcapstone >= 4.0 +#endif + #include "CapstoneDisassembler.hpp" using namespace fail; diff --git a/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp b/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp index 86dd7517..04f4d10d 100644 --- a/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp +++ b/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp @@ -14,7 +14,6 @@ #include "CapstoneToFailBochs.hpp" #include "CapstoneToFailGem5.hpp" -#include #include #include #include