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
@@ -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.
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 Sieka
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"