]> git.proxmox.com Git - wasi-libc.git/commitdiff
Reactor support. (#74)
authorDan Gohman <sunfish@mozilla.com>
Fri, 29 May 2020 16:09:58 +0000 (09:09 -0700)
committerGitHub <noreply@github.com>
Fri, 29 May 2020 16:09:58 +0000 (09:09 -0700)
* Add support for the Reactor model.

* Mark _activate and _start as wasm exports.

* Rename _activate to _initialize.

* Don't define `_fini`.

* Rename reactor-crt1.c to crt1-reactor.c.

basics/crt/crt1.c
expected/wasm32-wasi/defined-symbols.txt
libc-bottom-half/crt/crt1-reactor.c [new file with mode: 0644]
libc-bottom-half/crt/crt1.c
libc-top-half/musl/src/exit/exit.c

index 744baab85078aab5749eeba769817b439333c24b..dc0009f9b2daa97bb7cfd8bc0e225101aee247de 100644 (file)
@@ -3,6 +3,7 @@ extern int __original_main(void);
 extern void __prepare_for_exit(void);
 void _Exit(int) __attribute__((noreturn));
 
+__attribute__((export_name("_start")))
 void _start(void) {
     // The linker synthesizes this to call constructors.
     __wasm_call_ctors();
index 06bf8028cdac980ad17647e717d399659dfc6c9a..448551862ccb1c37f046af7c4ae803c14f3c0092 100644 (file)
@@ -273,8 +273,8 @@ __xpg_strerror_r
 __year_to_secs
 _environ
 _exit
-_fini
 _flushlbf
+_initialize
 _start
 a64l
 abort
diff --git a/libc-bottom-half/crt/crt1-reactor.c b/libc-bottom-half/crt/crt1-reactor.c
new file mode 100644 (file)
index 0000000..f507c9e
--- /dev/null
@@ -0,0 +1,7 @@
+extern void __wasm_call_ctors(void);
+
+__attribute__((export_name("_initialize")))
+void _initialize(void) {
+    // The linker synthesizes this to call constructors.
+    __wasm_call_ctors();
+}
index f70c24a9fd3264294848e19622e3563cb87b66e6..f4fd9880052d1da30dabfa65666133d77805eaf7 100644 (file)
@@ -3,6 +3,7 @@ extern void __wasm_call_ctors(void);
 extern int __original_main(void);
 extern void __prepare_for_exit(void);
 
+__attribute__((export_name("_start")))
 void _start(void) {
     // The linker synthesizes this to call constructors.
     __wasm_call_ctors();
index b9359f4525f75e3dbe23930e637db9bffe666c0e..7462d58fbab06686bf73fada611479daccc0b42d 100644 (file)
@@ -10,9 +10,9 @@ static void dummy()
  * as a consequence of linking either __toread.c or __towrite.c. */
 weak_alias(dummy, __funcs_on_exit);
 weak_alias(dummy, __stdio_exit);
+#ifdef __wasilibc_unmodified_upstream // fini
 weak_alias(dummy, _fini);
 
-#ifdef __wasilibc_unmodified_upstream // fini
 extern weak hidden void (*const __fini_array_start)(void), (*const __fini_array_end)(void);
 
 static void libc_exit_fini(void)