Move from the `LIBNEWLIBC` and `LIBPTHREAD_EMBEDDED` to `LIBMUSL`.
Changed needed to build lib-wamr were:
* Using the `uk/essentials.h` header for a definition of `offsetof`
* Adding a new `0006` patch file to change `PTHREAD_MUTEX_RECURSIVE_NP` into
`PTHREAD_MUTEX_RECURSIVE` as the former on isn't defined
* Change the `0005` patch file to use modern working unikraft initrd loading
code so it can load the `.wasm` files
Signed-off-by: Robert Klink <roberthklink@gmail.com>
Signed-off-by: Ricardo Mohamedhoesein <rmohamedhoesein3@gmail.com>
Co-authored-by: Ricardo Mohamedhoesein <rmohamedhoesein3@gmail.com>
Reviewed-by: Eduard Vintilă <eduard.vintila47@gmail.com>
Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #8
menuconfig LIBWAMR
bool "wamr - Intel's WebAssembly Micro Runtime"
default y
- select LIBNEWLIBC
+ select LIBMUSL
select LIBLWIP
- select LIBPTHREAD_EMBEDDED
select LIBUKTIME
select UKUNISTD
#include <time.h>
#include <string.h>
#include <stdio.h>
+#include <uk/essentials.h>
#ifndef __cplusplus
int snprintf(char *buffer, size_t count, const char *format, ...);
# define NULL ((void*) 0)
#endif
+#define offsetof __offsetof
+
#define bh_assert assert
extern int b_memcpy_s(void * s1, unsigned int s1max, const void * s2,
- wasm_printf("%s\n", error_buf);
- goto fail4;
+ /* load from initrd */
-+ struct ukplat_memregion_desc img;
++ struct ukplat_memregion_desc *img;
+ if (ukplat_memregion_find_initrd0(&img) >= 0) {
-+ wasm_file_buf = (uint8*)img.base;
-+ wasm_file_size = img.len;
++ wasm_file_buf = (uint8*)img->vbase;
++ wasm_file_size = img->len;
+
+ /* load WASM module */
+ if (!(wasm_module = wasm_runtime_load(wasm_file_buf, wasm_file_size,
--- /dev/null
+--- /core/shared-lib/platform/linux/bh_thread.c orig 2023-07-15 14:14:26.388776102 +0200
++++ /core/shared-lib/platform/linux/bh_thread.c 2023-07-15 14:13:17.443138319 +0200
+@@ -176,7 +176,7 @@
+ if (ret)
+ return BHT_ERROR;
+
+- pthread_mutexattr_settype(&mattr, PTHREAD_MUTEX_RECURSIVE_NP);
++ pthread_mutexattr_settype(&mattr, PTHREAD_MUTEX_RECURSIVE);
+ ret = pthread_mutex_init(mutex, &mattr);
+ pthread_mutexattr_destroy(&mattr);
+