Date: Tue, 12 Jun 2012 11:49:17 +0300 From: Konstantin Belousov <kostikbel@gmail.com> To: Jan Sieka <jps@semihalf.com> Cc: Tim Kientzle <tim@kientzle.com>, freebsd-arm@freebsd.org, freebsd-current@freebsd.org Subject: Re: Possible fix for Perl failing with ../lib/auto/POSIX/POSIX.so: Undefined symbol "__flt_rounds" on ARM Message-ID: <20120612084917.GL2337@deviant.kiev.zoral.com.ua> In-Reply-To: <4FD6FB72.10900@semihalf.com> References: <4FCE211D.10204@semihalf.com> <0FE5C5BF-FADE-49BA-BF38-00018A752F14@kientzle.com> <4FD6FB72.10900@semihalf.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--xtmLDbP6TiKhntQb Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Jun 12, 2012 at 10:18:58AM +0200, Jan Sieka wrote: > On 2012.06.09 18:11, Tim Kientzle wrote: > >=20 > > On Jun 5, 2012, at 8:09 AM, Jan Sieka wrote: > >=20 > >> 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? > >=20 > > Great! I had the same problem compiling Python last > > week and had planned to track it down. > >=20 > > I just committed this to -CURRENT and will also > > merge it to the armv6 tree. > Hello Tim! >=20 > 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: >=20 > 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; > }; >=20 > +FBSD_1.3 { > + __flt_rounds; > +}; > + > FBSDprivate_1.0 { > /* PSEUDO syscalls */ > __sys_getlogin; >=20 > 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. I noted that the commit in question added the __flt_rounds symbol to the existing group of symbols probably related to FPU handling. The same question stands for that symbols too, is their placement into FBSDprivate namespace right ? --xtmLDbP6TiKhntQb Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEARECAAYFAk/XAowACgkQC3+MBN1Mb4gvyQCg9GhSvloZUIX3QoZKXlj1BGx8 wsIAoKJyzvLY6m8byxWDmvbpHXgaTD22 =0Awn -----END PGP SIGNATURE----- --xtmLDbP6TiKhntQb--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120612084917.GL2337>