diff --git a/libMEDSannotation/include/MEDS_AnnotationBase.hpp b/libMEDSannotation/include/MEDS_AnnotationBase.hpp index ca2227f9f09fb16419f2d6727a24dffde4b5070e..997fdcaffa9f4c97966398196889d278780e650b 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 bd5ed20211c94aca69ee1e061cacf5539ea7a7d0..8ae328e715236ca9626a22244abf40751a3378eb 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 0402a702483dbcc95110f2467a0081729b691777..9d80a8c0ac1346963ece0bbc17e1e6c287e710c3 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 ef9151510c66861995edad75d06c7c9795c4927f..ef6cfce3eba7fe102ee97e35ea95ae7f6c571126 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)