ldexpf in 6.x amd64 [summary]

Kael Fischer kael.fischer at gmail.com
Mon Dec 11 11:07:02 PST 2006


Hi Everybody:

The problem is ldexpf(3) is not found on some amd64 systems.  I
believe this problem exists on all 6.0-6.1 RELEASE amd64 systems, and
on the 6.2 RELENG tags.

-DIAGNOSIS-
How to check if you are effected:
grep the 'nm -D /usr/lib/libm.so' output for 'ldexp'.  You should get
a line matching 'ldexpf', e.g.:

# nm -D /usr/lib/libm.so | grep ldexp
                  U ldexp
  000000000000ff90 T ldexpf
  000000000000ff70 T ldexpl

If you do not find the ldexpf symbol, you are effected.

-FIX-
Required sources:
The required version of src/lib/msun/src/s_scalbnf.c is 1.8 which has
been included in all 6.x RELENGs.

The required assembly version (src/lib/msun/amd64/s_scalbnf.S 1.2)
_is_not_correct_ in _any_ RELEASE to date.  It is correct in HEAD but
not in 6.0,  6.1 or  6.2 RELENGs.
(http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/msun/amd64/s_scalbnf.S).

Build, Test, Install:
After updating your s_scalbnf.S, you can 'make clean; make build' in
src/lib/msun.  Your new library will be
/usr/obj/usr/src/lib/msun/libm.so.4.  Check for ldexpf, as above.  And
'make install' if the build worked.

Note that this still needs to be fixed in the future releases, and
that this is really a 'bad thing'.

Thanks to Steve Kargl for getting me pointed in the right direction.

-Kael


More information about the freebsd-amd64 mailing list