Date: Tue, 12 Jun 2012 10:18:58 +0200 From: Jan Sieka <jps@semihalf.com> To: Tim Kientzle <tim@kientzle.com> Cc: Ian Lepore <freebsd@damnhippie.dyndns.org>, gjb@semihalf.com, Rafal Jaworowski <raj@semihalf.com>, freebsd-arm@freebsd.org, freebsd-current@freebsd.org, kostikbel@gmail.com Subject: Re: Possible fix for Perl failing with ../lib/auto/POSIX/POSIX.so: Undefined symbol "__flt_rounds" on ARM Message-ID: <4FD6FB72.10900@semihalf.com> In-Reply-To: <0FE5C5BF-FADE-49BA-BF38-00018A752F14@kientzle.com> References: <4FCE211D.10204@semihalf.com> <0FE5C5BF-FADE-49BA-BF38-00018A752F14@kientzle.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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 >> @@ -70,6 +70,7 @@ 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@ (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 @@ -33,6 +33,10 @@ 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. Best regards, Jan Sieka
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FD6FB72.10900>