mirror of
https://git.freebsd.org/src.git
synced 2026-01-11 19:57:22 +00:00
libgcc_s: export integer and floating point __aeabi_ symbols
Export all integer and floating point __aeabi_ functions defined by "Run-time ABI for Arm Architecture" from libgcc, excluding __aeabi_h2f_alt, __aeabi_f2h_alt and __aeabi_d2h_alt, which are not yet implemented by compiler-rt. To maintain ABI backward compatibility, convert __aeabi_ floating-point symbols previously exported from libc to an explicit non-default version. Remove guessing of vfp/not-vfp version for compiler-rt sources. The vfp version needs additional runtime logic to select the right implementation and we don't have it implemented. MFC after: 1 month Reviewed by: dim PR: 271087 Differential Revision: https://reviews.freebsd.org/D50100
This commit is contained in:
parent
9ee759f367
commit
50fda38ba0
5 changed files with 84 additions and 52 deletions
|
|
@ -6,50 +6,6 @@
|
|||
FBSDprivate_1.0 {
|
||||
__aeabi_atexit;
|
||||
|
||||
__aeabi_dcmpeq;
|
||||
__aeabi_dcmplt;
|
||||
__aeabi_dcmple;
|
||||
__aeabi_dcmpge;
|
||||
__aeabi_dcmpgt;
|
||||
__aeabi_dcmpun;
|
||||
|
||||
__aeabi_cdcmpeq;
|
||||
__aeabi_cdcmple;
|
||||
__aeabi_cdrcmple;
|
||||
|
||||
__aeabi_d2iz;
|
||||
__aeabi_d2f;
|
||||
|
||||
__aeabi_dadd;
|
||||
__aeabi_ddiv;
|
||||
__aeabi_dmul;
|
||||
__aeabi_dsub;
|
||||
|
||||
|
||||
__aeabi_fcmpeq;
|
||||
__aeabi_fcmplt;
|
||||
__aeabi_fcmple;
|
||||
__aeabi_fcmpge;
|
||||
__aeabi_fcmpgt;
|
||||
__aeabi_fcmpun;
|
||||
|
||||
__aeabi_cfcmpeq;
|
||||
__aeabi_cfcmple;
|
||||
__aeabi_cfrcmple;
|
||||
|
||||
__aeabi_f2iz;
|
||||
__aeabi_f2d;
|
||||
|
||||
__aeabi_fadd;
|
||||
__aeabi_fdiv;
|
||||
__aeabi_fmul;
|
||||
__aeabi_fsub;
|
||||
|
||||
|
||||
__aeabi_i2d;
|
||||
__aeabi_i2f;
|
||||
|
||||
|
||||
__aeabi_memclr;
|
||||
__aeabi_memclr4;
|
||||
__aeabi_memclr8;
|
||||
|
|
|
|||
|
|
@ -37,11 +37,13 @@
|
|||
*/
|
||||
|
||||
ENTRY(__aeabi_uidiv_compat)
|
||||
.hidden __aeabi_uidiv_compat
|
||||
.symver __aeabi_uidiv_compat, __aeabi_uidiv@
|
||||
b __udivsi3
|
||||
END(__aeabi_uidiv_compat)
|
||||
|
||||
ENTRY(__aeabi_idiv_compat)
|
||||
.hidden __aeabi_idiv_compat
|
||||
.symver __aeabi_idiv_compat, __aeabi_idiv@
|
||||
b __divsi3
|
||||
END(__aeabi_idiv_compat)
|
||||
|
|
|
|||
|
|
@ -40,7 +40,9 @@
|
|||
#define AEABI_ENTRY(x) ENTRY(__aeabi_ ## x ## _vfp)
|
||||
#define AEABI_END(x) END(__aeabi_ ## x ## _vfp)
|
||||
#else
|
||||
#define AEABI_ENTRY(x) ENTRY(__aeabi_ ## x)
|
||||
#define AEABI_ENTRY(x) \
|
||||
ENTRY(__aeabi_ ## x) \
|
||||
.symver __aeabi_##x, __aeabi_##x##@FBSDprivate_1.0;
|
||||
#define AEABI_END(x) END(__aeabi_ ## x)
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ SRCF+= trunctfsf2
|
|||
.endif
|
||||
|
||||
# These are already shipped by libc.a on some architectures.
|
||||
.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "riscv"
|
||||
.if ${MACHINE_CPUARCH} != "riscv"
|
||||
SRCF+= adddf3
|
||||
SRCF+= addsf3
|
||||
SRCF+= divdf3
|
||||
|
|
@ -225,10 +225,8 @@ SRCF+= subsf3
|
|||
SRCF+= truncdfsf2
|
||||
.endif
|
||||
|
||||
.if ${MACHINE_CPUARCH} != "arm"
|
||||
SRCF+= comparedf2
|
||||
SRCF+= comparesf2
|
||||
.endif
|
||||
|
||||
# Helper to reduce complexity of _Float16 and __bf16 statements below.
|
||||
.if ${MACHINE_CPUARCH} == "aarch64" || \
|
||||
|
|
@ -274,10 +272,7 @@ CFLAGS+= -DEMIT_SYNC_ATOMICS
|
|||
.endif
|
||||
|
||||
.for file in ${SRCF}
|
||||
.if ${MACHINE_CPUARCH} == "arm" && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \
|
||||
&& exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
|
||||
SRCS+= ${file}vfp.S
|
||||
. elif exists(${CRTSRC}/${CRTARCH}/${file}.S)
|
||||
. if exists(${CRTSRC}/${CRTARCH}/${file}.S)
|
||||
SRCS+= ${file}.S
|
||||
. else
|
||||
SRCS+= ${file}.c
|
||||
|
|
@ -285,7 +280,15 @@ SRCS+= ${file}.c
|
|||
.endfor
|
||||
|
||||
.if ${MACHINE_CPUARCH} == "arm"
|
||||
SRCS+= aeabi_cdcmp.S
|
||||
SRCS+= aeabi_cdcmpeq_check_nan.c
|
||||
SRCS+= aeabi_cfcmp.S
|
||||
SRCS+= aeabi_cfcmpeq_check_nan.c
|
||||
SRCS+= aeabi_dcmp.S
|
||||
SRCS+= aeabi_div0.c
|
||||
SRCS+= aeabi_drsub.c
|
||||
SRCS+= aeabi_fcmp.S
|
||||
SRCS+= aeabi_frsub.c
|
||||
SRCS+= aeabi_idivmod.S
|
||||
SRCS+= aeabi_ldivmod.S
|
||||
SRCS+= aeabi_memcmp.S
|
||||
|
|
@ -294,6 +297,7 @@ SRCS+= aeabi_memmove.S
|
|||
SRCS+= aeabi_memset.S
|
||||
SRCS+= aeabi_uidivmod.S
|
||||
SRCS+= aeabi_uldivmod.S
|
||||
|
||||
SRCS+= switch16.S
|
||||
SRCS+= switch32.S
|
||||
SRCS+= switch8.S
|
||||
|
|
|
|||
|
|
@ -2,6 +2,74 @@
|
|||
*/
|
||||
|
||||
GCC_3.5 {
|
||||
__aeabi_cdcmple;
|
||||
__aeabi_cdrcmple;
|
||||
__aeabi_cfcmpeq;
|
||||
__aeabi_cfcmple;
|
||||
__aeabi_cfrcmple;
|
||||
__aeabi_d2f;
|
||||
__aeabi_d2h;
|
||||
/* __aeabi_d2h_alt; */
|
||||
__aeabi_d2iz;
|
||||
__aeabi_d2lz;
|
||||
__aeabi_d2uiz;
|
||||
__aeabi_d2ulz;
|
||||
__aeabi_dadd;
|
||||
__aeabi_dcmpeq;
|
||||
__aeabi_dcmpge;
|
||||
__aeabi_dcmpgt;
|
||||
__aeabi_dcmple;
|
||||
__aeabi_dcmplt;
|
||||
__aeabi_dcmpun;
|
||||
__aeabi_ddiv;
|
||||
__aeabi_dmul;
|
||||
__aeabi_dneg;
|
||||
__aeabi_drsub;
|
||||
__aeabi_dsub;
|
||||
__aeabi_f2d;
|
||||
__aeabi_f2h;
|
||||
/* __aeabi_f2h_alt; */
|
||||
__aeabi_f2iz;
|
||||
__aeabi_f2lz;
|
||||
__aeabi_f2uiz;
|
||||
__aeabi_f2ulz;
|
||||
__aeabi_fadd;
|
||||
__aeabi_fcmpeq;
|
||||
__aeabi_fcmpge;
|
||||
__aeabi_fcmpgt;
|
||||
__aeabi_fcmple;
|
||||
__aeabi_fcmplt;
|
||||
__aeabi_fcmpun;
|
||||
__aeabi_fdiv;
|
||||
__aeabi_fmul;
|
||||
__aeabi_fneg;
|
||||
__aeabi_frsub;
|
||||
__aeabi_fsub;
|
||||
__aeabi_h2f;
|
||||
/* __aeabi_h2f_alt; */
|
||||
__aeabi_i2d;
|
||||
__aeabi_i2f;
|
||||
__aeabi_idiv;
|
||||
__aeabi_idiv0;
|
||||
__aeabi_idivmod;
|
||||
__aeabi_l2d;
|
||||
__aeabi_l2f;
|
||||
__aeabi_lasr;
|
||||
__aeabi_lcmp;
|
||||
__aeabi_ldiv0;
|
||||
__aeabi_ldivmod;
|
||||
__aeabi_llsl;
|
||||
__aeabi_llsr;
|
||||
__aeabi_lmul;
|
||||
__aeabi_ui2d;
|
||||
__aeabi_ui2f;
|
||||
__aeabi_uidiv;
|
||||
__aeabi_uidivmod;
|
||||
__aeabi_ul2d;
|
||||
__aeabi_ul2f;
|
||||
__aeabi_ulcmp;
|
||||
__aeabi_uldivmod;
|
||||
|
||||
_Unwind_Complete;
|
||||
_Unwind_VRS_Get;
|
||||
_Unwind_VRS_Set;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue