From 6d17926bac13fa23ebadbe24be365d6907c6ba55 Mon Sep 17 00:00:00 2001
From: Hans-Peter Deifel <hpd@hpdeifel.de>
Date: Wed, 14 Dec 2016 10:20:03 +0100
Subject: [PATCH] Debug code to print saved IPs in mockup

---
 files/mockup_prelude.cc | 8 ++++++++
 src/CFG/C.hs            | 1 +
 src/Search/Search.hs    | 1 +
 3 files changed, 10 insertions(+)

diff --git a/files/mockup_prelude.cc b/files/mockup_prelude.cc
index ed85350..4e7c2c3 100644
--- a/files/mockup_prelude.cc
+++ b/files/mockup_prelude.cc
@@ -8,6 +8,14 @@ extern const uint32_t _sdata_os_canonical, _edata_os_canonical;
 extern const uint32_t _sdata_arch_canonical, _edata_arch_canonical;
 }
 
+namespace arch {
+	extern void* OS_Idle_ip;
+	extern void* OS_ISR1_ip;
+	extern void* OS_H1_ip;
+	extern void* OS_H2_ip;
+	extern void* OS_H3_ip;
+}
+
 // **********************************************************************
 // Murmur3 implementation
 //
diff --git a/src/CFG/C.hs b/src/CFG/C.hs
index c66ab51..1a8a908 100644
--- a/src/CFG/C.hs
+++ b/src/CFG/C.hs
@@ -89,6 +89,7 @@ preIdleHook interrupts = do
 
   return $
        "void PreIdleHook() {\n"
+    <> "kout << \"IPs: \" << arch::OS_Idle_ip << ',' << arch::OS_ISR1_ip << ',' << arch::OS_H1_ip << ',' << arch::OS_H2_ip << ',' << arch::OS_H3_ip << endl;"
     <> "  _print_os_state(\"PreIdleHook\", __func__);\n"
     <> triggerCode
     <> "  ShutdownMachine();\n"
diff --git a/src/Search/Search.hs b/src/Search/Search.hs
index 84cface..5bb29af 100644
--- a/src/Search/Search.hs
+++ b/src/Search/Search.hs
@@ -155,6 +155,7 @@ parseLine handle = do
         ("Decision":num:_) -> return $ Decision (read $ T.unpack num)
         ["Function",func,"before","syscall",call,"in","state",state]
           -> return $ NewState $ Vertex state (Metadata func call)
+        _ -> parseLine handle -- ignore unknown output
 
 handleLine :: Handle -> IORef State -> IO LineOut
 handleLine pstdin state = parseLine pstdin >>= \case
-- 
GitLab