mingw-cross-env-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Mingw-cross-env-list] upx build failure on ubuntu 32bit docker cont


From: Nagaev Boris
Subject: Re: [Mingw-cross-env-list] upx build failure on ubuntu 32bit docker container
Date: Wed, 21 Dec 2016 00:32:57 +0000

On Tue, Dec 20, 2016 at 10:02 AM, HeeSoo, Jung (정희수)
<address@hidden> wrote:
> Hello
>
> I'm trying to compile mxe on a docker container running ubuntu 32bit
> image(xenial), but failing on upx build.
> It successfully compiles on the host machine running ubuntu 16.04 64 bit and
> also successful on 12.04 32 bit machine.
>
> After running 'MXE_VERBOSE=1 make gcc', I got following error message.
> Does anyone can help on this?
>
> g++ -DWITH_LZMA=0x920
> -I/opt/mxe/tmp-upx-x86_64-unknown-linux-gnu/upx-3.91-src/ucl-1.03/include
> -I/opt/mxe/tmp-upx-x86_64-unknown-linux-gnu/upx-3.91-src/lzma -O2 -Wall -W
> -Wcast-align -Wcast-qual -Wpointer-arith -Wshadow -Wwrite-strings -o upx
> c_file.o c_init.o c_none.o c_screen.o compress.o compress_lzma.o
> compress_ucl.o compress_zlib.o except.o file.o filter.o filteri.o help.o
> lefile.o linker.o main.o mem.o msg.o p_armpe.o p_com.o p_djgpp2.o p_elks.o
> p_exe.o p_lx_elf.o p_lx_exc.o p_lx_interp.o p_lx_sh.o p_mach.o p_ps1.o
> p_sys.o p_tmt.o p_tos.o p_unix.o p_vmlinx.o p_vmlinz.o p_w16ne.o p_w32pe.o
> p_w64pep.o p_wcle.o packer.o packer_c.o packer_f.o packhead.o packmast.o
> pefile.o pepfile.o s_djgpp2.o s_object.o s_vcsa.o s_win32.o snprintf.o
> stdcxx.o ui.o util.o work.o -L/opt/mxe/usr/x86_64-unknown-linux-gnu/lib
> -lucl -lz
> compress_ucl.o: In function `upx_ucl_decompress(unsigned char const*,
> unsigned int, unsigned char*, unsigned int*, int, upx_compress_result_t
> const*)':
> compress_ucl.cpp:(.text+0x3ca): undefined reference to
> `ucl_nrv2e_decompress_asm_safe_le16'
> compress_ucl.cpp:(.text+0x3ea): undefined reference to
> `ucl_nrv2b_decompress_asm_safe_le32'
> compress_ucl.cpp:(.text+0x40a): undefined reference to
> `ucl_nrv2b_decompress_asm_safe_8'
> compress_ucl.cpp:(.text+0x42a): undefined reference to
> `ucl_nrv2b_decompress_asm_safe_le16'
> compress_ucl.cpp:(.text+0x44a): undefined reference to
> `ucl_nrv2d_decompress_asm_safe_le32'
> compress_ucl.cpp:(.text+0x46a): undefined reference to
> `ucl_nrv2d_decompress_asm_safe_8'
> compress_ucl.cpp:(.text+0x48a): undefined reference to
> `ucl_nrv2d_decompress_asm_safe_le16'
> compress_ucl.cpp:(.text+0x4aa): undefined reference to
> `ucl_nrv2e_decompress_asm_safe_le32'
> compress_ucl.cpp:(.text+0x4ca): undefined reference to
> `ucl_nrv2e_decompress_asm_safe_8'
> collect2: error: ld returned 1 exit status
> Makefile:73: recipe for target 'upx' failed
> make[3]: *** [upx] Error 1
> make[3]: Leaving directory
> '/opt/mxe/tmp-upx-x86_64-unknown-linux-gnu/upx-3.91-src/src'
> Makefile:37: recipe for target 'all' failed
> make[2]: *** [all] Error 2
> make[2]: Leaving directory
> '/opt/mxe/tmp-upx-x86_64-unknown-linux-gnu/upx-3.91-src'
> Makefile:608: recipe for target 'build-only-upx_x86_64-unknown-linux-gnu'
> failed
> make[1]: *** [build-only-upx_x86_64-unknown-linux-gnu] Error 2
>
> HeeSoo
>

Hey HeeSoo

Thank you for reporting this!

I think, this is caused by upx attempt to use asm versions of its
functions on i386. For some reason, these functions are not generated.

I switched off this behavior in the following patch:

diff --git a/src/upx.mk b/src/upx.mk
index 3f25211..eeeea90 100644
--- a/src/upx.mk
+++ b/src/upx.mk
@@ -48,6 +48,7 @@ define $(PKG)_BUILD_$(BUILD)
         CC='$(BUILD_CC)' \
         PKG_CONFIG='$(PREFIX)/$(BUILD)/bin/pkgconf' \
         LIBS='-L$(PREFIX)/$(BUILD)/lib -lucl -lz' \
+        CXXFLAGS=-DUCL_NO_ASM \
         CXXFLAGS_WERROR= \
         exeext=
     cp '$(1)/src/upx' '$(PREFIX)/$(BUILD)/bin/'

but I do not have a 32bit machine to test it. Can you apply this patch
locally and tell if it helps, please?

-- 
Best regards,
Boris Nagaev



reply via email to

[Prev in Thread] Current Thread [Next in Thread]