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
work.
--
Lasse Collin