Closed nika-begiashvili closed 6 months ago
Hello!
There were no changes to any of the assembly related code between 5.2.11
and 5.2.12
. I see you are using emscripten
, so I was able to recreate your error on both 5.2.11
and 5.2.12
using:
emconfigure ./configure
make
<inline asm>:1:1: error: unknown directive
.symver lzma_get_progress_522,lzma_get_progress@XZ_5.2.2
^
<inline asm>:2:1: error: unknown directive
.symver lzma_get_progress_52,lzma_get_progress@@XZ_5.2
^
So the problem isn't a difference between 5.2.11
and 5.2.12
. Also, unless you are building on 32-bit x86 the disable-assembler
flag has no effect. In order to build, you need to pass the disable-symbol-versions
flag.
emconfigure ./configure --disable-symbol-versions
make
The underlying issue here is that emcc
(and I believe WebAssembly in general) does not support symbol versioning so it needs to be manually disabled. emconfigure
does not change the underlying $host_os
or $host_cpu
so configure
will guess that symbol versioning is supported on GNU or FreeBSD systems.
Hi,
Strangely 5.2.11 works for me here's my docker file
Thanks for sharing your Dockerfile. The reason that 5.2.11 "works" is because there was a bug when disabling threads. See this issue. The bug was fixed in 5.2.12, so with your configure
options you are building shared libraries again. So you can use --disable-shared
instead of --enable-static=yes
and this will disable symbol versioning as a side effect (symbol versioning is only enabled when building a shared library). Or, if you actually want a shared library, you can use --disable-symbol-versions
as I mentioned before.
Hope this helps!
Describe the bug
After updating to v5.2.12 it seems --disable-assembler flag is not fully affecting liblzma
compiler is not standard but for this case it can be considered as clang, also tried v5.2.11 and it's working fine so I'm guessing it must be a configuration changes between these two versions
Version
v5.2.12
Operating System
docker/ubuntu:jammy
Relevant log output