#62 liboil depends on the GNU libtool -export-symbols-regex .exp files
Closed 2 months ago by midipix. Opened 2 months ago by orbea.

OS: Gentoo
slibtool: 1ca6692
liboil: 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.

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.

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().

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....

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.

Metadata Update from @midipix:
- Issue status updated to: Closed (was: Open)

2 months ago

Login to comment on this ticket.

Metadata