Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync with main #4049

Merged
merged 112 commits into from
Feb 5, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
e87f7a9
Fix Windows compile error when uvwasi is enabled (#3810)
wenyongh Sep 25, 2024
86926aa
Fix unused param warning when GC is enabled (#3814)
palchikov Sep 25, 2024
5ce6f90
Add scoreboard CI for supply-chain security (#3819)
TianlongLiang Sep 27, 2024
438b81b
Fix missing symbols when using aot mode on riscv platforms (#3812)
Kvencc Sep 28, 2024
0e05b0a
Add CODEOWNERS (#3822)
lum1n0us Sep 29, 2024
bd8c7a3
build(deps): bump github/codeql-action from 2.2.4 to 3.26.9
dependabot[bot] Sep 30, 2024
2baac8d
build(deps): bump actions/upload-artifact from 3.1.0 to 4.4.0
dependabot[bot] Sep 30, 2024
2e60f37
build(deps): bump ossf/scorecard-action from 2.3.1 to 2.4.0
dependabot[bot] Sep 30, 2024
e07ac1f
Merge pull request #3826 from bytecodealliance/dependabot/github_acti…
loganek Oct 5, 2024
5f3d36b
Merge pull request #3827 from bytecodealliance/dependabot/github_acti…
loganek Oct 5, 2024
e0027f3
Merge pull request #3828 from bytecodealliance/dependabot/github_acti…
loganek Oct 5, 2024
72872cb
Fix mac build of libc_emcc_wrapper.c (#3836)
bnason-nf Oct 5, 2024
0c4b2da
aot_comp_option.h: Add missing stdint.h header (#3834)
sjamesr Oct 7, 2024
f9153fb
build(deps): bump github/codeql-action from 3.26.9 to 3.26.11 (#3843)
dependabot[bot] Oct 8, 2024
6b4d8aa
Emit load_addr and load_size if WAMR_ENABLE_COMPILER is set (#3835)
sjamesr Oct 8, 2024
30539bf
Fix compilation error found in tflite test (#3820)
lum1n0us Oct 8, 2024
deacb7a
Fix exec_env_tls assertion in module instantiation (#3844)
wenyongh Oct 8, 2024
2b5e2d9
libc-emcc: Use alternate method to check getrandom support (#3848)
bnason-nf Oct 10, 2024
36d4380
Support table64 extension in classic-interp and AOT running modes (#3…
TianlongLiang Oct 11, 2024
b16b604
Enable libc-wasi for windows msvc build (#3852)
wenyongh Oct 14, 2024
e2680e5
Remove unused folder samples/gui and samples/littlevgl (#3853)
wenyongh Oct 14, 2024
7d4b530
build(deps): bump actions/upload-artifact from 4.4.0 to 4.4.3 (#3855)
dependabot[bot] Oct 14, 2024
0152e2c
build(deps): bump github/codeql-action from 3.26.11 to 3.26.12 (#3856)
dependabot[bot] Oct 14, 2024
b038f27
Merge pull request #3823 from bytecodealliance/dev/shared_heap
wenyongh Oct 15, 2024
327374c
Fix some compile warnings and typos (#3854)
wenyongh Oct 15, 2024
1af4740
Add Windows wamrc and iwasm build in release CI (#3857)
TianlongLiang Oct 17, 2024
7e625a0
Fix syntax error in codeql_buildscript.sh (#3864)
TianlongLiang Oct 17, 2024
74d2427
Allow to set native stack boundary to exec_env (#3862)
wenyongh Oct 18, 2024
48eaa22
Refine wasm/aot function instance lookup (#3865)
wenyongh Oct 18, 2024
bb3f8d9
release CI: Add another iwasm binary that supports Garbage Collection…
TianlongLiang Oct 21, 2024
87588ca
Fix lookup function issue reported in nightly run (#3868)
wenyongh Oct 21, 2024
3ad9530
Fix quadratic runtime for duplicate export name detection (#3861)
sjamesr Oct 21, 2024
b34b2c8
Add token permissions for CIs to fix issues reported by scorecard (#3…
TianlongLiang Oct 22, 2024
fe13f6d
build(deps): bump github/codeql-action from 3.26.12 to 3.26.13 (#3869)
dependabot[bot] Oct 22, 2024
217ba3b
Update release notes and update version to 2.2.0 (#3863)
Zzzabiyaka Oct 22, 2024
7d56289
Exclude fuzz test python and npm packages in scoreboard scan (#3871)
TianlongLiang Oct 23, 2024
6426fc4
Fix out of bounds issues after memory.grow on non-aot non-threads bui…
Zzzabiyaka Oct 23, 2024
a713ba1
fix(ios): Remove `float-abi` flag (#3889)
xdoardo Oct 29, 2024
483c57d
build(deps): bump github/codeql-action from 3.26.13 to 3.27.0 (#3888)
dependabot[bot] Oct 29, 2024
a3960c8
Refine looking up aot function with index (#3882)
wenyongh Oct 29, 2024
95edef3
Bump AOT_CURRENT_VERSION for WAMR 2.x (gc, memory64) (#3880)
yamt Oct 29, 2024
1138435
Fix mmap flags for AOT loader on non-Linux SGX platforms (#3890)
lum1n0us Oct 30, 2024
c7b2683
Fix out of bounds issue in is_native_addr_in_shared_heap function (#3…
lum1n0us Oct 31, 2024
e352f0a
Refactor AOT loader to support compatible versions (#3891)
lum1n0us Nov 1, 2024
bf78863
Wasm loader enhancement: check code size in code entry (#3892)
TianlongLiang Nov 7, 2024
397f663
fix(uwp): Gate NTSTATUS definition behind WINAPI_PARTITION_DESKTOP fo…
fadss Nov 8, 2024
58f242f
Merge pull request #3897 from bafadumi/main
loganek Nov 12, 2024
fdda259
Fix linked global initialization in multimodule (#3905)
sjamesr Nov 13, 2024
75f5fa4
build(deps): bump github/codeql-action from 3.27.0 to 3.27.1 (#3902)
dependabot[bot] Nov 13, 2024
226bf22
GlobalValueSet was moved to IRPartitionLayer recently, but we have a …
sjamesr Nov 13, 2024
0e4dffc
Fix a leak in wasm_loader_emit_br_info (#3900)
TianlongLiang Nov 13, 2024
0119b17
Correct the table index calculation in aot_instantiation (#3903)
lum1n0us Nov 18, 2024
2975e2f
build(deps): bump github/codeql-action from 3.27.1 to 3.27.4 (#3912)
dependabot[bot] Nov 19, 2024
f2b87d7
Support external toolchain on Windows for aot compiler (#3911)
TianlongLiang Nov 19, 2024
f1d03db
Fix CI wamr-ide error (#3913)
TianlongLiang Nov 20, 2024
62aca17
Check possible integer overflow in aot memory boundary check (#3920)
TianlongLiang Nov 22, 2024
00c2aa1
Drop declarative elements on module instantiation (#3922)
sjamesr Nov 24, 2024
9d8150e
Fix WASI Path Mapping Processing (#3923)
dpjohnst Nov 24, 2024
dbdf3df
Use plain assignment rather than bh_memcpy_s (#3924)
sjamesr Nov 24, 2024
b0c6d5c
add testcases for shared heap and fix POP_MEM_OFFSET of memory64 (#3916)
WenLY1 Nov 24, 2024
1d111a3
Fix loader small bug (#3928)
TianlongLiang Nov 26, 2024
7b553cd
Enable ref types by default (#3894)
Zzzabiyaka Nov 27, 2024
27d96aa
Update README.md to clarify Windows toolchain support and ESP-IDF ref…
lum1n0us Nov 27, 2024
fd91b51
build(deps): bump github/codeql-action from 3.27.4 to 3.27.5 (#3931)
dependabot[bot] Nov 28, 2024
8698d22
add thread cpu time for zephyr (#3937)
TianlongLiang Nov 28, 2024
e09613c
support WASM_FUNCREF return type in argv_to_results (#3936)
sjamesr Nov 28, 2024
838dd81
don't return an uninitialized trap if argv_to_results fails (#3935)
sjamesr Nov 28, 2024
739efd7
Fix incorrect assignment in win_file.c (#3939)
dpjohnst Dec 1, 2024
aabe830
Improvements for platform thread APIs on Windows and Zephyr (#3941)
TianlongLiang Dec 6, 2024
c32a6ce
Refactor SConscript and add file checks in iwasm.c (#3945)
zhkag Dec 6, 2024
f665e7b
build(deps): bump github/codeql-action from 3.27.5 to 3.27.6
dependabot[bot] Dec 9, 2024
591b740
Consume the placeholders that were put when emitting table info (#3940)
lum1n0us Dec 10, 2024
bebdd4a
Fix aot table instantiate (#3946)
wenyongh Dec 10, 2024
1fb0862
Merge pull request #3951 from bytecodealliance/dependabot/github_acti…
loganek Dec 10, 2024
9563909
set alignment 4 when loading multi return value (#3955)
TianlongLiang Dec 12, 2024
296c3cc
wasm_export.h: Use "default" visibility for gcc and clang (#3957)
midokura-xavi92 Dec 19, 2024
09c2abd
build(deps): Bump github/codeql-action from 3.27.6 to 3.27.9 (#3960)
dependabot[bot] Dec 19, 2024
932eb5d
Only access Zephyr thread stats info when it's available (#3962)
TianlongLiang Dec 19, 2024
9916813
top-level cmakefile: fix macOS build (#3968)
yamt Dec 19, 2024
8d51a3c
use a random secret key (#3971)
lum1n0us Dec 19, 2024
f8f37c8
[fuzzing] Enable instantiation (#3958)
lum1n0us Dec 19, 2024
9598611
CMakeLists.txt: Do not require C++ (#3956)
midokura-xavi92 Dec 20, 2024
4cda74a
add reference type support by default for darwin to support WASI-SDK-…
woodsmc Dec 22, 2024
040e776
top-level cmake: link llvm libraries to our shared library (#3973)
yamt Dec 23, 2024
8ac0649
Set thread information earlier in exec_env creation (#3967)
sjamesr Dec 23, 2024
70bec14
Add Tianlong into code owners (#3970)
lum1n0us Dec 24, 2024
bf2f366
build(deps): Bump github/codeql-action from 3.27.9 to 3.28.0 (#3982)
dependabot[bot] Dec 25, 2024
04f1071
build(deps): Bump actions/upload-artifact from 4.4.3 to 4.5.0 (#3981)
dependabot[bot] Dec 25, 2024
9b80766
Break aot_create_comp_data into small functions
no1wudi Dec 25, 2024
38cf274
Optimize memory initialization handling in AOT loader (#3983)
no1wudi Dec 26, 2024
24ecee8
Merge pull request #3987 from no1wudi/fix
no1wudi Dec 28, 2024
7f3e0df
Handle a new scenario where an item is both exported and imported. (#…
lum1n0us Dec 29, 2024
31ff576
Error message improvement (#4000)
loganek Jan 3, 2025
099056b
Ensure __heap_base and __data_end global indices are validated agains…
lum1n0us Jan 3, 2025
1958808
Fix table index calculations in wasm_loader and wasm_mini_loader (#4004)
lum1n0us Jan 5, 2025
1807eec
Add an example of how to embed WAMR in Zephyr user mode (#3998)
TianlongLiang Jan 5, 2025
9989b1c
[fuzzing] Use software bound-check during fuzzing (#4003)
lum1n0us Jan 6, 2025
a653746
Check whether related table has funcref elem in opcode call_indirect …
TianlongLiang Jan 6, 2025
02683d2
Improve stack consistency by ensuring sufficient space for dummy offs…
lum1n0us Jan 9, 2025
902f7d2
Add documentation regarding security issues and the status of Wasm pr…
lum1n0us Jan 9, 2025
53da420
Enable shrunk memory by default and add related configurations (#4008)
lum1n0us Jan 12, 2025
0d20521
build(deps): Bump actions/upload-artifact from 4.5.0 to 4.6.0 (#4021)
dependabot[bot] Jan 14, 2025
946430f
build(deps): Bump github/codeql-action from 3.28.0 to 3.28.1 (#4020)
dependabot[bot] Jan 14, 2025
9c3807e
Refine read leb int wasm loader of fast interpreter (#4017)
wenyongh Jan 14, 2025
1ac62e1
.github: Add shared lib builds (#3975)
midokura-xavi92 Jan 15, 2025
ba75b8f
fixes for compiling on windows (#4026)
malytomas Jan 17, 2025
831e4bb
Refine getting const offsets in wasm loader of fast-interp (#4012)
wenyongh Jan 20, 2025
e3ddbd5
Synchronize the GC spec tests to the commit from December 9. 2024. (#…
lum1n0us Jan 20, 2025
b6dea22
Fix wasm loader check data segment count (#4039)
TianlongLiang Jan 21, 2025
5dcffaa
Update Rust target from 'wasm32-wasi' to 'wasm32-wasip1' in CI (#4050)
TianlongLiang Feb 1, 2025
6f0e0e5
build(deps): Bump github/codeql-action from 3.28.1 to 3.28.5
dependabot[bot] Jan 27, 2025
7f1e612
build(deps): Bump github/codeql-action from 3.28.5 to 3.28.8
dependabot[bot] Feb 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Support external toolchain on Windows for aot compiler (#3911)
allowing custom ARC toolchain on Windows
  • Loading branch information
TianlongLiang authored Nov 19, 2024
commit f2b87d773e88790fd2eac89d828f78836c219900
20 changes: 18 additions & 2 deletions build-scripts/build_llvm.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,27 @@ def build_llvm(llvm_dir, platform, backends, projects, use_clang=False, extra_fl
"default": [],
}

experimental_backends = ["ARC", "Xtensa"]
normal_backends = [s for s in backends if s not in experimental_backends]

LLVM_TARGETS_TO_BUILD = [
'-DLLVM_TARGETS_TO_BUILD:STRING="' + ";".join(backends) + '"'
if backends
'-DLLVM_TARGETS_TO_BUILD:STRING="' + ";".join(normal_backends) + '"'
if normal_backends
else '-DLLVM_TARGETS_TO_BUILD:STRING="AArch64;ARM;Mips;RISCV;X86"'
]

# if not on ARC platform, but want to add expeirmental backend ARC as target
if platform != "ARC" and "ARC" in backends:
LLVM_TARGETS_TO_BUILD.extend(
LLVM_EXTRA_COMPILE_OPTIONS["arc"]
)

if platform != "Xtensa" and "Xtensa" in backends:
print(
"Currently it's not supported to build Xtensa backend on non-Xtensa platform"
)
return None

LLVM_PROJECTS_TO_BUILD = [
'-DLLVM_ENABLE_PROJECTS:STRING="' + ";".join(projects) + '"' if projects else ""
]
Expand Down Expand Up @@ -240,6 +255,7 @@ def main():
"X86",
"Xtensa",
],
default=[],
help="identify LLVM supported backends, separate by space, like '--arch ARM Mips X86'",
)
parser.add_argument(
Expand Down
43 changes: 4 additions & 39 deletions core/iwasm/compilation/aot_compiler.c
Original file line number Diff line number Diff line change
Expand Up @@ -4093,39 +4093,6 @@ aot_compile_wasm(AOTCompContext *comp_ctx)
return true;
}

#if !(defined(_WIN32) || defined(_WIN32_))
char *
aot_generate_tempfile_name(const char *prefix, const char *extension,
char *buffer, uint32 len)
{
int fd, name_len;

name_len = snprintf(buffer, len, "%s-XXXXXX", prefix);

if ((fd = mkstemp(buffer)) <= 0) {
aot_set_last_error("make temp file failed.");
return NULL;
}

/* close and remove temp file */
close(fd);
unlink(buffer);

/* Check if buffer length is enough */
/* name_len + '.' + extension + '\0' */
if (name_len + 1 + strlen(extension) + 1 > len) {
aot_set_last_error("temp file name too long.");
return NULL;
}

snprintf(buffer + name_len, len - name_len, ".%s", extension);
return buffer;
}
#else

errno_t
_mktemp_s(char *nameTemplate, size_t sizeInChars);

char *
aot_generate_tempfile_name(const char *prefix, const char *extension,
char *buffer, uint32 len)
Expand All @@ -4134,7 +4101,8 @@ aot_generate_tempfile_name(const char *prefix, const char *extension,

name_len = snprintf(buffer, len, "%s-XXXXXX", prefix);

if (_mktemp_s(buffer, name_len + 1) != 0) {
if (!bh_mkstemp(buffer, name_len + 1)) {
aot_set_last_error("make temp file failed.");
return NULL;
}

Expand All @@ -4148,7 +4116,6 @@ aot_generate_tempfile_name(const char *prefix, const char *extension,
snprintf(buffer + name_len, len - name_len, ".%s", extension);
return buffer;
}
#endif /* end of !(defined(_WIN32) || defined(_WIN32_)) */

bool
aot_emit_llvm_file(AOTCompContext *comp_ctx, const char *file_name)
Expand Down Expand Up @@ -4227,7 +4194,6 @@ aot_emit_object_file(AOTCompContext *comp_ctx, char *file_name)

bh_print_time("Begin to emit object file");

#if !(defined(_WIN32) || defined(_WIN32_))
if (comp_ctx->external_llc_compiler || comp_ctx->external_asm_compiler) {
char cmd[1024];
int ret;
Expand Down Expand Up @@ -4270,7 +4236,7 @@ aot_emit_object_file(AOTCompContext *comp_ctx, char *file_name)
file_name, bc_file_name);
LOG_VERBOSE("invoking external LLC compiler:\n\t%s", cmd);

ret = system(cmd);
ret = bh_system(cmd);
/* remove temp bitcode file */
unlink(bc_file_name);

Expand Down Expand Up @@ -4323,7 +4289,7 @@ aot_emit_object_file(AOTCompContext *comp_ctx, char *file_name)
file_name, asm_file_name);
LOG_VERBOSE("invoking external ASM compiler:\n\t%s", cmd);

ret = system(cmd);
ret = bh_system(cmd);
/* remove temp assembly file */
unlink(asm_file_name);

Expand All @@ -4336,7 +4302,6 @@ aot_emit_object_file(AOTCompContext *comp_ctx, char *file_name)

return true;
}
#endif /* end of !(defined(_WIN32) || defined(_WIN32_)) */

if (!strncmp(LLVMGetTargetName(target), "arc", 3))
/* Emit to assembly file instead for arc target
Expand Down
20 changes: 3 additions & 17 deletions core/iwasm/compilation/aot_emit_aot_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -4292,10 +4292,6 @@ aot_obj_data_create(AOTCompContext *comp_ctx)

bh_print_time("Begin to emit object file");
if (comp_ctx->external_llc_compiler || comp_ctx->external_asm_compiler) {
#if defined(_WIN32) || defined(_WIN32_)
aot_set_last_error("external toolchain not supported on Windows");
goto fail;
#else
/* Generate a temp file name */
int ret;
char obj_file_name[64];
Expand Down Expand Up @@ -4323,27 +4319,18 @@ aot_obj_data_create(AOTCompContext *comp_ctx)
aot_set_last_error("create mem buffer with file failed.");
goto fail;
}
#endif /* end of defined(_WIN32) || defined(_WIN32_) */
}
else if (!strncmp(LLVMGetTargetName(target), "arc", 3)) {
#if defined(_WIN32) || defined(_WIN32_)
aot_set_last_error("emit object file on Windows is unsupported.");
goto fail;
#else
/* Emit to assembly file instead for arc target
as it cannot emit to object file */
char file_name[] = "wasm-XXXXXX", buf[128];
int fd, ret;
int ret;

if ((fd = mkstemp(file_name)) <= 0) {
if (!bh_mkstemp(file_name, sizeof(file_name))) {
aot_set_last_error("make temp file failed.");
goto fail;
}

/* close and remove temp file */
close(fd);
unlink(file_name);

snprintf(buf, sizeof(buf), "%s%s", file_name, ".s");
if (LLVMTargetMachineEmitToFile(comp_ctx->target_machine,
comp_ctx->module, buf, LLVMAssemblyFile,
Expand All @@ -4364,7 +4351,7 @@ aot_obj_data_create(AOTCompContext *comp_ctx)
"/opt/zephyr-sdk/arc-zephyr-elf/bin/arc-zephyr-elf-gcc ",
"-mcpu=arcem -o ", file_name, ".o -c ", file_name, ".s");
/* TODO: use try..catch to handle possible exceptions */
ret = system(buf);
ret = bh_system(buf);
/* remove temp assembly file */
snprintf(buf, sizeof(buf), "%s%s", file_name, ".s");
unlink(buf);
Expand All @@ -4391,7 +4378,6 @@ aot_obj_data_create(AOTCompContext *comp_ctx)
aot_set_last_error("create mem buffer with file failed.");
goto fail;
}
#endif /* end of defined(_WIN32) || defined(_WIN32_) */
}
else {
if (LLVMTargetMachineEmitToMemoryBuffer(
Expand Down
10 changes: 0 additions & 10 deletions core/iwasm/compilation/aot_llvm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2746,10 +2746,6 @@ aot_create_comp_context(const AOTCompData *comp_data, aot_comp_option_t option)
/* verify external llc compiler */
comp_ctx->external_llc_compiler = getenv("WAMRC_LLC_COMPILER");
if (comp_ctx->external_llc_compiler) {
#if defined(_WIN32) || defined(_WIN32_)
comp_ctx->external_llc_compiler = NULL;
LOG_WARNING("External LLC compiler not supported on Windows.");
#else
if (access(comp_ctx->external_llc_compiler, X_OK) != 0) {
LOG_WARNING("WAMRC_LLC_COMPILER [%s] not found, fallback to "
"default pipeline",
Expand All @@ -2761,17 +2757,12 @@ aot_create_comp_context(const AOTCompData *comp_data, aot_comp_option_t option)
LOG_VERBOSE("Using external LLC compiler [%s]",
comp_ctx->external_llc_compiler);
}
#endif
}

/* verify external asm compiler */
if (!comp_ctx->external_llc_compiler) {
comp_ctx->external_asm_compiler = getenv("WAMRC_ASM_COMPILER");
if (comp_ctx->external_asm_compiler) {
#if defined(_WIN32) || defined(_WIN32_)
comp_ctx->external_asm_compiler = NULL;
LOG_WARNING("External ASM compiler not supported on Windows.");
#else
if (access(comp_ctx->external_asm_compiler, X_OK) != 0) {
LOG_WARNING(
"WAMRC_ASM_COMPILER [%s] not found, fallback to "
Expand All @@ -2784,7 +2775,6 @@ aot_create_comp_context(const AOTCompData *comp_data, aot_comp_option_t option)
LOG_VERBOSE("Using external ASM compiler [%s]",
comp_ctx->external_asm_compiler);
}
#endif
}
}

Expand Down
12 changes: 12 additions & 0 deletions core/iwasm/compilation/aot_llvm.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,18 @@
#include "aot_orc_extra.h"
#include "aot_comp_option.h"

#if defined(_WIN32) || defined(_WIN32_)
#include <io.h>
#define access _access
/* On windows there is no X_OK flag to check for executablity, only check for
* existence */
#ifdef X_OK
#undef X_OK
#endif
#define X_OK 00
#define unlink _unlink
#endif

#ifdef __cplusplus
extern "C" {
#endif
Expand Down
50 changes: 50 additions & 0 deletions core/shared/utils/bh_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,53 @@ wa_strdup(const char *s)
}
return s1;
}

#if WASM_ENABLE_WAMR_COMPILER != 0 || WASM_ENABLE_JIT != 0
int
bh_system(const char *cmd)
{
int ret;

#if !(defined(_WIN32) || defined(_WIN32_))
ret = system(cmd);
#else
ret = _spawnlp(_P_WAIT, "cmd.exe", "/c", cmd, NULL);
#endif

return ret;
}

#if defined(_WIN32) || defined(_WIN32_)
errno_t
_mktemp_s(char *nameTemplate, size_t sizeInChars);
#endif

bool
bh_mkstemp(char *file_name, size_t name_len)
{
int fd;

#if !(defined(_WIN32) || defined(_WIN32_))
(void)name_len;
/* On Linux, it generates a unique temporary filename from template, creates
* and opens the file, and returns an open file descriptor for the file. */
if ((fd = mkstemp(file_name)) <= 0) {
goto fail;
}

/* close and remove temp file */
close(fd);
unlink(file_name);
#else
/* On Windows, it generates a unique temporary file name but does not create
* or open the file */
if (_mktemp_s(file_name, name_len) != 0) {
goto fail;
}
#endif

return true;
fail:
return false;
}
#endif /* End of WASM_ENABLE_WAMR_COMPILER != 0 || WASM_ENABLE_JIT != 0 */
10 changes: 10 additions & 0 deletions core/shared/utils/bh_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,16 @@ bh_strdup(const char *s);
char *
wa_strdup(const char *s);

#if WASM_ENABLE_WAMR_COMPILER != 0 || WASM_ENABLE_JIT != 0
/* Executes a system command in bash/cmd.exe */
int
bh_system(const char *cmd);

/* Tests whether can create a temporary file with the given name */
bool
bh_mkstemp(char *filename, size_t name_len);
#endif

#ifdef __cplusplus
}
#endif
Expand Down
Loading