Просмотр исходного кода

Let iwasm return non-zero value when running failed (#1377)

Let iwasm return non-zero value when running failed
so that the caller (e.g. test framework) can check the
running status according to the return value.
Xu Jun 3 лет назад
Родитель
Сommit
bc86674a45

+ 12 - 5
product-mini/platforms/linux-sgx/enclave-sample/App/App.cpp

@@ -583,6 +583,7 @@ set_wasi_args(void *wasm_module, const char **dir_list, uint32_t dir_list_size,
 int
 main(int argc, char *argv[])
 {
+    int32_t ret = -1;
     char *wasm_file = NULL;
     const char *func_name = NULL;
     uint8_t *wasm_file_buf = NULL;
@@ -622,8 +623,7 @@ main(int argc, char *argv[])
         if (!strcmp(argv[0], "-f") || !strcmp(argv[0], "--function")) {
             argc--, argv++;
             if (argc < 2) {
-                print_help();
-                return 0;
+                return print_help();
             }
             func_name = argv[0];
         }
@@ -651,7 +651,7 @@ main(int argc, char *argv[])
             if (dir_list_size >= sizeof(dir_list) / sizeof(char *)) {
                 printf("Only allow max dir number %d\n",
                        (int)(sizeof(dir_list) / sizeof(char *)));
-                return -1;
+                return 1;
             }
             dir_list[dir_list_size++] = argv[0] + 6;
         }
@@ -663,7 +663,7 @@ main(int argc, char *argv[])
             if (env_list_size >= sizeof(env_list) / sizeof(char *)) {
                 printf("Only allow max env number %d\n",
                        (int)(sizeof(env_list) / sizeof(char *)));
-                return -1;
+                return 1;
             }
             tmp_env = argv[0] + 6;
             if (validate_env_str(tmp_env))
@@ -688,7 +688,7 @@ main(int argc, char *argv[])
                 if (addr_pool_size >= sizeof(addr_pool) / sizeof(char *)) {
                     printf("Only allow max address number %d\n",
                            (int)(sizeof(addr_pool) / sizeof(char *)));
-                    return -1;
+                    return 1;
                 }
 
                 addr_pool[addr_pool_size++] = token;
@@ -755,6 +755,8 @@ main(int argc, char *argv[])
     else
         app_instance_main(wasm_module_inst, argc, argv);
 
+    ret = 0;
+
     /* Deinstantiate module */
     deinstantiate_module(wasm_module_inst);
 
@@ -770,7 +772,12 @@ fail1:
     /* Destroy runtime environment */
     destroy_runtime();
 
+#if WASM_ENABLE_SPEC_TEST != 0
+    (void)ret;
     return 0;
+#else
+    return ret;
+#endif
 }
 
 int

+ 6 - 0
product-mini/platforms/linux-sgx/enclave-sample/Makefile

@@ -64,6 +64,12 @@ else
 	App_C_Flags += -DNDEBUG -UEDEBUG -UDEBUG
 endif
 
+ifeq ($(SPEC_TEST), 1)
+	App_C_Flags += -DWASM_ENABLE_SPEC_TEST=1
+else
+	App_C_Flags += -DWASM_ENABLE_SPEC_TEST=0
+endif
+
 App_Cpp_Flags := $(App_C_Flags) -std=c++11
 App_Link_Flags := $(SGX_COMMON_CFLAGS) libvmlib_untrusted.a -L$(SGX_LIBRARY_PATH) -l$(Urts_Library_Name) -lpthread
 

+ 14 - 6
product-mini/platforms/posix/main.c

@@ -294,6 +294,7 @@ static char global_heap_buf[10 * 1024 * 1024] = { 0 };
 int
 main(int argc, char *argv[])
 {
+    int32 ret = -1;
     char *wasm_file = NULL;
     const char *func_name = NULL;
     uint8 *wasm_file_buf = NULL;
@@ -336,8 +337,7 @@ main(int argc, char *argv[])
         if (!strcmp(argv[0], "-f") || !strcmp(argv[0], "--function")) {
             argc--, argv++;
             if (argc < 2) {
-                print_help();
-                return 0;
+                return print_help();
             }
             func_name = argv[0];
         }
@@ -375,7 +375,7 @@ main(int argc, char *argv[])
             if (dir_list_size >= sizeof(dir_list) / sizeof(char *)) {
                 printf("Only allow max dir number %d\n",
                        (int)(sizeof(dir_list) / sizeof(char *)));
-                return -1;
+                return 1;
             }
             dir_list[dir_list_size++] = argv[0] + 6;
         }
@@ -387,7 +387,7 @@ main(int argc, char *argv[])
             if (env_list_size >= sizeof(env_list) / sizeof(char *)) {
                 printf("Only allow max env number %d\n",
                        (int)(sizeof(env_list) / sizeof(char *)));
-                return -1;
+                return 1;
             }
             tmp_env = argv[0] + 6;
             if (validate_env_str(tmp_env))
@@ -412,7 +412,7 @@ main(int argc, char *argv[])
                 if (addr_pool_size >= sizeof(addr_pool) / sizeof(char *)) {
                     printf("Only allow max address number %d\n",
                            (int)(sizeof(addr_pool) / sizeof(char *)));
-                    return -1;
+                    return 1;
                 }
 
                 addr_pool[addr_pool_size++] = token;
@@ -427,7 +427,7 @@ main(int argc, char *argv[])
             if (native_lib_count >= sizeof(native_lib_list) / sizeof(char *)) {
                 printf("Only allow max native lib number %d\n",
                        (int)(sizeof(native_lib_list) / sizeof(char *)));
-                return -1;
+                return 1;
             }
             native_lib_list[native_lib_count++] = argv[0] + 13;
         }
@@ -570,6 +570,8 @@ main(int argc, char *argv[])
     else
         app_instance_main(wasm_module_inst);
 
+    ret = 0;
+
     /* destroy the module instance */
     wasm_runtime_deinstantiate(wasm_module_inst);
 
@@ -594,5 +596,11 @@ fail1:
 
     /* destroy runtime environment */
     wasm_runtime_destroy();
+
+#if WASM_ENABLE_SPEC_TEST != 0
+    (void)ret;
     return 0;
+#else
+    return ret;
+#endif
 }

+ 12 - 4
product-mini/platforms/windows/main.c

@@ -223,6 +223,7 @@ moudle_destroyer(uint8 *buffer, uint32 size)
 int
 main(int argc, char *argv[])
 {
+    int32 ret = -1;
     char *wasm_file = NULL;
     const char *func_name = NULL;
     uint8 *wasm_file_buf = NULL;
@@ -254,8 +255,7 @@ main(int argc, char *argv[])
         if (!strcmp(argv[0], "-f") || !strcmp(argv[0], "--function")) {
             argc--, argv++;
             if (argc < 2) {
-                print_help();
-                return 0;
+                return print_help();
             }
             func_name = argv[0];
         }
@@ -286,7 +286,7 @@ main(int argc, char *argv[])
             if (dir_list_size >= sizeof(dir_list) / sizeof(char *)) {
                 printf("Only allow max dir number %d\n",
                        (int)(sizeof(dir_list) / sizeof(char *)));
-                return -1;
+                return 1;
             }
             dir_list[dir_list_size++] = argv[0] + 6;
         }
@@ -298,7 +298,7 @@ main(int argc, char *argv[])
             if (env_list_size >= sizeof(env_list) / sizeof(char *)) {
                 printf("Only allow max env number %d\n",
                        (int)(sizeof(env_list) / sizeof(char *)));
-                return -1;
+                return 1;
             }
             tmp_env = argv[0] + 6;
             if (validate_env_str(tmp_env))
@@ -437,6 +437,8 @@ main(int argc, char *argv[])
     else
         app_instance_main(wasm_module_inst);
 
+    ret = 0;
+
     /* destroy the module instance */
     wasm_runtime_deinstantiate(wasm_module_inst);
 
@@ -454,5 +456,11 @@ fail2:
 fail1:
     /* destroy runtime environment */
     wasm_runtime_destroy();
+
+#if WASM_ENABLE_SPEC_TEST != 0
+    (void)ret;
     return 0;
+#else
+    return ret;
+#endif
 }