Enable tracer support. Resolves #97

extensions
Volodymyr Shymanskyy 4 years ago
parent 5870a05660
commit 9443eedd19

@ -86,7 +86,7 @@ if(EMSCRIPTEN)
elseif(WASIENV) elseif(WASIENV)
if(BUILD_WASI_SUPPORT) if(BUILD_WASI_SUPPORT)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasMetaWASI") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasMetaWASI -Dd_m3HasTracer")
endif() endif()
set(CMAKE_C_FLAGS_RELEASE "-O3 -Wfatal-errors -fomit-frame-pointer -fno-stack-check -fno-stack-protector") set(CMAKE_C_FLAGS_RELEASE "-O3 -Wfatal-errors -fomit-frame-pointer -fno-stack-check -fno-stack-protector")
@ -127,7 +127,7 @@ elseif(WIN32)
else() else()
if(BUILD_WASI_SUPPORT) if(BUILD_WASI_SUPPORT)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasWASI") #-Dd_m3FixedHeap=1048576 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dd_m3HasWASI -Dd_m3HasTracer") #-Dd_m3FixedHeap=1048576
endif() endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wparentheses -Wundef -Wpointer-arith -Wstrict-aliasing=2") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wparentheses -Wundef -Wpointer-arith -Wstrict-aliasing=2")

@ -13,6 +13,7 @@
#include "wasm3.h" #include "wasm3.h"
#include "m3_api_wasi.h" #include "m3_api_wasi.h"
#include "m3_api_libc.h" #include "m3_api_libc.h"
#include "m3_api_tracer.h"
#include "m3_env.h" #include "m3_env.h"
#define FATAL(msg, ...) { printf("Error: [Fatal] " msg "\n", ##__VA_ARGS__); goto _onfatal; } #define FATAL(msg, ...) { printf("Error: [Fatal] " msg "\n", ##__VA_ARGS__); goto _onfatal; }
@ -265,6 +266,11 @@ int main (int i_argc, const char* i_argv[])
if (result) FATAL("m3_LinkWASI: %s", result); if (result) FATAL("m3_LinkWASI: %s", result);
#endif #endif
#if defined(d_m3HasTracer)
result = m3_LinkTracer (runtime->modules);
if (result) FATAL("m3_LinkTracer: %s", result);
#endif
result = m3_LinkLibC (runtime->modules); result = m3_LinkLibC (runtime->modules);
if (result) FATAL("m3_LinkLibC: %s", result); if (result) FATAL("m3_LinkLibC: %s", result);

@ -14,7 +14,7 @@
#if defined(d_m3HasTracer) #if defined(d_m3HasTracer)
static FILE* trace; static FILE* trace = NULL;
m3ApiRawFunction(m3_env_log_execution) m3ApiRawFunction(m3_env_log_execution)
{ {
@ -114,10 +114,15 @@ d_m3TraceLocal(set_f64, "set f64", double, "%lf")
static static
M3Result SuppressLookupFailure(M3Result i_result) M3Result SuppressLookupFailure(M3Result i_result)
{ {
if (i_result == m3Err_functionLookupFailed) if (i_result == m3Err_none) {
return m3Err_none; // If any trace function is found in the module, open the trace file
else if (!trace) {
return i_result; trace = fopen ("wasm3_trace.csv","w");
}
} else if (i_result == m3Err_functionLookupFailed) {
i_result = m3Err_none;
}
return i_result;
} }
@ -127,8 +132,6 @@ M3Result m3_LinkTracer (IM3Module module)
const char* env = "env"; const char* env = "env";
trace = fopen ("wasm3_trace.csv","w");
_ (SuppressLookupFailure (m3_LinkRawFunction (module, env, "log_execution", "v(i)", &m3_env_log_execution))); _ (SuppressLookupFailure (m3_LinkRawFunction (module, env, "log_execution", "v(i)", &m3_env_log_execution)));
_ (SuppressLookupFailure (m3_LinkRawFunction (module, env, "log_exec_enter", "v(ii)", &m3_env_log_exec_enter))); _ (SuppressLookupFailure (m3_LinkRawFunction (module, env, "log_exec_enter", "v(ii)", &m3_env_log_exec_enter)));

Loading…
Cancel
Save