Subject: failures running cross-compiled mingw32 tests under wine

From: Andy Wingo <[email-masked]>
Date: Sat, 09 Mar 2013 14:21:28 +0100

I cross-built libtool 2.4.2, then ran the tests under wine (make check
TESTS_ENVIRONMENT=wine).  Most everything worked but there were two
failures.  Attaching the log.

=========================================
   GNU Libtool 2.4.2: ./test-suite.log   
=========================================

2 of 122 tests failed.  (2 tests were not run).  

.. contents:: :depth: 2

SKIP: tests/cdemo-undef.test (exit: 77)
=======================================

cdemo-undef.test: ===  Running cdemo-undef.test
cdemo-undef.test: ===  Running `make distclean' in cdemo
 rm -f cdemo.exe
 rm -f cdemo
rm -rf .libs _libs
test -z "libfoo.la" || rm -f libfoo.la
rm -f "./so_locations"
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f 
test . = "/home/wingo/src/libtool-2.4.2/tests/cdemo" || test -z "" || rm -f 
rm -f libtool config.lt
ac_files="a.out.* a.exe.* a_out.exe.* b.out.* conftest.*"; \
for ac_file in $ac_files; do \
  case $ac_file in \
    *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) rm -rf $ac_file ;; \
  esac; \
done
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f config.status config.cache config.log configure.lineno config.status.lineno
rm -f Makefile
cdemo-undef.test: ===  Configuring in cdemo
cdemo-undef.test: ===  /bin/sh /home/wingo/src/libtool-2.4.2/tests/cdemo/configure --srcdir=/home/wingo/src/libtool-2.4.2/tests/cdemo --prefix=/home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/_inst-cdemo --disable-static --host=i686-w64-mingw32
configure: WARNING: if you wanted to set the --build type, don't use --host.
    If a cross compiler is detected then cross compile mode will be used
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for i686-w64-mingw32-strip... i686-w64-mingw32-strip
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for i686-w64-mingw32-gcc... i686-w64-mingw32-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether i686-w64-mingw32-gcc accepts -g... yes
checking for i686-w64-mingw32-gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of i686-w64-mingw32-gcc... gcc3
checking build system type... x86_64-unknown-linux-gnu
checking host system type... i686-w64-mingw32
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by i686-w64-mingw32-gcc... /usr/i686-w64-mingw32/bin/ld
checking if the linker (/usr/i686-w64-mingw32/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/i686-w64-mingw32-nm -B
checking the name lister (/usr/bin/i686-w64-mingw32-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to i686-w64-mingw32 format... (cached) func_convert_file_nix_to_w32
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... (cached) func_convert_file_noop
checking for /usr/i686-w64-mingw32/bin/ld option to reload object files... -r
checking for i686-w64-mingw32-objdump... i686-w64-mingw32-objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for i686-w64-mingw32-dlltool... i686-w64-mingw32-dlltool
checking how to associate runtime and link libraries... func_cygming_dll_for_implib
checking for i686-w64-mingw32-ar... i686-w64-mingw32-ar
checking for archiver @FILE support... @
checking for i686-w64-mingw32-strip... (cached) i686-w64-mingw32-strip
checking for i686-w64-mingw32-ranlib... i686-w64-mingw32-ranlib
checking command to parse /usr/bin/i686-w64-mingw32-nm -B output from i686-w64-mingw32-gcc object... ok
checking for sysroot... no
checking for i686-w64-mingw32-mt... :
checking if : is a manifest tool... no
checking how to run the C preprocessor... i686-w64-mingw32-gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if i686-w64-mingw32-gcc supports -fno-rtti -fno-exceptions... no
checking for i686-w64-mingw32-gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if i686-w64-mingw32-gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if i686-w64-mingw32-gcc static flag -static works... yes
checking if i686-w64-mingw32-gcc supports -c -o file.o... yes
checking if i686-w64-mingw32-gcc supports -c -o file.o... (cached) yes
checking whether the i686-w64-mingw32-gcc linker (/usr/i686-w64-mingw32/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking for cos in -lm... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
config.status: executing libtool commands
cdemo-undef.test: i686-w64-mingw32 doesn't support undefined symbols in shared libs

SKIP: tests/tagdemo-undef.test (exit: 77)
=========================================

tagdemo-undef.test: ===  Running tagdemo-undef.test
tagdemo-undef.test: ===  Running `make distclean' in tagdemo
 rm -f tagdemo.exe
 rm -f tagdemo
test -z "libfoo.la libbaz.la" || rm -f libfoo.la libbaz.la
rm -f "./so_locations"
rm -f "./so_locations"
rm -rf .libs _libs
test -z "libconv.la" || rm -f libconv.la
rm -f "./so_locations"
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f 
test . = "/home/wingo/src/libtool-2.4.2/tests/tagdemo" || test -z "" || rm -f 
rm -f libtool config.lt
ac_files="a.out.* a.exe.* a_out.exe.* b.out.* conftest.*"; \
for ac_file in $ac_files; do \
  case $ac_file in \
    *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) rm -rf $ac_file ;; \
  esac; \
done
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f config.status config.cache config.log configure.lineno config.status.lineno
rm -f Makefile
tagdemo-undef.test: ===  Configuring in tagdemo
tagdemo-undef.test: ===  /bin/sh /home/wingo/src/libtool-2.4.2/tests/tagdemo/configure --srcdir=/home/wingo/src/libtool-2.4.2/tests/tagdemo --prefix=/home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/_inst-tagdemo --disable-static --host=i686-w64-mingw32
configure: WARNING: if you wanted to set the --build type, don't use --host.
    If a cross compiler is detected then cross compile mode will be used
checking build system type... x86_64-unknown-linux-gnu
checking host system type... i686-w64-mingw32
checking target system type... i686-w64-mingw32
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for i686-w64-mingw32-strip... i686-w64-mingw32-strip
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for i686-w64-mingw32-gcc... i686-w64-mingw32-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether i686-w64-mingw32-gcc accepts -g... yes
checking for i686-w64-mingw32-gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of i686-w64-mingw32-gcc... gcc3
checking how to run the C preprocessor... i686-w64-mingw32-gcc -E
checking whether i686-w64-mingw32-gcc and cc understand -c and -o together... yes
checking whether we are using the GNU C++ compiler... yes
checking whether i686-w64-mingw32-g++ accepts -g... yes
checking dependency style of i686-w64-mingw32-g++... gcc3
checking how to run the C++ preprocessor... i686-w64-mingw32-g++ -E
checking whether the compiler implements namespaces... yes
checking whether the compiler has ISO C++ iostream... yes
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by i686-w64-mingw32-gcc... /usr/i686-w64-mingw32/bin/ld
checking if the linker (/usr/i686-w64-mingw32/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/i686-w64-mingw32-nm -B
checking the name lister (/usr/bin/i686-w64-mingw32-nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to i686-w64-mingw32 format... (cached) func_convert_file_nix_to_w32
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... (cached) func_convert_file_noop
checking for /usr/i686-w64-mingw32/bin/ld option to reload object files... -r
checking for i686-w64-mingw32-objdump... i686-w64-mingw32-objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for i686-w64-mingw32-dlltool... i686-w64-mingw32-dlltool
checking how to associate runtime and link libraries... func_cygming_dll_for_implib
checking for i686-w64-mingw32-ar... i686-w64-mingw32-ar
checking for archiver @FILE support... @
checking for i686-w64-mingw32-strip... (cached) i686-w64-mingw32-strip
checking for i686-w64-mingw32-ranlib... i686-w64-mingw32-ranlib
checking command to parse /usr/bin/i686-w64-mingw32-nm -B output from i686-w64-mingw32-gcc object... ok
checking for sysroot... no
checking for i686-w64-mingw32-mt... :
checking if : is a manifest tool... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if i686-w64-mingw32-gcc supports -fno-rtti -fno-exceptions... no
checking for i686-w64-mingw32-gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if i686-w64-mingw32-gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if i686-w64-mingw32-gcc static flag -static works... yes
checking if i686-w64-mingw32-gcc supports -c -o file.o... yes
checking if i686-w64-mingw32-gcc supports -c -o file.o... (cached) yes
checking whether the i686-w64-mingw32-gcc linker (/usr/i686-w64-mingw32/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking how to run the C++ preprocessor... i686-w64-mingw32-g++ -E
checking for ld used by i686-w64-mingw32-g++... /usr/i686-w64-mingw32/bin/ld
checking if the linker (/usr/i686-w64-mingw32/bin/ld) is GNU ld... yes
checking whether the i686-w64-mingw32-g++ linker (/usr/i686-w64-mingw32/bin/ld) supports shared libraries... yes
checking for i686-w64-mingw32-g++ option to produce PIC... -DDLL_EXPORT -DPIC
checking if i686-w64-mingw32-g++ PIC flag -DDLL_EXPORT -DPIC works... yes
checking if i686-w64-mingw32-g++ static flag -static works... yes
checking if i686-w64-mingw32-g++ supports -c -o file.o... yes
checking if i686-w64-mingw32-g++ supports -c -o file.o... (cached) yes
checking whether the i686-w64-mingw32-g++ linker (/usr/i686-w64-mingw32/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking for cos in -lm... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
config.status: executing libtool commands
tagdemo-undef.test: i686-w64-mingw32 doesn't support undefined symbols in shared libs

FAIL: tests/demo-hardcode.test (exit: 1)
========================================

demo-hardcode.test: ===  Running demo-hardcode.test
demo-hardcode.test: ===  Running `make hardcode' in demo
You may ignore any linking errors from the following command:
i686-w64-mingw32-gcc -g -O2  -o hc-direct main.o ./.libs/libhello.dll.a -ldl  -lm -L/home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/_inst-demo/lib || echo unsupported > hc-direct
i686-w64-mingw32-gcc -g -O2  -o hc-libflag main.o -L/home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/tests/demo/.libs -L/home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/_inst-demo/lib -lhello -ldl  -lm
You may ignore any linking errors from the following command:
PATH=./.libs i686-w64-mingw32-gcc -g -O2  -o hc-libpath main.o -lhello -ldl  -lm -L/home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/_inst-demo/lib || echo unsupported > hc-libpath
/bin/sh: line 5: i686-w64-mingw32-gcc: command not found
i686-w64-mingw32-gcc -g -O2  -o hc-minusL main.o -L./.libs -lhello -ldl  -lm -L/home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/_inst-demo/lib || echo unsupported > hc-minusL
demo-hardcode.test: ===  Finding libtool.m4's guesses at hardcoding values
= Searching for hardcoded library directories in each program
.libs was not hardcoded in `hc-direct', as libtool expected
.libs was not hardcoded in `hc-libflag', which fooled libtool
`hc-libpath' was not linked properly, as libtool expected
.libs was not hardcoded in `hc-minusL', as libtool expected

FAIL: tests/depdemo-relink.test (exit: 1)
=========================================

depdemo-relink.test: ===  Running depdemo-relink.test
dependencies:
l1 (0)
l2 (0)
 l1 (1)
l4 (0)
 l3 (0)
  l1 (2)
  l2 (2)
   l1 (3)
 libm [sin(1.5) = 0.997495]
var_l1(4) + var_l2(6) + var_l4(10) == 20
depdemo-relink.test: ===  removing libl3.la from depdemo/l3
depdemo-relink.test: ===  running depdemo/depdemo
dependencies:
l1 (0)
l2 (0)
 l1 (1)
l4 (0)
 l3 (0)
  l1 (2)
  l2 (2)
   l1 (3)
 libm [sin(1.5) = 0.997495]
var_l1(4) + var_l2(6) + var_l4(10) == 20
depdemo-relink.test: ===  linking a broken depdemo/l3/libl3.la
/bin/sh ../libtool --tag=CC   --mode=link i686-w64-mingw32-gcc  -g -O2 -no-undefined  -o libl3.la -rpath /home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/_inst-depdemo/lib ../l2/l2.lo ../l1/libl1.la ../l2/libl2.la -ldl 
libtool: link: i686-w64-mingw32-gcc -shared  ../l2/.libs/l2.o   -L/home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/tests/depdemo/l1/.libs ../l1/.libs/libl1.dll.a ../l2/.libs/libl2.dll.a /home/wingo/src/libtool-2.4.2/+i686-w64-mingw32/tests/depdemo/l1/.libs/libl1.dll.a -ldl  -O2   -o .libs/libl3-0.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libl3.dll.a
libtool: link: ( cd ".libs" && rm -f "libl3.la" && ln -s "../libl3.la" "libl3.la" )
depdemo-relink.test: ===  running depdemo/depdemo with broken libl3.la
dependencies:wine: Call from 0x7bc4c9c8 to unimplemented function libl3-0.dll.func_l3, aborting
wine: Unimplemented function libl3-0.dll.func_l3 called at address 0x7bc4c9c8 (thread 0037), starting debugger...
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:systray:initialize_systray Could not create tray window
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
Unhandled exception: unimplemented function libl3-0.dll.func_l3 called in 32-bit code (0x7bc4c9c8).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:7bc4c9c8 ESP:0061fcd8 EBP:0061fd3c EFLAGS:00000216(   - --  I   -A-P- )
 EAX:6920c20a EBX:7bcbc000 ECX:0061fce0 EDX:00000000
 ESI:0061fce4 EDI:00110498
Stack dump:
0x0061fcd8:  0061fd28 7ef32aa1 7ef9a200 80000100
0x0061fce8:  00000001 00000000 7bc4c9c8 00000002
0x0061fcf8:  6920c52c 6920c20a 0061fd38 00110498
0x0061fd08:  0061fd28 7ef33055 7ef9a200 669c9024
0x0061fd18:  0061fd38 7ef92000 00000000 00110498
0x0061fd28:  0061fd48 7ef33055 7bc4c97a 00000004
Backtrace:
=>0 0x7bc4c9c8 call_dll_entry_point+0x4f8() in ntdll (0x0061fd3c)
  1 0x0024000f (0x0061fd98)
  2 0x004013fa __tmainCRTStartup+0x279() [/builddir/build/BUILD/mingw-w64-v2.0.999/trunk/mingw-w64-crt/build_win32/../crt/crtexe.c:315] in depdemo (0x0061fe60)
  3 0x7b85f99c call_process_entry+0xb() in kernel32 (0x0061fe78)
  4 0x7b860c7d in kernel32 (+0x50c7c) (0x0061feb8)
  5 0x7bc77a60 call_thread_func_wrapper+0xb() in ntdll (0x0061fed8)
  6 0x7bc7a94e call_thread_func+0x7d() in ntdll (0x0061ffa8)
  7 0x7bc77a3e RtlRaiseException+0x21() in ntdll (0x0061ffc8)
  8 0x7bc4c9ef call_dll_entry_point+0x51e() in ntdll (0x0061ffe8)
  9 0xf75f20ed wine_call_on_stack+0x1c() in libwine.so.1 (0x00000000)
  10 0xf75f21cc wine_switch_to_stack+0x2b() in libwine.so.1 (0xffcccbd8)
  11 0x7bc52667 LdrInitializeThunk+0x3c6() in ntdll (0xffcccc48)
  12 0x7b86747e __wine_kernel_init+0xc1d() in kernel32 (0xffccdd68)
  13 0x7bc52d3b __wine_process_init+0x18a() in ntdll (0xffccddf8)
  14 0xf75efd4c wine_init+0x29b() in libwine.so.1 (0xffccde58)
  15 0x7bf00d7c main+0x8b() in <wine-loader> (0xffcce2a8)
  16 0xf7432865 __libc_start_main+0xf4() in libc.so.6 (0x00000000)
0x7bc4c9c8 call_dll_entry_point+0x4f8 in ntdll: leal	0xfffffffc(%esp),%esp
Modules:
Module	Address			Debug info	Name (20 modules)
PE	  400000-  419000	Dwarf           depdemo
PE	62b80000-62b9b000	Deferred        libl2-0
PE	661c0000-661db000	Deferred        libl3-0
PE	669c0000-669db000	Deferred        libl1-0
PE	69200000-6921b000	Deferred        libl4-0
ELF	7b800000-7ba45000	Dwarf           kernel32<elf>
  \-PE	7b810000-7ba45000	\               kernel32
ELF	7bc00000-7bcd8000	Dwarf           ntdll<elf>
  \-PE	7bc10000-7bcd8000	\               ntdll
ELF	7bf00000-7bf04000	Dwarf           <wine-loader>
ELF	7eef4000-7ef9b000	Deferred        msvcrt<elf>
  \-PE	7ef10000-7ef9b000	\               msvcrt
ELF	7ef9b000-7efa8000	Deferred        libnss_files.so.2
ELF	7efa8000-7efe8000	Deferred        libm.so.6
ELF	f7414000-f7419000	Deferred        libdl.so.2
ELF	f7419000-f75cf000	Dwarf           libc.so.6
ELF	f75cf000-f75e9000	Deferred        libpthread.so.0
ELF	f75e9000-f772d000	Dwarf           libwine.so.1
ELF	f7746000-f7767000	Deferred        ld-linux.so.2
ELF	f7767000-f7768000	Deferred        [vdso].so
Threads:
process  tid      prio (all id:s are in hex)
0000000e services.exe
	0000001f    0
	0000001e    0
	00000018    0
	00000017    0
	00000015    0
	00000010    0
	0000000f    0
00000012 winedevice.exe
	0000001c    0
	00000019    0
	00000014    0
	00000013    0
0000001a plugplay.exe
	00000020    0
	0000001d    0
	0000001b    0
00000036 depdemo.exe
	00000035    0
00000038 (D) Z:\home\wingo\src\libtool-2.4.2\+i686-w64-mingw32\tests\depdemo\.libs\depdemo.exe
	00000037    0 <==
0000003c explorer.exe
	0000003b    0
depdemo-relink.test: ===  Exiting: depdemo/depdemo runs even though libl3.la is incomplete
depdemo-relink.test: shlibpath_overrides_runpath should be set to no

-- 
http://wingolog.org/