diff --git a/scripts/compile.pl b/scripts/compile.pl index 0eabed9..79afbda 100644 --- a/scripts/compile.pl +++ b/scripts/compile.pl @@ -264,16 +264,17 @@ sub compile_wasm_module { if ( Util::module_is_tacle($module) ) { my ( $srcs, $inc ) = Util::find_tacle_sources($module); Util::run( - "$wasi_root/bin/clang", @wasi_cflags, - "-Dmain=tacle_main_bullshit", "-I$inc", - "targets/wasm-module/$module.cpp", @$srcs, - '-o', "$bd/wasm_module.wasm" + "$wasi_root/bin/clang", @wasi_cflags, + "-Dmain=tacle_main_bullshit", "-DTARGET_WASM", + "-I$inc", "targets/wasm-module/$module.cpp", + @$srcs, '-o', + "$bd/wasm_module.wasm" ); } else { Util::run( "$wasi_root/bin/clang", @wasi_cflags, - "targets/wasm-module/$module.cpp", - '-o', "$bd/wasm_module.wasm" ); + "-DTARGET_WASM", "targets/wasm-module/$module.cpp", + '-o', "$bd/wasm_module.wasm" ); } } @@ -372,8 +373,8 @@ sub compile_c_module { my ( $module, $bd, $target ) = @_; my ( $cc, @flags ) = ( $target eq 'linux' ) - ? ( $linux_cc, @linux_cflags ) - : ( $cross_cc, @cross_cflags ); + ? ( $linux_cc, @linux_cflags, '-DTARGET_LINUX' ) + : ( $cross_cc, @cross_cflags, '-DTARGET_FAIL' ); if ( Util::module_is_tacle($module) ) { my ( $srcs, $inc ) = Util::find_tacle_sources($module); diff --git a/targets/lib.h b/targets/lib.h index 28a1ca8..5835ae7 100644 --- a/targets/lib.h +++ b/targets/lib.h @@ -10,17 +10,23 @@ #define IMPORT(fnct) __attribute__((import_module("env"), import_name(fnct))) #if !defined(TARGET_FAIL) && !defined(TARGET_LINUX_BAREMETAL) && \ - !defined(TARGET_LINUX) + !defined(TARGET_LINUX) && !defined(TARGET_WASM) // Set to linux while editing to prevent lsp errors #define TARGET_LINUX #endif +// Both the wasm wrapper and the wasm module use lib.h +// TARGET_WASM is for the wasm module... +#ifdef TARGET_WASM +#define PRINT(fmt, ...) print(fmt) +#endif + +// ...the rest is for the wasm wrapper #ifdef TARGET_FAIL #define MAIN void os_main(void) #define PRINT(fmt, ...) #define PRINT_ERROR(fmt, ...) #define PRINT_SUCCESS(fmt, ...) -#define HOST_PRINT(msg) #define RET(val) return #endif @@ -29,11 +35,11 @@ #define PRINT(fmt, ...) #define PRINT_ERROR(fmt, ...) #define PRINT_SUCCESS(fmt, ...) -#define HOST_PRINT(msg) -#define RET(val) return +#define RET(val) return val #endif #ifdef TARGET_LINUX +#include "stdio.h" #define MAIN int main(int argc, char *argv[]) #define PRINT(fmt, ...) fprintf(stdout, fmt, ##__VA_ARGS__) #define PRINT_ERROR(fmt, ...) \ @@ -42,8 +48,7 @@ #define PRINT_SUCCESS(fmt, ...) \ fprintf(stdout, "[Success] "); \ fprintf(stdout, fmt, ##__VA_ARGS__) -#define HOST_PRINT(msg) print(msg) -#define RET(val) return val; +#define RET(val) return val #endif typedef uint16_t enc_t; diff --git a/targets/wasm-module/matrix0.cpp b/targets/wasm-module/matrix0.cpp index 7f20e70..39b74e6 100644 --- a/targets/wasm-module/matrix0.cpp +++ b/targets/wasm-module/matrix0.cpp @@ -52,11 +52,11 @@ extern "C" EXPORT("wasm_module") int wasm_module(void) { }; if (cmp(Calculated, Expected)) { - HOST_PRINT("result correct.\n"); + PRINT("result correct.\n"); fail_marker_positive(); return 0; } else { - HOST_PRINT("result incorrect.\n"); + PRINT("result incorrect.\n"); fail_marker_negative(); return 1; } diff --git a/targets/wasm-module/sum0.cpp b/targets/wasm-module/sum0.cpp index 135b99c..912cf1f 100644 --- a/targets/wasm-module/sum0.cpp +++ b/targets/wasm-module/sum0.cpp @@ -25,11 +25,11 @@ extern "C" EXPORT("wasm_module") int wasm_module(void) { fail_stop_trace(); if (X == 5) { - HOST_PRINT("result correct.\n"); + PRINT("result correct.\n"); fail_marker_positive(); return 0; } else { - HOST_PRINT("result incorrect.\n"); + PRINT("result incorrect.\n"); fail_marker_negative(); return 1; } diff --git a/targets/wasm-module/sum1-voter.cpp b/targets/wasm-module/sum1-voter.cpp index f42af17..5edb96e 100644 --- a/targets/wasm-module/sum1-voter.cpp +++ b/targets/wasm-module/sum1-voter.cpp @@ -17,7 +17,7 @@ static void naive_vote(void) { } else if (YC == ZC) { vote_res = YC; } else { - HOST_PRINT("all replicas differ.\n"); + PRINT("all replicas differ.\n"); fail_marker_detected(); } } @@ -50,11 +50,11 @@ extern "C" EXPORT("wasm_module") int wasm_module(void) { fail_stop_trace(); if (vote_res == 5) { - HOST_PRINT("vote success.\n"); + PRINT("vote success.\n"); fail_marker_positive(); return 0; } else { - HOST_PRINT("undetected error.\n"); + PRINT("undetected error.\n"); fail_marker_negative(); return 1; } diff --git a/targets/wasm-module/sum2-cored.cpp b/targets/wasm-module/sum2-cored.cpp index d82d58f..491533a 100644 --- a/targets/wasm-module/sum2-cored.cpp +++ b/targets/wasm-module/sum2-cored.cpp @@ -27,7 +27,7 @@ static enc_t sum_out[REPLICA_COUNT]; static INLINE enc_t apply(enc_t vc, sign_t bdyn) { if (bdyn > SIG_MAX) { - HOST_PRINT("signature overflow.\n"); + PRINT("signature overflow.\n"); fail_marker_detected(); } return vc + bdyn; @@ -49,7 +49,7 @@ static sign_t cored_vote(void) { cored_res = apply(XC, (XC - ZC)); return SIG_s_XZ; } else { - HOST_PRINT("all replicas differ.\n"); + PRINT("all replicas differ.\n"); fail_marker_detected(); return 0; } @@ -93,7 +93,7 @@ extern "C" EXPORT("wasm_module") int wasm_module(void) { vote_result_sig = SIG_Y; break; default: - HOST_PRINT("unknown static_sig.\n"); + PRINT("unknown static_sig.\n"); break; } @@ -102,18 +102,18 @@ extern "C" EXPORT("wasm_module") int wasm_module(void) { /* Validate Vote result */ if (!check(cored_res, THE_A, vote_result_sig)) { - HOST_PRINT("voted result invalid.\n"); + PRINT("voted result invalid.\n"); fail_marker_detected(); return 2; } plain_t res = decode(cored_res, THE_A, vote_result_sig); if (res == 5) { - HOST_PRINT("cored success.\n"); + PRINT("cored success.\n"); fail_marker_positive(); return 0; } else { - HOST_PRINT("undetected error.\n"); + PRINT("undetected error.\n"); fail_marker_negative(); return 1; } diff --git a/targets/wasm-module/sum3-repl-voter.cpp b/targets/wasm-module/sum3-repl-voter.cpp index b1f5a6c..64dd47d 100644 --- a/targets/wasm-module/sum3-repl-voter.cpp +++ b/targets/wasm-module/sum3-repl-voter.cpp @@ -17,7 +17,7 @@ static void naive_vote(void) { } else if (YC == ZC) { vote_res = YC; } else { - HOST_PRINT("all replicas differ.\n"); + PRINT("all replicas differ.\n"); fail_marker_detected(); } } @@ -50,11 +50,11 @@ extern "C" EXPORT("wasm_module") int wasm_module(void) { fail_stop_trace(); if (vote_res == 5) { - HOST_PRINT("vote success.\n"); + PRINT("vote success.\n"); fail_marker_positive(); return 0; } else { - HOST_PRINT("undetected error.\n"); + PRINT("undetected error.\n"); fail_marker_negative(); return 1; } diff --git a/targets/wasm-module/sum4-repl-cored.cpp b/targets/wasm-module/sum4-repl-cored.cpp index 14d8537..bfa8061 100644 --- a/targets/wasm-module/sum4-repl-cored.cpp +++ b/targets/wasm-module/sum4-repl-cored.cpp @@ -27,7 +27,7 @@ static enc_t sum_out[REPLICA_COUNT]; static INLINE enc_t apply(enc_t vc, sign_t bdyn) { if (bdyn > SIG_MAX) { - HOST_PRINT("signature overflow.\n"); + PRINT("signature overflow.\n"); fail_marker_detected(); } return vc + bdyn; @@ -49,7 +49,7 @@ static sign_t cored_vote(void) { cored_res = apply(XC, (XC - ZC)); return SIG_s_XZ; } else { - HOST_PRINT("all replicas differ.\n"); + PRINT("all replicas differ.\n"); fail_marker_detected(); return 0; } @@ -93,7 +93,7 @@ extern "C" EXPORT("wasm_module") int wasm_module(void) { vote_result_sig = SIG_Y; break; default: - HOST_PRINT("unknown static_sig.\n"); + PRINT("unknown static_sig.\n"); break; } @@ -102,18 +102,18 @@ extern "C" EXPORT("wasm_module") int wasm_module(void) { /* Validate Vote result */ if (!check(cored_res, THE_A, vote_result_sig)) { - HOST_PRINT("voted result invalid.\n"); + PRINT("voted result invalid.\n"); fail_marker_detected(); return 2; } plain_t res = decode(cored_res, THE_A, vote_result_sig); if (res == 5) { - HOST_PRINT("cored success.\n"); + PRINT("cored success.\n"); fail_marker_positive(); return 0; } else { - HOST_PRINT("undetected error.\n"); + PRINT("undetected error.\n"); fail_marker_negative(); return 1; } diff --git a/targets/wasm-module/tacle-kernel-binarysearch.cpp b/targets/wasm-module/tacle-kernel-binarysearch.cpp index 9514c2d..9cec7b1 100644 --- a/targets/wasm-module/tacle-kernel-binarysearch.cpp +++ b/targets/wasm-module/tacle-kernel-binarysearch.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = binarysearch_return() - (-1); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret; diff --git a/targets/wasm-module/tacle-kernel-bsort.cpp b/targets/wasm-module/tacle-kernel-bsort.cpp index 5ec5670..417be71 100644 --- a/targets/wasm-module/tacle-kernel-bsort.cpp +++ b/targets/wasm-module/tacle-kernel-bsort.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = bsort_return(); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret; diff --git a/targets/wasm-module/tacle-kernel-complex_updates.cpp b/targets/wasm-module/tacle-kernel-complex_updates.cpp index 54f5a82..b6355bc 100644 --- a/targets/wasm-module/tacle-kernel-complex_updates.cpp +++ b/targets/wasm-module/tacle-kernel-complex_updates.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = complex_updates_return(); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret; diff --git a/targets/wasm-module/tacle-kernel-countnegative.cpp b/targets/wasm-module/tacle-kernel-countnegative.cpp index 0866e03..8f2c650 100644 --- a/targets/wasm-module/tacle-kernel-countnegative.cpp +++ b/targets/wasm-module/tacle-kernel-countnegative.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = countnegative_return(); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret; diff --git a/targets/wasm-module/tacle-kernel-fft.cpp b/targets/wasm-module/tacle-kernel-fft.cpp index 5416dfc..a85719b 100644 --- a/targets/wasm-module/tacle-kernel-fft.cpp +++ b/targets/wasm-module/tacle-kernel-fft.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = fft_return(); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret; diff --git a/targets/wasm-module/tacle-kernel-matrix1.cpp b/targets/wasm-module/tacle-kernel-matrix1.cpp index 7d08633..d4cedde 100644 --- a/targets/wasm-module/tacle-kernel-matrix1.cpp +++ b/targets/wasm-module/tacle-kernel-matrix1.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = matrix1_return(); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret; diff --git a/targets/wasm-module/tacle-kernel-md5.cpp b/targets/wasm-module/tacle-kernel-md5.cpp index c306e32..bca809c 100644 --- a/targets/wasm-module/tacle-kernel-md5.cpp +++ b/targets/wasm-module/tacle-kernel-md5.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = md5_return(); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret; diff --git a/targets/wasm-module/tacle-kernel-quicksort.cpp b/targets/wasm-module/tacle-kernel-quicksort.cpp index e4fd259..3f152d6 100644 --- a/targets/wasm-module/tacle-kernel-quicksort.cpp +++ b/targets/wasm-module/tacle-kernel-quicksort.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = (quicksort_return() - 1527923179 != 0); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret; diff --git a/targets/wasm-module/tacle-kernel-recursion.cpp b/targets/wasm-module/tacle-kernel-recursion.cpp index 2433318..864c23d 100644 --- a/targets/wasm-module/tacle-kernel-recursion.cpp +++ b/targets/wasm-module/tacle-kernel-recursion.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = recursion_return(); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret; diff --git a/targets/wasm-module/tacle-kernel-sha.cpp b/targets/wasm-module/tacle-kernel-sha.cpp index 73d9a57..a4fd882 100644 --- a/targets/wasm-module/tacle-kernel-sha.cpp +++ b/targets/wasm-module/tacle-kernel-sha.cpp @@ -16,8 +16,10 @@ EXPORT("wasm_module") int wasm_module(void) { int ret = sha_return(); if (ret == 0) { + PRINT("result correct.\n"); fail_marker_positive(); } else { + PRINT("result incorrect.\n"); fail_marker_negative(); } return ret;