Re: Undefined __aeabi_uidivmod in 14.0 armv7
- In reply to: Robert Clausecker : "Re: Undefined __aeabi_uidivmod in 14.0 armv7"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 23 Nov 2023 22:59:13 UTC
On Nov 23, 2023, at 13:23, Robert Clausecker <fuz@freebsd.org> wrote: > > Hi John, > > This is a long standing open issue in base. These __aeabi symbols are > shims used by the ARM EABI to implement functionality missing in the > instruction set. Back when this was implemented, whoever did the port > hacked something up and only added those symbols that were initially > needed. However, turns out a bunch more will be used by gcc/clang > under certain circumstances. > > While we actually have code for all of these symbols in clang's runtime, > the version scripts were never fixed and the symbols remain unexposed. > I have previously raised this issue with a bunch of people involved in > the ARM bits of FreeBSD but never managed to get anybody to fix it. > > Maybe it'll be different this time. > > If you want to give it a try yourself, check the ARM EABI document. It > has a list of all __aeabi symbols that should be present. You could try > and add the missing ones to the appropriate libraries. > > Yours, > Robert Clausecker This solves my build problem. I made up a version string and assumed all the __aeabi_ symbols in libgcc.a were to be exported. I omitted the string functions as suggested in bug 271087. diff --git a/lib/libgcc_s/Versions.def b/lib/libgcc_s/Versions.def index d28e9042f744..b90bc705e3de 100644 --- a/lib/libgcc_s/Versions.def +++ b/lib/libgcc_s/Versions.def @@ -31,3 +31,6 @@ GCC_4.3.0 { GCC_4.6.0 { } GCC_4.3.0; + +EABI_1 { +}; diff --git a/lib/libgcc_s/arm/Symbol.map b/lib/libgcc_s/arm/Symbol.map index 92b54761d810..49b0820b2a73 100644 --- a/lib/libgcc_s/arm/Symbol.map +++ b/lib/libgcc_s/arm/Symbol.map @@ -15,3 +15,30 @@ GCC_3.5 { GCC_4.3.0 { _Unwind_Backtrace; }; + +EABI_1 { + __aeabi_llsl; + __aeabi_lasr; + __aeabi_lcmp; + __aeabi_idiv; + __aeabi_h2f; + __aeabi_d2lz; + __aeabi_f2lz; + __aeabi_d2ulz; + __aeabi_f2ulz; + __aeabi_ui2d; + __aeabi_ui2f; + __aeabi_llsr; + __aeabi_lmul; + __aeabi_d2h; + __aeabi_f2h; + __aeabi_ulcmp; + __aeabi_uidiv; + __aeabi_l2d; + __aeabi_l2f; + __aeabi_ul2d; + __aeabi_ul2f; + __aeabi_idiv0; + __aeabi_ldivmod; + __aeabi_uidivmod; +};