On Fri, Jun 01, 2001 at 04:19:54PM +0000, Gaël de Chalendar wrote:
Le Mercredi 23 Mai 2001 17:19, Andreas Mohr a écrit :
You get a nice "crash" when the program hits an unimplemented function. Do a backtrace, then do a disas of the code that led to the unimplemented function. Count the number of pushes before that call. That's usually the number of arguments you need to use.
OK. Just to try I removed the stub for SHLWAPI_16. When asking for a backtrace (bt) in the wine debugger, I get the following. Where in that di I find the address where to disassemble ?
Unhandled exception: unimplemented function shlwapi.16 called in 32-bit code (0x40765056). In 32-bit mode. 0x40765056 (__wine_unimplemented+0x56 [shlwapi.spec.c:40] in SHLWAPI.DLL): jmp 0 x40765050 (__wine_unimplemented+0x50 [shlwapi.spec.c:40] in SHLWAPI.DLL) 43 void __wine_stub_shlwapi_4(void) { __wine_unimplemented("4"); } Wine-dbg>bt Backtrace: =>0 0x40765056 (__wine_unimplemented+0x56(func=0x40770eff) [shlwapi.spec.c:40] in SHLWAPI.DLL) (ebp=40566cb8) 1 0x40765170 (__wine_stub_shlwapi_17 [shlwapi.spec.c:53] in SHLWAPI.DLL) (ebp=40566cc8) 2 0x00403a1a (<Debugged process>.EntryPoint+0x95c in <Debugged process>) (ebp=40566e6c) 3 0x0040312c (<Debugged process>.EntryPoint+0x6e in <Debugged process>) (ebp=40566ecc) 4 0x400d0e92 (start_process+0x1d6 [process.c:403] in libntdll.so) (ebp=40566f30) 5 0x400d46b9 (SYSDEPS_DoCallOnStack+0x25(func=0x400d0cbc, arg=0x0) [sysdeps.c:173] in libntdll.so) (ebp=40566ff0)
Right before 0x403a1a, of course (since this is where the program calls from). So e.g. a disas 0x403a00 should help.
Andreas Mohr