Error Invalid EXE Format when executing a exe.so built with winelib
Roger Wimbert
rw at bb-sw.de
Wed Feb 28 10:49:05 CST 2007
Here is the Debug output:
warn:module:load_builtin_dll failed to load .so lib for builtin
L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so":
/bb/home/.wine/dosdevices/z:/bb/s/bc/wine/dmsw.exe.so: cannot allocate memory in
static TLS block
warn:module:load_dll Failed to load module L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so";
status=c000007b
warn:module:load_builtin_dll failed to load .so lib for builtin
L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so":
/bb/home/.wine/dosdevices/z:/bb/s/bc/wine/dmsw.exe.so: cannot allocate memory in
static TLS block
warn:module:load_dll Failed to load module L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so";
status=c000007b
wine: could not load L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so": Fehlerhaftes EXE-Format f³r
It has something to do with TLS memory or threads, but the /lib/tls/libc.so is linked in:
(rw 8 amd64) /bb/s/bc/wine 105>ldd dmsw.exe.so
linux-gate.so.1 => (0xffffe000)
libwine.so.1 => /usr/local/lib/libwine.so.1 (0x557be000)
libm.so.6 => /lib/tls/libm.so.6 (0x558e8000)
libc.so.6 => /lib/tls/libc.so.6 (0x5590a000)
libdl.so.2 => /lib/libdl.so.2 (0x55a1f000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x56555000)
Our system:
(rw 8 amd64) /bb/s/bc/wine 106>uname -a
Linux amd64 2.6.5-7.193-smp #1 SMP Wed Jul 20 14:39:18 UTC 2005 x86_64 x86_64 x86_64
GNU/Linux
glibc has version 2.3.3
A simple program does work, but no program which uses threads.
wine is created with the 32 bit libraries.
If I use the original exe of my program with wine, it does work.
Does anyone has an idea what is going wrong?
The makefile is attached.
Thanks a lot.
-------------- next part --------------
### Generated by Winemaker
TOPSRCDIR = /bb/s
TOPOBJDIR = /bb/s/bc/wine
SRCDIR = .
SUBDIRS =
DLLS =
EXES = dmsw.exe
### Common settings
CEXTRA = -mno-cygwin -fno-pic -fno-PIC
CXXEXTRA = -mno-cygwin
CFLAGS = -D_DMSW
RCEXTRA =
RCFLAGS = -DBB_WINE
INCLUDE_PATH = -I. -I/bb/nt/wine -I/bb/s/i -I/bb/fg/i -I/bb/ze/i -I/bb/fe/i -I/bb/pbm/i -I/bb/wb1/i
DLL_PATH =
LIBRARY_PATH =
LIBRARIES = -lmsvcrt40 -lws2_32 -lversion -lnetapi32 -liphlpapi -lcomctl32 -lshlwapi -lwinmm
### dmsw.exe sources and settings
dmsw_exe_MODULE = dmsw.exe
dmsw_exe_C_SRCS = /bb/s/c/bbcrypt.c \
/bb/s/c/bbdes.c \
/bb/s/c/bbmalloc.c \
/bb/s/c/bbmd5.c \
/bb/s/c/bbo.c \
/bb/s/c/bbtwofish.c \
/bb/s/c/cmp.c \
/bb/s/c/costri.c \
/bb/s/c/cpy.c \
/bb/s/c/datec.c \
/bb/s/c/dfa.c \
/bb/fg/c/dgcode.c \
/bb/fg/c/dgvar.c \
/bb/s/c/dhinfo.c \
/bb/s/c/dholz.c \
/bb/fg/c/digcte.c \
/bb/fg/c/digecm.c \
/bb/fg/c/digranox.c \
/bb/fg/c/digvec.c \
/bb/s/c/dirview.c \
/bb/s/c/dirwalk.c \
/bb/s/c/dmsb.c \
/bb/s/c/dmsc.c \
/bb/s/c/dmsca.c \
/bb/s/c/dmse.c \
/bb/s/c/dmsf.c \
/bb/s/c/dmsfr.c \
/bb/s/c/dmsg.c \
/bb/s/c/dmsh.c \
/bb/s/c/dmshc.c \
/bb/s/c/dmsl.c \
/bb/s/c/dmsliz.c \
/bb/s/c/dmsm.c \
/bb/s/c/dmsmv.c \
/bb/s/c/dmsp.c \
/bb/s/c/dmsr.c \
/bb/s/c/dmss.c \
/bb/s/c/dmssb.c \
/bb/s/c/dmst.c \
/bb/s/c/dmstast.c \
/bb/s/c/dmsw.c \
/bb/s/c/dmswf.c \
/bb/s/c/dmswicon.c \
/bb/s/c/dmsy.c \
/bb/s/c/encode.c \
/bb/s/c/fileleng.c \
/bb/s/c/fordat.c \
/bb/s/c/gtypes.c \
/bb/fg/c/image.c \
/bb/fg/c/imgprint.c \
/bb/s/c/itoa.c \
/bb/fg/c/jpegconv.c \
/bb/s/c/lru.c \
/bb/s/c/ltoa.c \
/bb/s/c/map.c \
/bb/s/c/msleep.c \
/bb/s/c/packbits.c \
/bb/s/c/packdiff.c \
/bb/s/c/pfad.c \
/bb/fg/c/rgbtools.c \
/bb/s/c/rtt.c \
/bb/s/c/scrinfo.c \
/bb/s/c/set.c \
/bb/s/c/sockcom.c \
/bb/s/c/softdum.c \
/bb/s/c/swap.c \
/bb/s/c/syslog.c \
/bb/s/c/textino.c \
/bb/fg/c/tiffconv.c \
/bb/s/c/udpcom.c \
/bb/s/c/utoa.c \
/bb/s/c/vgl.c \
/bb/s/c/w32argv.c \
/bb/fg/c/w32bmp.c \
/bb/s/c/w32error.c \
/bb/s/c/w32font.c \
/bb/fg/c/w32ico.c \
/bb/s/c/w32macadr.c \
/bb/s/c/w32pfad.c \
/bb/s/c/w32pipe.c \
/bb/s/c/w32print.c \
/bb/s/c/w32puts.c \
/bb/s/c/w32reg.c \
/bb/fg/c/w32scalebmp.c \
/bb/s/c/w32screen.c \
/bb/s/c/w32scroll.c \
/bb/s/c/w32toolbar.c \
/bb/s/c/w32tools.c \
/bb/s/c/w32winms.c \
/bb/s/c/wsinit.c \
/bb/s/c/zeitc.c
dmsw_exe_CXX_SRCS=
dmsw_exe_RC_SRCS = /bb/nt/rc/dmsw/dmsw_wine.rc
dmsw_exe_LDFLAGS = -mwindows \
-mno-cygwin
dmsw_exe_DLL_PATH=
dmsw_exe_DLLS = odbc32 \
ole32 \
oleaut32 \
winspool
dmsw_exe_LIBRARY_PATH=
dmsw_exe_LIBRARIES= uuid
dmsw_exe_OBJS = $(dmsw_exe_C_SRCS:.c=.o) \
$(dmsw_exe_CXX_SRCS:.cpp=.o) \
$(dmsw_exe_RC_SRCS:.rc=.res)
### Global source lists
C_SRCS = $(dmsw_exe_C_SRCS)
CXX_SRCS = $(dmsw_exe_CXX_SRCS)
RC_SRCS = $(dmsw_exe_RC_SRCS)
### Tools
CC = winegcc
CXX = wineg++
RC = wrc
### Generic targets
all: $(SUBDIRS) $(DLLS:%=%.so) $(EXES:%=%.so)
### Build rules
.PHONY: all clean dummy
$(SUBDIRS): dummy
@cd $@ && $(MAKE)
# Implicit rules
.SUFFIXES: .cpp .rc .res
DEFINCL = $(INCLUDE_PATH) $(DEFINES) $(OPTIONS)
.c.o:
$(CC) -c $(CFLAGS) $(CEXTRA) $(DEFINCL) -o $@ $<
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(CXXEXTRA) $(DEFINCL) -o $@ $<
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(CXXEXTRA) $(DEFINCL) -o $@ $<
.rc.res:
$(RC) $(RCFLAGS) $(RCEXTRA) $(DEFINCL) -fo$@ $<
# Rules for cleaning
CLEAN_FILES = y.tab.c y.tab.h lex.yy.c core *.orig *.rej \
\\\#*\\\# *~ *% .\\\#*
clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__)
$(RM) $(CLEAN_FILES) $(RC_SRCS:.rc=.res) $(C_SRCS:.c=.o) $(CXX_SRCS:.cpp=.o)
$(RM) $(DLLS:%=%.so) $(EXES:%=%.so) $(EXES:%.exe=%)
$(SUBDIRS:%=%/__clean__): dummy
cd `dirname $@` && $(MAKE) clean
$(EXTRASUBDIRS:%=%/__clean__): dummy
-cd `dirname $@` && $(RM) $(CLEAN_FILES)
### Target specific build rules
DEFLIB = $(LIBRARY_PATH) $(LIBRARIES) $(DLL_PATH)
$(dmsw_exe_MODULE).so: $(dmsw_exe_OBJS)
$(CC) $(dmsw_exe_LDFLAGS) -o $@ $(dmsw_exe_OBJS) $(dmsw_exe_LIBRARY_PATH) $(DEFLIB) $(dmsw_exe_DLLS:%=-l%) $(dmsw_exe_LIBRARIES:%=-l%)
More information about the wine-devel
mailing list