Finding (or not) the exact number of args

Andreas Mohr 520053692817-0001 at t-online.de
Fri Jun 1 13:38:35 CDT 2001


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

-- 
Microsoft Windows: Made for the Internet
The Internet: Made for Unix




More information about the wine-devel mailing list