Fix missing symbols when using aot mode on riscv platforms (#3812)

Add symbol __atomic_compare_exchange_4 and __atomic_store_4.
This commit is contained in:
Kvencc
2024-09-28 21:55:09 +08:00
committed by GitHub
parent 5ce6f90bd6
commit 438b81bd04

View File

@ -24,6 +24,7 @@
#undef NEED_SOFT_I32_DIV
#undef NEED_SOFT_I64_MUL
#undef NEED_SOFT_I64_DIV
#undef NEED_SOFT_ATOMIC
#ifdef __riscv_flen
#if __riscv_flen == 32
@ -48,6 +49,10 @@
#define NEED_SOFT_I64_DIV
#endif
#ifndef __riscv_atomic
#define NEED_SOFT_ATOMIC
#endif
/* clang-format off */
void __adddf3(void);
void __addsf3(void);
@ -101,6 +106,9 @@ void __umoddi3(void);
void __umodsi3(void);
void __unorddf2(void);
void __unordsf2(void);
bool __atomic_compare_exchange_4(volatile void *, void *, unsigned int,
bool, int, int);
void __atomic_store_4(volatile void *, unsigned int, int);
/* clang-format on */
static SymbolMap target_sym_map[] = {
@ -127,6 +135,7 @@ static SymbolMap target_sym_map[] = {
* to convert float and long long
*/
REG_SYM(__floatundisf),
REG_SYM(__floatdisf),
#endif
#ifdef NEED_SOFT_DP
REG_SYM(__adddf3),
@ -175,6 +184,10 @@ static SymbolMap target_sym_map[] = {
REG_SYM(__moddi3),
REG_SYM(__udivdi3),
REG_SYM(__umoddi3),
#endif
#ifdef NEED_SOFT_ATOMIC
REG_SYM(__atomic_compare_exchange_4),
REG_SYM(__atomic_store_4),
#endif
/* clang-format on */
};