commit 661ba4e7760ab74fdd6dfbe8de21d95d6cb211a0
parent 8bfe2afb2f95caaa25e3816f6a2cf5e35192152b
Author: kyle <kyle@getaddrinfo.net>
Date:   Thu, 29 Oct 2015 02:31:25 -0600
instrument: hook up runtime to instrumented code
Diffstat:
6 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/instrument/instrument.cpp b/instrument/instrument.cpp
@@ -164,9 +164,11 @@ public:
 		SourceLocation start = sm.getLocForStartOfFile(main_fid);
 
 		std::stringstream ss;
-		// This isn't the correct size but will always be sufficient
-		ss << "static unsigned int lines[" << sm.getFileIDSize(main_fid)
-			<< "];\n";
+		// This isn't the number of lines but rather bytes
+		int file_bytes = sm.getFileIDSize(main_fid);
+		ss << "unsigned int lines[" << file_bytes << "];"
+			<< std::endl;
+		ss << "int size = " << file_bytes << ";" << std::endl;
 		TheRewriter.InsertTextAfter(start, ss.str());
 
 		// Now emit the rewritten buffer.
diff --git a/runtime/runtime.c b/runtime/runtime.c
@@ -1,10 +1,14 @@
 #include <pthread.h>
 #include <stdio.h>
 
+/* these symbols are guaranteed to exist because of instrumentation */
+extern unsigned int lines[];
+extern int size;
+
 void *
 control_thread(void *arg)
 {
-	// printf("control thread alive!\n");
+	// printf("control thread says %i bytes!\n", size);
 }
 
 __attribute__((constructor))
diff --git a/tests/fibonacci/instrumented.c b/tests/fibonacci/instrumented.c
@@ -1,4 +1,5 @@
-static unsigned int lines[512];
+unsigned int lines[512];
+int size = 512;
 #include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/tests/hello_world/instrumented.c b/tests/hello_world/instrumented.c
@@ -1,4 +1,5 @@
-static unsigned int lines[77];
+unsigned int lines[77];
+int size = 77;
 #include <stdio.h>
 
 int
diff --git a/tests/if_statement/instrumented.c b/tests/if_statement/instrumented.c
@@ -1,4 +1,5 @@
-static unsigned int lines[199];
+unsigned int lines[199];
+int size = 199;
 #include <stdlib.h>
 
 int
diff --git a/tests/while_loops/instrumented.c b/tests/while_loops/instrumented.c
@@ -1,4 +1,5 @@
-static unsigned int lines[76];
+unsigned int lines[76];
+int size = 76;
 int
 main(void)
 {