Skip site navigation (1)Skip section navigation (2)
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>