Evil wrote:
I commented out the three references to NtCurrentTeb in
dlls/ntdll/tests/exception.c and WINE now compiles, installs, and runs fine.
There's no CVS history for that file beyond the (current) 1.1 version,
so I'm guessing an include or something has been missing ever since it
was first added on the 17th of this month.
I'm still confused, though, as to why I'm the only one (?) seeing the
problem (on both my Mandriva 2005LE and Mandriva 2006 machines). I
don't immediately see how it (as part of thread.c) would be found when
compiling tests/exception.c, but I've only scratched the surface of the
source; Any guru's care to illuminate me?
-Jesse
Evil wrote:
I just got back from being on vacation for a week or so, and found I
can't compile the current CVS on either of my systems - even after
checking out everything from scratch and making clean.
Is anyone else having this problem, or is is specific to my machines?
../../../tools/winegcc/winegcc -B../../../tools/winebuild -mconsole
atom.o env.o error.o exception.o generated.o info.o large_int.o
path.o om.o reg.o rtl.o rtlbitmap.o rtlstr.o string.o time.o
testlist.o -o ntdll_test.exe.so -L../../../libs/port -lwine_port
-L../../../dlls -L../../../dlls/kernel32 -L../../../libs -lkernel32
exception.o(.text+0x267): In function `test_prot_fault':
/home/evil/install/wine/dlls/ntdll/tests/exception.c:202: undefined
reference to `NtCurrentTeb'
exception.o(.text+0x271):/home/evil/install/wine/dlls/ntdll/tests/exception.c:203:
undefined reference to `NtCurrentTeb'
exception.o(.text+0x32b):/home/evil/install/wine/dlls/ntdll/tests/exception.c:213:
undefined reference to `NtCurrentTeb'
collect2: ld returned 1 exit status
winegcc: gcc failed.
make[3]: *** [ntdll_test.exe.so] Error 2
The problem is caused because NtCurrentTeb is defined as "extern
inline". Your compiler appears to have decided not to inline the
function so it expects to be able to link to the function. However, the
tests aren't linked to ntdll as they need to run on win9x machines. The
solution that is probably the best is to include an implementation of
NtCurrentTeb at the end of the test to be used if there is no inline
version.
--
Rob Shearman