From 3237e77c5d659738e1f9fbd7a6db2b52ecce2fe0 Mon Sep 17 00:00:00 2001 From: an7s <an7s@git.zephyr-software.com> Date: Mon, 1 May 2017 22:11:25 +0000 Subject: [PATCH] Distinguish between critical args and function pointers Former-commit-id: b18a4747e92f2f1262668991ced6ad9584ca3b62 --- .../include/MEDS_FPTRShadowAnnotation.hpp | 7 +++++++ libMEDSannotation/src/MEDS_FPTRShadowAnnotation.cpp | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/libMEDSannotation/include/MEDS_FPTRShadowAnnotation.hpp b/libMEDSannotation/include/MEDS_FPTRShadowAnnotation.hpp index e682e893d..b6647248e 100644 --- a/libMEDSannotation/include/MEDS_FPTRShadowAnnotation.hpp +++ b/libMEDSannotation/include/MEDS_FPTRShadowAnnotation.hpp @@ -70,6 +70,8 @@ class MEDS_FPTRShadowAnnotation : public MEDS_ShadowAnnotation const RegisterName getRegister() const; const string& getExpression() const { return m_expression; } + const bool isFunctionPointerShadow() const { return m_functionPointerShadow; } + const bool isCriticalArgumentShadow() const { return m_criticalArgumentShadow; } private: void parse(); void setExpression(const string p_expression) { @@ -80,9 +82,14 @@ class MEDS_FPTRShadowAnnotation : public MEDS_ShadowAnnotation int parseRegisterOffset(const char*); void parseRegister(const char *p_buf, RegisterName *p_register, int *p_registerOffset); + void setFunctionPointerShadow(const bool p_val) { m_functionPointerShadow = p_val; } + void setCriticalArgumentShadow(const bool p_val) { m_criticalArgumentShadow = p_val; } + private: string m_rawInputLine; string m_expression; + bool m_functionPointerShadow; + bool m_criticalArgumentShadow; }; } diff --git a/libMEDSannotation/src/MEDS_FPTRShadowAnnotation.cpp b/libMEDSannotation/src/MEDS_FPTRShadowAnnotation.cpp index 156a4494f..cedd24f16 100644 --- a/libMEDSannotation/src/MEDS_FPTRShadowAnnotation.cpp +++ b/libMEDSannotation/src/MEDS_FPTRShadowAnnotation.cpp @@ -61,11 +61,15 @@ using namespace MEDS_Annotation; MEDS_FPTRShadowAnnotation::MEDS_FPTRShadowAnnotation() : MEDS_ShadowAnnotation() { setInvalid(); + setCriticalArgumentShadow(false); + setFunctionPointerShadow(false); } MEDS_FPTRShadowAnnotation::MEDS_FPTRShadowAnnotation(const string &p_rawLine) : MEDS_ShadowAnnotation() { setInvalid(); + setCriticalArgumentShadow(false); + setFunctionPointerShadow(false); m_rawInputLine=p_rawLine; parse(); } @@ -79,10 +83,16 @@ void MEDS_FPTRShadowAnnotation::parse() setDefineShadowId(); if (m_rawInputLine.find(MEDS_ANNOT_ARGSHADOW)!=string::npos) + { + setCriticalArgumentShadow(true); setDefineShadowId(); + } if (m_rawInputLine.find(MEDS_ANNOT_FPTRCHECK)!=string::npos) + { + setFunctionPointerShadow(true); setCheckShadowId(); + } if (m_rawInputLine.find(MEDS_ANNOT_ARGCHECK)!=string::npos) setCheckShadowId(); -- GitLab