From 179f9b64ad51078de7a8b50ef429b779fbea572e Mon Sep 17 00:00:00 2001 From: an7s <an7s@git.zephyr-software.com> Date: Tue, 23 Dec 2014 17:04:38 +0000 Subject: [PATCH] Added FPTR DEF/USE annotations Former-commit-id: 51689321e03bffc8715a7b903c9fa36f074ccef8 --- .../include/MEDS_AnnotationBase.hpp | 23 ++++++++----------- libMEDSannotation/include/VirtualOffset.hpp | 1 + .../src/MEDS_AnnotationParser.cpp | 2 ++ libMEDSannotation/src/Makefile | 2 +- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/libMEDSannotation/include/MEDS_AnnotationBase.hpp b/libMEDSannotation/include/MEDS_AnnotationBase.hpp index ca2227f9f..997fdcaff 100644 --- a/libMEDSannotation/include/MEDS_AnnotationBase.hpp +++ b/libMEDSannotation/include/MEDS_AnnotationBase.hpp @@ -33,33 +33,28 @@ namespace MEDS_Annotation // base class for deriving objects. class MEDS_AnnotationBase { - public: - + public: MEDS_AnnotationBase() { init(); } virtual ~MEDS_AnnotationBase() { } /* i'd rather make this a pure virtual func, but can't figure out why it won't compile */ virtual const std::string toString() const { assert(0); } - // valid annotation? - virtual bool isValid() const { return m_isValid; } - virtual void setValid() { m_isValid = true; } + // valid annotation? + virtual bool isValid() const { return m_isValid; } + virtual void setValid() { m_isValid = true; } + virtual void setInvalid() { m_isValid = false; } - // virtual offset - virtual VirtualOffset getVirtualOffset() const { return m_virtualOffset; } + // virtual offset + virtual VirtualOffset getVirtualOffset() const { return m_virtualOffset; } virtual void init() { m_isValid=false; } - virtual bool isFuncAnnotation() const { return false; } // false by default + virtual bool isFuncAnnotation() const { return false; } // false by default protected: - bool m_isValid; - VirtualOffset m_virtualOffset; - - - - + VirtualOffset m_virtualOffset; }; } diff --git a/libMEDSannotation/include/VirtualOffset.hpp b/libMEDSannotation/include/VirtualOffset.hpp index bd5ed2021..8ae328e71 100644 --- a/libMEDSannotation/include/VirtualOffset.hpp +++ b/libMEDSannotation/include/VirtualOffset.hpp @@ -44,6 +44,7 @@ class VirtualOffset VirtualOffset& operator = (const VirtualOffset &p_other); const std::string to_string() const { std::ostringstream oss; oss<<getLibraryName() << "+0x"<<std::hex<<getOffset(); return oss.str(); } + const std::string toString() const { return to_string(); } private: ApplicationAddress m_offset; diff --git a/libMEDSannotation/src/MEDS_AnnotationParser.cpp b/libMEDSannotation/src/MEDS_AnnotationParser.cpp index 0402a7024..9d80a8c0a 100644 --- a/libMEDSannotation/src/MEDS_AnnotationParser.cpp +++ b/libMEDSannotation/src/MEDS_AnnotationParser.cpp @@ -27,6 +27,7 @@ #include "MEDS_SafeFuncAnnotation.hpp" #include "MEDS_ProblemFuncAnnotation.hpp" #include "MEDS_FRSafeAnnotation.hpp" +#include "MEDS_FPTRShadowAnnotation.hpp" // @todo: multiple annotation per instruction @@ -81,6 +82,7 @@ void MEDS_AnnotationParser::parseFile(istream &p_inputStream) delete annot; \ } + ADD_AND_CONTINUE_IF_VALID(MEDS_FPTRShadowAnnotation); ADD_AND_CONTINUE_IF_VALID(MEDS_InstructionCheckAnnotation); ADD_AND_CONTINUE_IF_VALID(MEDS_SafeFuncAnnotation); ADD_AND_CONTINUE_IF_VALID(MEDS_ProblemFuncAnnotation); diff --git a/libMEDSannotation/src/Makefile b/libMEDSannotation/src/Makefile index ef9151510..ef6cfce3e 100644 --- a/libMEDSannotation/src/Makefile +++ b/libMEDSannotation/src/Makefile @@ -1,7 +1,7 @@ LIB=../lib/libMEDSannotation.a -OBJS=VirtualOffset.o MEDS_Register.o MEDS_AnnotationParser.o MEDS_InstructionCheckAnnotation.o MEDS_SafeFuncAnnotation.o MEDS_ProblemFuncAnnotation.o MEDS_FRSafeAnnotation.o FuncExitAnnotation.o +OBJS=VirtualOffset.o MEDS_Register.o MEDS_AnnotationParser.o MEDS_InstructionCheckAnnotation.o MEDS_SafeFuncAnnotation.o MEDS_ProblemFuncAnnotation.o MEDS_FRSafeAnnotation.o FuncExitAnnotation.o MEDS_FPTRShadowAnnotation.o all: $(OBJS) -- GitLab