Re: missing math functions on powerpc (macppc)?

"John D. Baker" <[email protected]> Thu, 17 Dec 2015 10:23:16 -0600 (CST)
Newsgroups gmane.os.netbsd.ports.powerpc,gmane.os.netbsd.devel.pkgsrc.user
Message-ID <[email protected]>
On Thu, 17 Dec 2015, Greg Troxel wrote:

> Run ldd on libvpx.so.  It should have been linked with the math library
> itself.
> 
> on netbsd-6 i386, I get:
> 
> /usr/pkg/lib/libvpx.so:
> 	-lm.0 => /usr/lib/libm.so.0
> 	-lgcc_s.1 => /lib/libgcc_s.so.1
> 	-lc.12 => /usr/lib/libc.so.12
> 	-lrt.1 => /usr/lib/librt.so.1
> 	-lpthread.1 => /usr/lib/libpthread.so.1

Spot on.  On netbsd-7.99.24 macppc, I get:

/usr/pkg/lib/libvpx.so:
        -lgcc_s.1 => /usr/lib/libgcc_s.so.1
        -lpthread.1 => /usr/lib/libpthread.so.1
        -lc.12 => /usr/lib/libc.so.12

> Surely libm on macppc must have those symbols, but you could check that
> too.

Yes, it does.  I looked at that right away.

While the individual object components of libvpx are linked with libm,
the final link step creating the shared library (and the static library)
do not include libm in their link command:

libtool: link: rm -fr  .libs/libvpx.a .libs/libvpx.la .libs/libvpx.lai .libs/libvpx.lai.blsav .libs/libvpx.so .libs/libvpx.so.1 .libs/libvpx.so.1.0.5
libtool: link: gcc -shared  -fPIC -DPIC  vpx/src/.libs/vpx_decoder.c.o vpx/src/.libs/vpx_encoder.c.o vpx/src/.libs/vpx_codec.c.o vpx/src/.libs/vpx_image.c.o vpx/src/.libs/vpx_psnr.c.o vpx_mem/.libs/vpx_mem.c.o vpx_scale/generic/.libs/vpx_scale.c.o vpx_scale/generic/.libs/yv12config.c.o vpx_scale/generic/.libs/yv12extend.c.o vpx_scale/generic/.libs/gen_scalers.c.o vpx_scale/.libs/vpx_scale_rtcd.c.o vpx_dsp/.libs/prob.c.o vpx_dsp/.libs/bitwriter.c.o vpx_dsp/.libs/bitwriter_buffer.c.o vpx_dsp/.libs/bitreader.c.o vpx_dsp/.libs/bitreader_buffer.c.o vpx_dsp/.libs/intrapred.c.o vpx_dsp/.libs/vpx_convolve.c.o vpx_dsp/.libs/loopfilter.c.o vpx_dsp/.libs/fwd_txfm.c.o vpx_dsp/.libs/inv_txfm.c.o vpx_dsp/.libs/quantize.c.o vpx_dsp/.libs/sad.c.o vpx_dsp/.libs/subtract.c.o vpx_dsp/.libs/variance.c.o vpx_dsp/.libs/vpx_dsp_rtcd.c.o vpx_util/.libs/vpx_thread.c.o vp8/common/.libs/alloccommon.c.o vp8/common/.libs/blockd.c.o vp8/common/.libs/copy_c.c.o vp8/common/.libs/debugmodes.c.o vp8/common/.libs/dequantize.c.o vp8/common/.libs/entropy.c.o vp8/common/.libs/entropymode.c.o vp8/common/.libs/entropymv.c.o vp8/common/.libs/extend.c.o vp8/common/.libs/filter.c.o vp8/common/.libs/findnearmv.c.o vp8/common/generic/.libs/systemdependent.c.o vp8/common/.libs/idct_blk.c.o vp8/common/.libs/idctllm.c.o vp8/common/.libs/rtcd.c.o vp8/common/.libs/vp8_loopfilter.c.o vp8/common/.libs/loopfilter_filters.c.o vp8/common/.libs/mbpitch.c.o vp8/common/.libs/modecont.c.o vp8/common/.libs/quant_common.c.o vp8/common/.libs/reconinter.c.o vp8/common/.libs/reconintra.c.o vp8/common/.libs/reconintra4x4.c.o vp8/common/.libs/setupintrarecon.c.o vp8/common/.libs/swapyv12buffer.c.o vp8/common/.libs/treecoder.c.o vp8/.libs/vp8_cx_iface.c.o vp8/encoder/.libs/bitstream.c.o vp8/encoder/.libs/boolhuff.c.o vp8/encoder/.libs/dct.c.o vp8/encoder/.libs/encodeframe.c.o vp8/encoder/.libs/encodeintra.c.o vp8/encoder/.libs/encodemb.c.o vp8/encoder/.libs/encodemv.c.o vp8/encoder/.libs/ethreading.c.o vp8/encoder/.libs/firstpass.c.o vp8/encoder/.libs/denoising.c.o vp8/encoder/.libs/lookahead.c.o vp8/encoder/.libs/mcomp.c.o vp8/encoder/.libs/modecosts.c.o vp8/encoder/.libs/onyx_if.c.o vp8/encoder/.libs/pickinter.c.o vp8/encoder/.libs/picklpf.c.o vp8/encoder/.libs/vp8_quantize.c.o vp8/encoder/.libs/ratectrl.c.o vp8/encoder/.libs/rdopt.c.o vp8/encoder/.libs/segmentation.c.o vp8/encoder/.libs/tokenize.c.o vp8/encoder/.libs/treewriter.c.o vp8/encoder/.libs/temporal_filter.c.o vp8/.libs/vp8_dx_iface.c.o vp8/decoder/.libs/dboolhuff.c.o vp8/decoder/.libs/decodemv.c.o vp8/decoder/.libs/decodeframe.c.o vp8/decoder/.libs/detokenize.c.o vp8/decoder/.libs/onyxd_if.c.o vp8/decoder/.libs/threading.c.o vp9/common/.libs/vp9_alloccommon.c.o vp9/common/.libs/vp9_blockd.c.o vp9/common/.libs/vp9_debugmodes.c.o vp9/common/.libs/vp9_entropy.c.o vp9/common/.libs/vp9_entropymode.c.o vp9/common/.libs/vp9_entropymv.c.o vp9/common/.libs/vp9_frame_buffers.c.o vp9/common/.libs/vp9_idct.c.o vp9/common/.libs/vp9_filter.c.o vp9/common/.libs/vp9_pred_common.c.o vp9/common/.libs/vp9_rtcd.c.o vp9/common/.libs/vp9_scale.c.o vp9/common/.libs/vp9_seg_common.c.o vp9/common/.libs/vp9_tile_common.c.o vp9/common/.libs/vp9_loopfilter.c.o vp9/common/.libs/vp9_thread_common.c.o vp9/common/.libs/vp9_mvref_common.c.o vp9/common/.libs/vp9_quant_common.c.o vp9/common/.libs/vp9_reconinter.c.o vp9/common/.libs/vp9_reconintra.c.o vp9/common/.libs/vp9_common_data.c.o vp9/common/.libs/vp9_scan.c.o vp9/.libs/vp9_cx_iface.c.o vp9/encoder/.libs/vp9_avg.c.o vp9/encoder/.libs/vp9_bitstream.c.o vp9/encoder/.libs/vp9_context_tree.c.o vp9/encoder/.libs/vp9_cost.c.o vp9/encoder/.libs/vp9_dct.c.o vp9/encoder/.libs/vp9_encodeframe.c.o vp9/encoder/.libs/vp9_encodemb.c.o vp9/encoder/.libs/vp9_encodemv.c.o vp9/encoder/.libs/vp9_ethread.c.o vp9/encoder/.libs/vp9_extend.c.o vp9/encoder/.libs/vp9_firstpass.c.o vp9/encoder/.libs/vp9_lookahead.c.o vp9/encoder/.libs/vp9_mcomp.c.o vp9/encoder/.libs/vp9_encoder.c.o vp9/encoder/.libs/vp9_picklpf.c.o vp9/encoder/.libs/vp9_quantize.c.o vp9/encoder/.libs/vp9_ratectrl.c.o vp9/encoder/.libs/vp9_rd.c.o vp9/encoder/.libs/vp9_rdopt.c.o vp9/encoder/.libs/vp9_pickmode.c.o vp9/encoder/.libs/vp9_segmentation.c.o vp9/encoder/.libs/vp9_speed_features.c.o vp9/encoder/.libs/vp9_subexp.c.o vp9/encoder/.libs/vp9_svc_layercontext.c.o vp9/encoder/.libs/vp9_resize.c.o vp9/encoder/.libs/vp9_tokenize.c.o vp9/encoder/.libs/vp9_treewriter.c.o vp9/encoder/.libs/vp9_aq_variance.c.o vp9/encoder/.libs/vp9_aq_cyclicrefresh.c.o vp9/encoder/.libs/vp9_aq_complexity.c.o vp9/encoder/.libs/vp9_skin_detection.c.o vp9/encoder/.libs/vp9_temporal_filter.c.o vp9/encoder/.libs/vp9_mbgraph.c.o vp9/.libs/vp9_dx_iface.c.o vp9/decoder/.libs/vp9_decodemv.c.o vp9/decoder/.libs/vp9_decodeframe.c.o vp9/decoder/.libs/vp9_detokenize.c.o vp9/decoder/.libs/vp9_dthread.c.o vp9/decoder/.libs/vp9_decoder.c.o vp9/decoder/.libs/vp9_dsubexp.c.o .libs/vpx_config.c.o   -L/d0/build/pkgsrc/multimedia/libvpx/work/.buildlink/lib  -Wl,-R/usr/pkg/lib -Wl,-Bsymbolic -pthread   -pthread -Wl,-soname -Wl,libvpx.so.1 -o .libs/libvpx.so.1.0.5
libtool: link: (cd ".libs" && rm -f "libvpx.so.1" && ln -s "libvpx.so.1.0.5" "libvpx.so.1")
libtool: link: (cd ".libs" && rm -f "libvpx.so" && ln -s "libvpx.so.1.0.5" "libvpx.so")


-- 
|/"\ John D. Baker, KN5UKS               NetBSD     Darwin/MacOS X
|\ / jdbaker[snail]mylinuxisp[flyspeck]com    OpenBSD            FreeBSD
| X  No HTML/proprietary data in email.   BSD just sits there and works!
|/ \ GPGkeyID:  D703 4A7E 479F 63F8 D3F4  BD99 9572 8F23 E4AD 1645