On 2012.06.12 10:49, Konstantin Belousov wrote: > On Tue, Jun 12, 2012 at 10:18:58AM +0200, Jan Sieka wrote: >> On 2012.06.09 18:11, Tim Kientzle wrote: >>> >>> On Jun 5, 2012, at 8:09 AM, Jan Sieka wrote: >>> >>>> Hello Ian! >>>> >>>> I tried recently to compile and run Perl 5.12 on ARM (SheevaPlug) using >>>> HEAD from 22.05.2012 and got the following error while trying to run: >>>> /usr/ports/lang/perl5.12 # make test >>>> [...] >>>> ../lib/auto/POSIX/POSIX.so: Undefined symbol "__flt_rounds >>>> [...] >>>> >>>> After investigating the issue it appeared that __flt_rounds symbol is >>>> not exported by libc. Applying the following patch, recompilling world >>>> and Perl fixed the problem and allowed to use Perl on SheevaPlug: >>>> >>>> diff --git a/lib/libc/arm/Symbol.map b/lib/libc/arm/Symbol.map >>>> index e8c7f1d..8cdcdaf 100644 >>>> --- a/lib/libc/arm/Symbol.map >>>> +++ b/lib/libc/arm/Symbol.map >>>> _at__at_ -70,6 +70,7 _at__at_ FBSDprivate_1.0 { >>>> __divdf3; >>>> __floatsisf; >>>> __floatsidf; >>>> + __flt_rounds; >>>> __fixsfsi; >>>> __fixdfsi; >>>> __fixunssfsi; >>>> >>>> Can you comment whether this is a correct solution? >>> >>> Great! I had the same problem compiling Python last >>> week and had planned to track it down. >>> >>> I just committed this to -CURRENT and will also >>> merge it to the armv6 tree. >> Hello Tim! >> >> Thanks for committing this but unfortunately that patch wasn't correct. >> I had another discussion on freebsd-current_at_ (I forgot to do a >> cross-list CC - now fixed) about how to add symbols to Symbols.map files >> (see this thread: >> http://lists.freebsd.org/pipermail/freebsd-current/2012-June/034511.html) and >> from the answer and hints given by Konstantin Belousov I have prepared >> another patch that adheres to library versioning guidelines. If nobody >> objects this patch then feel free to commit it: >> >> diff --git a/lib/libc/arm/Symbol.map b/lib/libc/arm/Symbol.map >> index dc46013..48f6747 100644 >> --- a/lib/libc/arm/Symbol.map >> +++ b/lib/libc/arm/Symbol.map >> _at__at_ -33,6 +33,10 _at__at_ FBSD_1.0 { >> sbrk; >> }; >> >> +FBSD_1.3 { >> + __flt_rounds; >> +}; >> + >> FBSDprivate_1.0 { >> /* PSEUDO syscalls */ >> __sys_getlogin; >> >> I have verified the above patch is working on SheevaPlug on FreeBSD >> 10-CURRENT from 2012-05-15 and Perl 5.12.4. Perl has to be recompiled >> after applying this patch. > Well, both committed version and this version should work, the question > is which fix is right. Is __flt_rounds supposed to be linked to by > applications ? If the symbols are used by normal programs, that I think > we should indeed guarantee ABI stability for them, and FBSD_1.3 > namespace is the right namespace to use. Both versions work indeed. I have analysed other architectures' lib/libc/<arch>/Symbol.map files and __flt_rounds should go into FBSD_ and *not* into FBSDprivate section. I have verified that at least one of the Perl's libraries (POSIX.so) links to __flt_rounds. Python also links to this function. So to the best of my knowledge current patch is the righteous one. Best regards, Jan SiekaReceived on Tue Jun 12 2012 - 13:56:26 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:27 UTC