|
|
@@ -441,8 +441,14 @@ static os_thread_local_attribute bool thread_signal_inited = false;
|
|
|
/* The signal alternate stack base addr */
|
|
|
static os_thread_local_attribute uint8 *sigalt_stack_base_addr;
|
|
|
|
|
|
+/*
|
|
|
+ * ASAN is not designed to work with custom stack unwind or other low-level
|
|
|
+ * things. Ignore a function that does some low-level magic. (e.g. walking
|
|
|
+ * through the thread's stack bypassing the frame boundaries)
|
|
|
+ */
|
|
|
#if defined(__clang__)
|
|
|
#pragma clang optimize off
|
|
|
+__attribute__((no_sanitize_address))
|
|
|
#elif defined(__GNUC__)
|
|
|
#pragma GCC push_options
|
|
|
#pragma GCC optimize("O0")
|
|
|
@@ -503,10 +509,12 @@ destroy_stack_guard_pages()
|
|
|
}
|
|
|
#endif /* end of WASM_DISABLE_STACK_HW_BOUND_CHECK == 0 */
|
|
|
|
|
|
-/* ASAN is not designed to work with custom stack unwind or other low-level \
|
|
|
- things. > Ignore a function that does some low-level magic. (e.g. walking \
|
|
|
- through the thread's stack bypassing the frame boundaries) */
|
|
|
-#if defined(__GNUC__)
|
|
|
+/*
|
|
|
+ * ASAN is not designed to work with custom stack unwind or other low-level
|
|
|
+ * things. Ignore a function that does some low-level magic. (e.g. walking
|
|
|
+ * through the thread's stack bypassing the frame boundaries)
|
|
|
+ */
|
|
|
+#if defined(__GNUC__) || defined(__clang__)
|
|
|
__attribute__((no_sanitize_address))
|
|
|
#endif
|
|
|
static void
|
|
|
@@ -523,10 +531,12 @@ mask_signals(int how)
|
|
|
static struct sigaction prev_sig_act_SIGSEGV;
|
|
|
static struct sigaction prev_sig_act_SIGBUS;
|
|
|
|
|
|
-/* ASAN is not designed to work with custom stack unwind or other low-level \
|
|
|
- things. > Ignore a function that does some low-level magic. (e.g. walking \
|
|
|
- through the thread's stack bypassing the frame boundaries) */
|
|
|
-#if defined(__GNUC__)
|
|
|
+/*
|
|
|
+ * ASAN is not designed to work with custom stack unwind or other low-level
|
|
|
+ * things. Ignore a function that does some low-level magic. (e.g. walking
|
|
|
+ * through the thread's stack bypassing the frame boundaries)
|
|
|
+ */
|
|
|
+#if defined(__GNUC__) || defined(__clang__)
|
|
|
__attribute__((no_sanitize_address))
|
|
|
#endif
|
|
|
static void
|