mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-03-12 08:55:28 +00:00
Add more reloc symbols for target arm/thumb/riscv (#834)
Add more reloc symbols for target arm/thumb/riscv and implement relocation type R_ARM_ABS32 for thumb. Tested in buildroot qemu.
This commit is contained in:
parent
64be6ec9a7
commit
37a14c9825
|
@ -10,105 +10,166 @@
|
|||
#define R_ARM_ABS32 2 /* Direct 32 bit */
|
||||
|
||||
/* clang-format off */
|
||||
void __divdi3();
|
||||
void __udivdi3();
|
||||
void __moddi3();
|
||||
void __umoddi3();
|
||||
void __divsi3();
|
||||
void __udivsi3();
|
||||
void __modsi3();
|
||||
void __umodsi3();
|
||||
void __udivmoddi4();
|
||||
void __clzsi2();
|
||||
void __fixsfdi();
|
||||
void __fixunssfdi();
|
||||
void __fixdfdi();
|
||||
void __fixunsdfdi();
|
||||
void __floatdisf();
|
||||
void __floatundisf();
|
||||
void __floatdidf();
|
||||
void __floatundidf();
|
||||
void __aeabi_l2f();
|
||||
void __aeabi_f2lz();
|
||||
void __aeabi_ul2f();
|
||||
void __adddf3();
|
||||
void __addsf3();
|
||||
void __aeabi_d2iz();
|
||||
void __aeabi_d2lz();
|
||||
void __aeabi_l2d();
|
||||
void __aeabi_f2ulz();
|
||||
void __aeabi_ul2d();
|
||||
void __aeabi_d2ulz();
|
||||
void __aeabi_idiv();
|
||||
void __aeabi_uidiv();
|
||||
void __aeabi_idivmod();
|
||||
void __aeabi_uidivmod();
|
||||
void __aeabi_ldivmod();
|
||||
void __aeabi_uldivmod();
|
||||
void __aeabi_i2d();
|
||||
void __aeabi_dadd();
|
||||
void __aeabi_ddiv();
|
||||
void __aeabi_dcmpge();
|
||||
void __aeabi_dcmple();
|
||||
void __aeabi_dcmplt();
|
||||
void __aeabi_dcmpun();
|
||||
void __aeabi_dcmple();
|
||||
void __aeabi_dcmpge();
|
||||
void __aeabi_d2iz();
|
||||
void __aeabi_ddiv();
|
||||
void __aeabi_f2d();
|
||||
void __aeabi_f2iz();
|
||||
void __aeabi_f2lz();
|
||||
void __aeabi_f2ulz();
|
||||
void __aeabi_fcmpge();
|
||||
void __aeabi_fcmple();
|
||||
void __aeabi_fcmplt();
|
||||
void __aeabi_fcmpun();
|
||||
void __aeabi_fcmple();
|
||||
void __aeabi_fcmpge();
|
||||
void __aeabi_f2iz();
|
||||
void __aeabi_f2d();
|
||||
void __aeabi_i2d();
|
||||
void __aeabi_idiv();
|
||||
void __aeabi_idivmod();
|
||||
void __aeabi_l2d();
|
||||
void __aeabi_l2f();
|
||||
void __aeabi_ldivmod();
|
||||
void __aeabi_uidiv();
|
||||
void __aeabi_uidivmod();
|
||||
void __aeabi_ul2d();
|
||||
void __aeabi_ul2f();
|
||||
void __aeabi_uldivmod();
|
||||
void __clzsi2();
|
||||
void __divdf3();
|
||||
void __divdi3();
|
||||
void __divsf3();
|
||||
void __divsi3();
|
||||
void __eqdf2();
|
||||
void __extendsfdf2();
|
||||
void __fixdfdi();
|
||||
void __fixdfsi();
|
||||
void __fixsfdi();
|
||||
void __fixsfsi();
|
||||
void __fixunsdfdi();
|
||||
void __fixunsdfsi();
|
||||
void __fixunssfdi();
|
||||
void __floatdidf();
|
||||
void __floatdisf();
|
||||
void __floatsidf();
|
||||
void __floatsisf();
|
||||
void __floatundidf();
|
||||
void __floatundisf();
|
||||
void __floatunsidf();
|
||||
void __floatunsisf();
|
||||
void __gedf2();
|
||||
void __gesf2();
|
||||
void __gtdf2();
|
||||
void __gtsf2();
|
||||
void __ledf2();
|
||||
void __lesf2();
|
||||
void __ltdf2();
|
||||
void __ltsf2();
|
||||
void __moddi3();
|
||||
void __modsi3();
|
||||
void __muldf3();
|
||||
void __mulsf3();
|
||||
void __nedf2();
|
||||
void __nesf2();
|
||||
void __subdf3();
|
||||
void __subsf3();
|
||||
void __truncdfsf2();
|
||||
void __udivdi3();
|
||||
void __udivmoddi4();
|
||||
void __udivsi3();
|
||||
void __umoddi3();
|
||||
void __umodsi3();
|
||||
void __unorddf2();
|
||||
void __unordsf2();
|
||||
/* clang-format on */
|
||||
|
||||
static SymbolMap target_sym_map[] = {
|
||||
/* clang-format off */
|
||||
REG_COMMON_SYMBOLS
|
||||
/* compiler-rt symbols that come from compiler(e.g. gcc) */
|
||||
REG_SYM(__divdi3),
|
||||
REG_SYM(__adddf3),
|
||||
REG_SYM(__addsf3),
|
||||
/* clang-format on */
|
||||
REG_SYM(__udivdi3),
|
||||
REG_SYM(__moddi3),
|
||||
REG_SYM(__umoddi3),
|
||||
REG_SYM(__divsi3),
|
||||
REG_SYM(__udivsi3),
|
||||
REG_SYM(__modsi3),
|
||||
REG_SYM(__umodsi3),
|
||||
REG_SYM(__udivmoddi4),
|
||||
REG_SYM(__clzsi2),
|
||||
REG_SYM(__fixsfdi),
|
||||
REG_SYM(__fixunssfdi),
|
||||
REG_SYM(__fixdfdi),
|
||||
REG_SYM(__fixunsdfdi),
|
||||
REG_SYM(__floatdisf),
|
||||
REG_SYM(__floatundisf),
|
||||
REG_SYM(__floatdidf),
|
||||
REG_SYM(__floatundidf),
|
||||
REG_SYM(__aeabi_l2f),
|
||||
REG_SYM(__aeabi_f2lz),
|
||||
REG_SYM(__aeabi_ul2f),
|
||||
REG_SYM(__aeabi_d2iz),
|
||||
REG_SYM(__aeabi_d2lz),
|
||||
REG_SYM(__aeabi_l2d),
|
||||
REG_SYM(__aeabi_f2ulz),
|
||||
REG_SYM(__aeabi_ul2d),
|
||||
REG_SYM(__aeabi_d2ulz),
|
||||
REG_SYM(__aeabi_idiv),
|
||||
REG_SYM(__aeabi_uidiv),
|
||||
REG_SYM(__aeabi_idivmod),
|
||||
REG_SYM(__aeabi_uidivmod),
|
||||
REG_SYM(__aeabi_ldivmod),
|
||||
REG_SYM(__aeabi_uldivmod),
|
||||
REG_SYM(__aeabi_i2d),
|
||||
REG_SYM(__aeabi_dadd),
|
||||
REG_SYM(__aeabi_ddiv),
|
||||
REG_SYM(__aeabi_dcmpge),
|
||||
REG_SYM(__aeabi_dcmple),
|
||||
REG_SYM(__aeabi_dcmplt),
|
||||
REG_SYM(__aeabi_dcmpun),
|
||||
REG_SYM(__aeabi_dcmple),
|
||||
REG_SYM(__aeabi_dcmpge),
|
||||
REG_SYM(__aeabi_d2iz),
|
||||
REG_SYM(__aeabi_ddiv),
|
||||
REG_SYM(__aeabi_f2d),
|
||||
REG_SYM(__aeabi_f2iz),
|
||||
REG_SYM(__aeabi_f2lz),
|
||||
REG_SYM(__aeabi_f2ulz),
|
||||
REG_SYM(__aeabi_fcmpge),
|
||||
REG_SYM(__aeabi_fcmple),
|
||||
REG_SYM(__aeabi_fcmplt),
|
||||
REG_SYM(__aeabi_fcmpun),
|
||||
REG_SYM(__aeabi_fcmple),
|
||||
REG_SYM(__aeabi_fcmpge),
|
||||
REG_SYM(__aeabi_f2iz),
|
||||
REG_SYM(__aeabi_f2d),
|
||||
REG_SYM(__aeabi_i2d),
|
||||
REG_SYM(__aeabi_idiv),
|
||||
REG_SYM(__aeabi_idivmod),
|
||||
REG_SYM(__aeabi_l2d),
|
||||
REG_SYM(__aeabi_l2f),
|
||||
REG_SYM(__aeabi_ldivmod),
|
||||
REG_SYM(__aeabi_uidiv),
|
||||
REG_SYM(__aeabi_uidivmod),
|
||||
REG_SYM(__aeabi_ul2d),
|
||||
REG_SYM(__aeabi_ul2f),
|
||||
REG_SYM(__aeabi_uldivmod),
|
||||
REG_SYM(__clzsi2),
|
||||
REG_SYM(__divdf3),
|
||||
REG_SYM(__divdi3),
|
||||
REG_SYM(__divsf3),
|
||||
REG_SYM(__divsi3),
|
||||
REG_SYM(__eqdf2),
|
||||
REG_SYM(__extendsfdf2),
|
||||
REG_SYM(__fixdfdi),
|
||||
REG_SYM(__fixdfsi),
|
||||
REG_SYM(__fixsfdi),
|
||||
REG_SYM(__fixsfsi),
|
||||
REG_SYM(__fixunsdfdi),
|
||||
REG_SYM(__fixunsdfsi),
|
||||
REG_SYM(__fixunssfdi),
|
||||
REG_SYM(__floatdidf),
|
||||
REG_SYM(__floatdisf),
|
||||
REG_SYM(__floatsidf),
|
||||
REG_SYM(__floatsisf),
|
||||
REG_SYM(__floatundidf),
|
||||
REG_SYM(__floatundisf),
|
||||
REG_SYM(__floatunsidf),
|
||||
REG_SYM(__floatunsisf),
|
||||
REG_SYM(__gedf2),
|
||||
REG_SYM(__gesf2),
|
||||
REG_SYM(__gtdf2),
|
||||
REG_SYM(__gtsf2),
|
||||
REG_SYM(__ledf2),
|
||||
REG_SYM(__lesf2),
|
||||
REG_SYM(__ltdf2),
|
||||
REG_SYM(__ltsf2),
|
||||
REG_SYM(__moddi3),
|
||||
REG_SYM(__modsi3),
|
||||
REG_SYM(__muldf3),
|
||||
REG_SYM(__muldf3),
|
||||
REG_SYM(__mulsf3),
|
||||
REG_SYM(__nedf2),
|
||||
REG_SYM(__nesf2),
|
||||
REG_SYM(__subdf3),
|
||||
REG_SYM(__subsf3),
|
||||
REG_SYM(__truncdfsf2),
|
||||
REG_SYM(__udivdi3),
|
||||
REG_SYM(__udivmoddi4),
|
||||
REG_SYM(__udivsi3),
|
||||
REG_SYM(__umoddi3),
|
||||
REG_SYM(__umodsi3),
|
||||
REG_SYM(__unorddf2),
|
||||
REG_SYM(__unordsf2),
|
||||
};
|
||||
|
||||
static void
|
||||
|
|
|
@ -17,21 +17,53 @@
|
|||
|
||||
/* clang-format off */
|
||||
void __divdi3();
|
||||
void __divsi3();
|
||||
void __fixdfdi();
|
||||
void __fixsfdi();
|
||||
void __fixunsdfdi();
|
||||
void __fixunssfdi();
|
||||
void __floatdidf();
|
||||
void __floatdisf();
|
||||
void __floatundidf();
|
||||
void __floatundisf();
|
||||
void __moddi3();
|
||||
void __modsi3();
|
||||
void __muldi3();
|
||||
void __mulsi3();
|
||||
void __udivdi3();
|
||||
void __udivsi3();
|
||||
void __umoddi3();
|
||||
void __umodsi3();
|
||||
/* clang-format on */
|
||||
|
||||
static SymbolMap target_sym_map[] = {
|
||||
/* clang-format off */
|
||||
REG_COMMON_SYMBOLS
|
||||
REG_SYM(__divdi3),
|
||||
/* clang-format on */
|
||||
REG_SYM(__divsi3),
|
||||
#if __riscv_xlen == 32
|
||||
REG_SYM(__fixdfdi),
|
||||
REG_SYM(__fixsfdi),
|
||||
#endif
|
||||
REG_SYM(__fixunsdfdi),
|
||||
REG_SYM(__fixunssfdi),
|
||||
#if __riscv_xlen == 32
|
||||
REG_SYM(__floatdidf),
|
||||
REG_SYM(__floatdisf),
|
||||
REG_SYM(__floatundidf),
|
||||
REG_SYM(__floatundisf),
|
||||
#endif
|
||||
REG_SYM(__moddi3),
|
||||
REG_SYM(__modsi3),
|
||||
REG_SYM(__muldi3),
|
||||
#if __riscv_xlen == 32
|
||||
REG_SYM(__mulsi3),
|
||||
#endif
|
||||
REG_SYM(__udivdi3),
|
||||
REG_SYM(__udivsi3),
|
||||
REG_SYM(__umoddi3),
|
||||
REG_SYM(__umodsi3),
|
||||
/* clang-format on */
|
||||
};
|
||||
|
||||
static void
|
||||
|
|
|
@ -5,138 +5,180 @@
|
|||
|
||||
#include "aot_reloc.h"
|
||||
|
||||
#define R_ARM_ABS32 2 /* Direct 32 bit */
|
||||
#define R_ARM_THM_CALL 10 /* PC relative (Thumb BL and ARMv5 Thumb BLX). */
|
||||
#define R_ARM_THM_JMP24 30 /* B.W */
|
||||
|
||||
/* clang-format off */
|
||||
void __ltdf2();
|
||||
void __adddf3();
|
||||
void __eqdf2();
|
||||
void __unorddf2();
|
||||
void __muldf3();
|
||||
void __subdf3();
|
||||
void __gedf2();
|
||||
void __ledf2();
|
||||
void __fixunsdfsi();
|
||||
void __floatunsidf();
|
||||
void __fixdfsi();
|
||||
void __nedf2();
|
||||
void __floatsidf();
|
||||
void __divdi3();
|
||||
void __udivdi3();
|
||||
void __moddi3();
|
||||
void __umoddi3();
|
||||
void __divsi3();
|
||||
void __udivsi3();
|
||||
void __modsi3();
|
||||
void __udivmoddi4();
|
||||
void __clzsi2();
|
||||
void __fixsfdi();
|
||||
void __fixunssfdi();
|
||||
void __fixdfdi();
|
||||
void __fixunsdfdi();
|
||||
void __floatdisf();
|
||||
void __floatundisf();
|
||||
void __floatdidf();
|
||||
void __floatundidf();
|
||||
void __aeabi_l2f();
|
||||
void __aeabi_f2lz();
|
||||
void __aeabi_ul2f();
|
||||
void __addsf3();
|
||||
void __aeabi_d2iz();
|
||||
void __aeabi_d2lz();
|
||||
void __aeabi_l2d();
|
||||
void __aeabi_f2ulz();
|
||||
void __aeabi_ul2d();
|
||||
void __aeabi_ui2d();
|
||||
void __aeabi_d2uiz();
|
||||
void __aeabi_d2ulz();
|
||||
void __aeabi_idiv();
|
||||
void __aeabi_uidiv();
|
||||
void __aeabi_idivmod();
|
||||
void __aeabi_uidivmod();
|
||||
void __aeabi_ldivmod();
|
||||
void __aeabi_uldivmod();
|
||||
void __aeabi_i2d();
|
||||
void __aeabi_dadd();
|
||||
void __aeabi_ddiv();
|
||||
void __aeabi_dcmplt();
|
||||
void __aeabi_dcmpun();
|
||||
void __aeabi_dcmple();
|
||||
void __aeabi_dcmpge();
|
||||
void __aeabi_dcmpgt();
|
||||
void __aeabi_d2iz();
|
||||
void __aeabi_d2uiz();
|
||||
void __aeabi_dcmple();
|
||||
void __aeabi_dcmplt();
|
||||
void __aeabi_dcmpun();
|
||||
void __aeabi_ddiv();
|
||||
void __aeabi_f2d();
|
||||
void __aeabi_f2iz();
|
||||
void __aeabi_f2lz();
|
||||
void __aeabi_f2ulz();
|
||||
void __aeabi_fcmpge();
|
||||
void __aeabi_fcmple();
|
||||
void __aeabi_fcmplt();
|
||||
void __aeabi_fcmpun();
|
||||
void __aeabi_fcmple();
|
||||
void __aeabi_fcmpge();
|
||||
void __aeabi_f2iz();
|
||||
void __aeabi_f2d();
|
||||
void __aeabi_i2d();
|
||||
void __aeabi_idiv();
|
||||
void __aeabi_idivmod();
|
||||
void __aeabi_l2d();
|
||||
void __aeabi_l2f();
|
||||
void __aeabi_ldivmod();
|
||||
void __aeabi_ui2d();
|
||||
void __aeabi_uidiv();
|
||||
void __aeabi_uidivmod();
|
||||
void __aeabi_ul2d();
|
||||
void __aeabi_ul2f();
|
||||
void __aeabi_uldivmod();
|
||||
void __ashldi3();
|
||||
void __clzsi2();
|
||||
void __divdf3();
|
||||
void __divdi3();
|
||||
void __divsi3();
|
||||
void __eqdf2();
|
||||
void __eqsf2();
|
||||
void __extendsfdf2();
|
||||
void __fixdfdi();
|
||||
void __fixdfsi();
|
||||
void __fixsfdi();
|
||||
void __fixunsdfdi();
|
||||
void __fixunsdfsi();
|
||||
void __fixunssfdi();
|
||||
void __floatdidf();
|
||||
void __floatdisf();
|
||||
void __floatsidf();
|
||||
void __floatsisf();
|
||||
void __floatundidf();
|
||||
void __floatundisf();
|
||||
void __floatunsidf();
|
||||
void __floatunsisf();
|
||||
void __gedf2();
|
||||
void __gesf2();
|
||||
void __gtdf2();
|
||||
void __gtsf2();
|
||||
void __ledf2();
|
||||
void __lesf2();
|
||||
void __lshrdi3();
|
||||
void __ltdf2();
|
||||
void __ltsf2();
|
||||
void __moddi3();
|
||||
void __modsi3();
|
||||
void __muldf3();
|
||||
void __muldi3();
|
||||
void __mulsf3();
|
||||
void __nedf2();
|
||||
void __nesf2();
|
||||
void __subdf3();
|
||||
void __subsf3();
|
||||
void __truncdfsf2();
|
||||
void __udivdi3();
|
||||
void __udivmoddi4();
|
||||
void __udivsi3();
|
||||
void __umoddi3();
|
||||
void __umodsi3();
|
||||
void __unorddf2();
|
||||
void __unordsf2();
|
||||
/* clang-format on */
|
||||
|
||||
static SymbolMap target_sym_map[] = {
|
||||
/* clang-format off */
|
||||
REG_COMMON_SYMBOLS
|
||||
/* compiler-rt symbols that come from compiler(e.g. gcc) */
|
||||
REG_SYM(__ltdf2),
|
||||
/* clang-format on */
|
||||
REG_SYM(__adddf3),
|
||||
REG_SYM(__eqdf2),
|
||||
REG_SYM(__unorddf2),
|
||||
REG_SYM(__muldf3),
|
||||
REG_SYM(__subdf3),
|
||||
REG_SYM(__gedf2),
|
||||
REG_SYM(__ledf2),
|
||||
REG_SYM(__fixunsdfsi),
|
||||
REG_SYM(__floatunsidf),
|
||||
REG_SYM(__fixdfsi),
|
||||
REG_SYM(__nedf2),
|
||||
REG_SYM(__floatsidf),
|
||||
REG_SYM(__divdi3),
|
||||
REG_SYM(__udivdi3),
|
||||
REG_SYM(__umoddi3),
|
||||
REG_SYM(__divsi3),
|
||||
REG_SYM(__udivsi3),
|
||||
REG_SYM(__modsi3),
|
||||
REG_SYM(__udivmoddi4),
|
||||
REG_SYM(__clzsi2),
|
||||
REG_SYM(__fixsfdi),
|
||||
REG_SYM(__fixunssfdi),
|
||||
REG_SYM(__fixdfdi),
|
||||
REG_SYM(__fixunsdfdi),
|
||||
REG_SYM(__floatdisf),
|
||||
REG_SYM(__floatundisf),
|
||||
REG_SYM(__floatdidf),
|
||||
REG_SYM(__floatundidf),
|
||||
REG_SYM(__aeabi_l2f),
|
||||
REG_SYM(__aeabi_f2lz),
|
||||
REG_SYM(__aeabi_ul2f),
|
||||
REG_SYM(__addsf3),
|
||||
/* clang-format on */
|
||||
REG_SYM(__aeabi_d2iz),
|
||||
REG_SYM(__aeabi_d2lz),
|
||||
REG_SYM(__aeabi_l2d),
|
||||
REG_SYM(__aeabi_f2ulz),
|
||||
REG_SYM(__aeabi_ul2d),
|
||||
REG_SYM(__aeabi_ui2d),
|
||||
REG_SYM(__aeabi_d2uiz),
|
||||
REG_SYM(__aeabi_d2ulz),
|
||||
REG_SYM(__aeabi_idiv),
|
||||
REG_SYM(__aeabi_uidiv),
|
||||
REG_SYM(__aeabi_idivmod),
|
||||
REG_SYM(__aeabi_uidivmod),
|
||||
REG_SYM(__aeabi_ldivmod),
|
||||
REG_SYM(__aeabi_uldivmod),
|
||||
REG_SYM(__aeabi_i2d),
|
||||
REG_SYM(__aeabi_dadd),
|
||||
REG_SYM(__aeabi_ddiv),
|
||||
REG_SYM(__aeabi_dcmplt),
|
||||
REG_SYM(__aeabi_dcmpun),
|
||||
REG_SYM(__aeabi_dcmple),
|
||||
REG_SYM(__aeabi_dcmpge),
|
||||
REG_SYM(__aeabi_dcmpgt),
|
||||
REG_SYM(__aeabi_d2iz),
|
||||
REG_SYM(__aeabi_d2uiz),
|
||||
REG_SYM(__aeabi_dcmple),
|
||||
REG_SYM(__aeabi_dcmplt),
|
||||
REG_SYM(__aeabi_dcmpun),
|
||||
REG_SYM(__aeabi_ddiv),
|
||||
REG_SYM(__aeabi_f2d),
|
||||
REG_SYM(__aeabi_f2iz),
|
||||
REG_SYM(__aeabi_f2lz),
|
||||
REG_SYM(__aeabi_f2ulz),
|
||||
REG_SYM(__aeabi_fcmpge),
|
||||
REG_SYM(__aeabi_fcmple),
|
||||
REG_SYM(__aeabi_fcmplt),
|
||||
REG_SYM(__aeabi_fcmpun),
|
||||
REG_SYM(__aeabi_fcmple),
|
||||
REG_SYM(__aeabi_fcmpge),
|
||||
REG_SYM(__aeabi_f2iz),
|
||||
REG_SYM(__aeabi_f2d),
|
||||
REG_SYM(__aeabi_i2d),
|
||||
REG_SYM(__aeabi_idiv),
|
||||
REG_SYM(__aeabi_idivmod),
|
||||
REG_SYM(__aeabi_l2d),
|
||||
REG_SYM(__aeabi_l2f),
|
||||
REG_SYM(__aeabi_ldivmod),
|
||||
REG_SYM(__aeabi_ui2d),
|
||||
REG_SYM(__aeabi_uidiv),
|
||||
REG_SYM(__aeabi_uidivmod),
|
||||
REG_SYM(__aeabi_ul2d),
|
||||
REG_SYM(__aeabi_ul2f),
|
||||
REG_SYM(__aeabi_uldivmod),
|
||||
REG_SYM(__ashldi3),
|
||||
REG_SYM(__clzsi2),
|
||||
REG_SYM(__divdf3),
|
||||
REG_SYM(__divdi3),
|
||||
REG_SYM(__divsi3),
|
||||
REG_SYM(__eqdf2),
|
||||
REG_SYM(__eqsf2),
|
||||
REG_SYM(__extendsfdf2),
|
||||
REG_SYM(__fixdfdi),
|
||||
REG_SYM(__fixdfsi),
|
||||
REG_SYM(__fixsfdi),
|
||||
REG_SYM(__fixunsdfdi),
|
||||
REG_SYM(__fixunsdfsi),
|
||||
REG_SYM(__fixunssfdi),
|
||||
REG_SYM(__floatdidf),
|
||||
REG_SYM(__floatdisf),
|
||||
REG_SYM(__floatsidf),
|
||||
REG_SYM(__floatsisf),
|
||||
REG_SYM(__floatundidf),
|
||||
REG_SYM(__floatundisf),
|
||||
REG_SYM(__floatunsidf),
|
||||
REG_SYM(__floatunsisf),
|
||||
REG_SYM(__gedf2),
|
||||
REG_SYM(__gesf2),
|
||||
REG_SYM(__gtdf2),
|
||||
REG_SYM(__gtsf2),
|
||||
REG_SYM(__ledf2),
|
||||
REG_SYM(__lesf2),
|
||||
REG_SYM(__lshrdi3),
|
||||
REG_SYM(__ltdf2),
|
||||
REG_SYM(__ltsf2),
|
||||
REG_SYM(__moddi3),
|
||||
REG_SYM(__modsi3),
|
||||
REG_SYM(__muldf3),
|
||||
REG_SYM(__muldi3),
|
||||
REG_SYM(__mulsf3),
|
||||
REG_SYM(__nedf2),
|
||||
REG_SYM(__nesf2),
|
||||
REG_SYM(__subdf3),
|
||||
REG_SYM(__subsf3),
|
||||
REG_SYM(__truncdfsf2),
|
||||
REG_SYM(__udivdi3),
|
||||
REG_SYM(__udivmoddi4),
|
||||
REG_SYM(__udivsi3),
|
||||
REG_SYM(__umoddi3),
|
||||
REG_SYM(__umodsi3),
|
||||
REG_SYM(__unorddf2),
|
||||
REG_SYM(__unordsf2),
|
||||
};
|
||||
|
||||
static void
|
||||
|
@ -316,6 +358,18 @@ apply_relocation(AOTModule *module, uint8 *target_section_addr,
|
|||
*(reloc_addr + 1) = (*(reloc_addr + 1) & ~0x7FF) | initial_addend_1;
|
||||
break;
|
||||
}
|
||||
case R_ARM_ABS32:
|
||||
{
|
||||
intptr_t initial_addend;
|
||||
/* (S + A) | T where T is 0 */
|
||||
CHECK_RELOC_OFFSET(sizeof(void *));
|
||||
initial_addend =
|
||||
*(intptr_t *)(target_section_addr + (uint32)reloc_offset);
|
||||
*(uintptr_t *)(target_section_addr + reloc_offset) =
|
||||
(uintptr_t)symbol_addr + initial_addend
|
||||
+ (intptr_t)reloc_addend;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
if (error_buf != NULL)
|
||||
|
|
Loading…
Reference in New Issue
Block a user