On 2022-11-22 John Paul Adrian Glaubitz wrote:
> Does anyone have a clue why this particular change may have broken
> the linking on ia64?

Thanks for your report. This is important to fix.

What do these commands print? Fix the path to liblzma.so.5 if needed.

    readelf --dyn-syms -W /lib/liblzma.so.5 \
        | grep lzma_get_progress

    readelf --dyn-syms -W /lib/liblzma.so.5 \
        | grep lzma_stream_encoder_mt_memusage

The first should print 2 lines and the second 3 lines. The rightmost
columns should be like these:

FUNC    GLOBAL DEFAULT   11 lzma_get_progress@@XZ_5.2
FUNC    GLOBAL DEFAULT   11 lzma_get_progress@XZ_5.2.2
FUNC    GLOBAL DEFAULT   11 lzma_stream_encoder_mt_memusage@@XZ_5.2
FUNC    GLOBAL DEFAULT   11 lzma_stream_encoder_mt_memusage@XZ_5.1.2alpha
FUNC    GLOBAL DEFAULT   11 lzma_stream_encoder_mt_memusage@XZ_5.2.2

Pay close attention to @ vs. @@. The XZ_5.2 must be the ones with @@.
If you see the same as above then I don't have a clue.

By any chance, was XZ Utils built with GCC older than 10 using
link-time optimization (LTO, -flto)? As my commit message describes
and NEWS warns, GCC < 10 and LTO will not produce correct results
due to the symbol versions. It should work fine with GCC >= 10 or Clang.

For what it is worth, when I wrote the patch I tested it on on
Slackware 10.1 (32-bit x86) that has GCC 3.3.4 and it worked perfectly
there. This symbol version stuff isn't a new thing so it really should

Lasse Collin

Reply via email to