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. 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 ?
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:27 UTC