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