OS: Gentoo slibtool: 1ca6692 liboil: 0.3.17
Gentoo
0.3.17
Edit: See comment https://dev.midipix.org/cross/slibtool/issue/62#comment-384 for the correct diagnosis.
In src/Makefile.am liboilfunctions.la is specified as a convenience library.
src/Makefile.am
liboilfunctions.la
noinst_LTLIBRARIES = liboilfunctions.la
And many dependencies are added.
liboilfunctions_la_LIBADD = \ c/lib_c.la \ colorspace/libcolorspace.la \ copy/libcopy.la \ dct/libdct.la \ $(libs) \ jpeg/libjpeg.la \ math/libmath.la \ md5/libmd5.la \ ref/libref.la \ simdpack/libsimdpack.la \ utf8/libutf8.la if USE_NEW_ABI else liboilfunctions_la_LIBADD += \ conv/libconv.la \ deprecated/libdeprecated.la endif
With GNU libtool it adds these dependencies as object (.o) files to the convenience archive.
.o
libtool: link: x86_64-gentoo-linux-musl-ar cru .libs/liboilfunctions.a .libs/liboilfunctions_la-null.o .libs/liboilfunctions.lax/lib_c.a/lib_c_la-ag_clamp.o .libs/liboilfunctions.lax/lib_c.a/lib_c_la-composite.o .libs/liboilfunctions.lax/lib_c.a/lib_c_la-copy.o .libs/liboilfunctions.lax/lib_c.a/lib_c_la-swab.o .libs/liboilfunctions.lax/lib_c.a/lib_c_la-wavelet.o .libs/liboilfunctions.lax/libcolorspace.a/libcolorspace_la-composite.o .libs/liboilfunctions.lax/libcopy.a/libcopy_la-copy.o .libs/liboilfunctions.lax/libcopy.a/libcopy_la-copy8x8.o .libs/liboilfunctions.lax/libcopy.a/libcopy_la-splat_ref.o .libs/liboilfunctions.lax/libcopy.a/libcopy_la-trans8x8_c.o .libs/liboilfunctions.lax/libdct.a/libdct_la-dct12_f32.o .libs/liboilfunctions.lax/libdct.a/libdct_la-dct36_f32.o .libs/liboilfunctions.lax/libdct.a/libdct_la-fdct8_f64.o .libs/liboilfunctions.lax/libdct.a/libdct_la-fdct8x8_f64.o .libs/liboilfunctions.lax/libdct.a/libdct_la-fdct8x8s_s16.o .libs/liboilfunctions.lax/libdct.a/libdct_la-fdct8x8theora.o .libs/liboilfunctions.lax/libdct.a/libdct_la-idct8_f64.o .libs/liboilfunctions.lax/libdct.a/libdct_la-idct8x8_c.o .libs/liboilfunctions.lax/libdct.a/libdct_la-imdct32_f32.o .libs/liboilfunctions.lax/libdct.a/libdct_la-idct8x8theora_ref.o .libs/liboilfunctions.lax/libmmx.a/libmmx_la-composite_mmx.o .libs/liboilfunctions.lax/libmmx.a/libmmx_la-copy_mmx.o .libs/liboilfunctions.lax/libmmx.a/libmmx_la-recon8x8_mmx.o .libs/liboilfunctions.lax/libmmx.a/libmmx_la-splat_mmx.o .libs/liboilfunctions.lax/libfb.a/libfb_la-fbmmx.o .libs/liboilfunctions.lax/libsse.a/libsse_la-clamp_sse.o .libs/liboilfunctions.lax/libsse.a/libsse_la-composite_sse.o .libs/liboilfunctions.lax/libsse.a/libsse_la-composite_sse_2pix.o .libs/liboilfunctions.lax/libsse.a/libsse_la-composite_sse_4pix.o .libs/liboilfunctions.lax/libsse.a/libsse_la-copy_sse.o .libs/liboilfunctions.lax/libsse.a/libsse_la-math_sse.o .libs/liboilfunctions.lax/libsse.a/libsse_la-math_sse_unroll2.o .libs/liboilfunctions.lax/libsse.a/libsse_la-multsum_sse.o .libs/liboilfunctions.lax/libsse.a/libsse_la-sad8x8_sse.o .libs/liboilfunctions.lax/libsse.a/libsse_la-splat_sse.o .libs/liboilfunctions.lax/libamd64.a/libamd64_la-wavelet.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-add2.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-addc.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-clamp.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-convert.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-copy.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-idct8x8_i386.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-mas.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-math.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-multiply_and_acc.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-mt19937.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-resample.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-sad8x8.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-sum.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-swab.o .libs/liboilfunctions.lax/libi386_amd64.a/libi386_amd64_la-yuv.o .libs/liboilfunctions.lax/libjpeg.a/libjpeg_la-convert8x8_c.o .libs/liboilfunctions.lax/libjpeg.a/libjpeg_la-jpeg_rgb_decoder.o .libs/liboilfunctions.lax/libjpeg.a/libjpeg_la-quantize8x8_c.o .libs/liboilfunctions.lax/libjpeg.a/libjpeg_la-yuv2rgb_c.o .libs/liboilfunctions.lax/libjpeg.a/libjpeg_la-zigzag8x8_c.o .libs/liboilfunctions.lax/libmath.a/libmath_la-math.o .libs/liboilfunctions.lax/libmath.a/libmath_la-ag_math.o .libs/liboilfunctions.lax/libmd5.a/libmd5_la-md5.o .libs/liboilfunctions.lax/libref.a/libref_la-addc.o .libs/liboilfunctions.lax/libref.a/libref_la-argb_paint.o .libs/liboilfunctions.lax/libref.a/libref_la-ayuv2argb.o .libs/liboilfunctions.lax/libref.a/libref_la-clamp.o .libs/liboilfunctions.lax/libref.a/libref_la-composite.o .libs/liboilfunctions.lax/libref.a/libref_la-convert.o .libs/liboilfunctions.lax/libref.a/libref_la-copy.o .libs/liboilfunctions.lax/libref.a/libref_la-copy8x8.o .libs/liboilfunctions.lax/libref.a/libref_la-diff8x8.o .libs/liboilfunctions.lax/libref.a/libref_la-diffsquaresum_f64.o .libs/liboilfunctions.lax/libref.a/libref_la-diffsquaresum_f32.o .libs/liboilfunctions.lax/libref.a/libref_la-error8x8.o .libs/liboilfunctions.lax/libref.a/libref_la-mas.o .libs/liboilfunctions.lax/libref.a/libref_la-math.o .libs/liboilfunctions.lax/libref.a/libref_la-mix_u8.o .libs/liboilfunctions.lax/libref.a/libref_la-mt19937ar.o .libs/liboilfunctions.lax/libref.a/libref_la-mult8x8_s16.o .libs/liboilfunctions.lax/libref.a/libref_la-multsum.o .libs/liboilfunctions.lax/libref.a/libref_la-recon8x8.o .libs/liboilfunctions.lax/libref.a/libref_la-resample.o .libs/liboilfunctions.lax/libref.a/libref_la-rgb.o .libs/liboilfunctions.lax/libref.a/libref_la-rowcolsad8x8.o .libs/liboilfunctions.lax/libref.a/libref_la-sad8x8.o .libs/liboilfunctions.lax/libref.a/libref_la-sad8x8_broken.o .libs/liboilfunctions.lax/libref.a/libref_la-sad8x8avg.o .libs/liboilfunctions.lax/libref.a/libref_la-sincos_f64.o .libs/liboilfunctions.lax/libref.a/libref_la-splat.o .libs/liboilfunctions.lax/libref.a/libref_la-squaresum_f32.o .libs/liboilfunctions.lax/libref.a/libref_la-squaresum_f64.o .libs/liboilfunctions.lax/libref.a/libref_la-sum.o .libs/liboilfunctions.lax/libref.a/libref_la-sum_f64.o .libs/liboilfunctions.lax/libref.a/libref_la-swab.o .libs/liboilfunctions.lax/libref.a/libref_la-trans8x8.o .libs/liboilfunctions.lax/libref.a/libref_la-yuv.o .libs/liboilfunctions.lax/libref.a/libref_la-wavelet.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-diffsquaresum_f64.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-mix_u8.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-multsum.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-sincos_f64.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-squaresum_f64.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-sum_f64.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-abs_misc.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-average2_u8.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-clip_fast.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-scalaradd.o .libs/liboilfunctions.lax/libsimdpack.a/libsimdpack_la-scalarmult.o .libs/liboilfunctions.lax/libutf8.a/libutf8_la-utf8.o .libs/liboilfunctions.lax/libutf8.a/libutf8_la-utf8_fast.o .libs/liboilfunctions.lax/libconv.a/libconv_la-conv_c.o .libs/liboilfunctions.lax/libconv.a/libconv_la-conv_bitstuff.o .libs/liboilfunctions.lax/libconv.a/libconv_la-conv_misc.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-abs.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-average2_u8.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-clip_ref.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-conv.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-permute.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-scalaradd.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-scalarmult.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-tablelookup.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-vectoradd_f64.o .libs/liboilfunctions.lax/libdeprecated.a/libdeprecated_la-vectoradd_s.o libtool: link: x86_64-gentoo-linux-musl-ranlib .libs/liboilfunctions.a
But with slibtool it misses most of these.
rdlibtool: link: x86_64-gentoo-linux-musl-ar -crs .libs/liboilfunctions.a .libs/liboilfunctions_la-null.o
Which results with some of their tests segfaulting.
Gentoo issue: https://bugs.gentoo.org/924407
But with slibtool it misses most of these. rdlibtool: link: x86_64-gentoo-linux-musl-ar -crs .libs/liboilfunctions.a .libs/liboilfunctions_la-null.o Which results with some of their tests segfaulting. Gentoo issue: https://bugs.gentoo.org/924407
The above output message from rdlibtool is misleading since it does not communicate the archives that are being pull in via slbt_ar_merge_archives().
slbt_ar_merge_archives()
The correct comparison would be:
$ ar -tv .libs/liboilfunctions.a
Yes you are right, with ar -t it shows the same object files. So the issue is somewhere else....
ar -t
The real issue is that liboil generates liboilarray.c by grepping the GNU libtool .libs/liboiltmp1.exp file which is a temporary file used by GNU libtool to create the version script, but since this logic is not required for slibtool's -export-symbols-regex the file is currently not created at all.
liboilarray.c
.libs/liboiltmp1.exp
-export-symbols-regex
Fixed with commit 5b42a87 :=)
Metadata Update from @midipix: - Issue status updated to: Closed (was: Open)
And its now fixed.
77c7bc6 5b42a87
Login to comment on this ticket.