NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-arm/58789: aarch64 long double arithmetic is haunted



It seems the reason why the rintl1/rintl2 examples I gave get linked
against libgcc_s is that libm pulls it in, via --as-needed -lgcc_s:

$ grep -B2 libgcc_s libm.so.0.map
As-needed library included to satisfy reference by file (symbol)

libgcc_s.so.1                 libm_pic.a(s_tanl.pico) (__getf2@@GCC_3.0)
...

(In netbsd-10, it's for __getf2 in csqrtl.pico.  __getf2 is the
one-argument `tetra-float' (128-bit long double) greater-or-equal
comparison function.)

It is unclear to me why libm wants __getf2 out of libgcc_s, but not,
say, __addtf3 (two-argument `tetra-float' add function), which is also
defined in both libgcc_s and in libc.

$ nm -gD --undefined-only libm.so.0 | grep -e __addtf3 -e __getf2
                 U __addtf3
                 U __getf2
$ readelf -a libm.so.0 | grep -e __addtf3 -e __getf2
000000060368  012300000402 R_AARCH64_JUMP_SL 0000000000000000 __addtf3@GCC_3.0 + 0
0000000605f8  01ea00000402 R_AARCH64_JUMP_SL 0000000000000000 __getf2@GCC_3.0 + 0
   291: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __addtf3@GCC_3.0 (2)
   490: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __getf2@GCC_3.0 (2)
  1210: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __addtf3@GCC_3.0
  1409: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __getf2@GCC_3.0

Need a wizard to decipher this ancient elven lore...


Home | Main Index | Thread Index | Old Index