.\" -*- nroff -*-
.TH WINEDUMP 1 "October 2005" "@PACKAGE_STRING@" "Wine Developers Manual"
.SH NAME
winedump \- A Wine DLL tool
.SH SYNOPSIS
.BR "winedump " [ "-h " "| "
.BI "sym " "<sym> "
|
.BI "spec " "<dll> "
|
.BI "dump " "<file>"
.RI "] [" "mode_options" ]
.SH DESCRIPTION
.B winedump
is a Wine tool which aims to help:
.nf
A: Reimplementing a Win32 DLL for use within Wine, or
.nf
B: Compiling a Win32 application with Winelib that uses x86 DLLs
.PP
For both tasks in order to be able to link to the Win functions some
glue code is needed.  This 'glue' comes in the form of a \fI.spec\fR file.
The \fI.spec\fR file, along with some dummy code, is used to create a
Wine .so corresponding to the Windows DLL.  The \fBwinebuild\fR program
can then resolve calls made to DLL functions.
.PP
Creating a \fI.spec\fR file is a labour intensive task during which it is
easy to make a mistake. The idea of \fBwinedump\fR is to automate this task
and create the majority of the support code needed for your DLL. In
addition you can have \fBwinedump\fR create code to help you re-implement a
DLL, by providing tracing of calls to the DLL, and (in some cases)
automatically determining the parameters, calling conventions, and
return values of the DLL's functions.
.PP
Another use for this tool is to display (dump) information about a 32bit
DLL or PE format image file. When used in this way \fBwinedump\fR functions
similarly to tools such as pedump provided by many Win32 compiler
vendors.
.PP
Finally \fBwinedump\fR can be also used to demangle C++ symbols.
.SH MODES
.B winedump
can be used in several different modes.  The first argument to the
program determines the mode winedump will run in.
.IP \fB-h\fR
Help mode.
Basic usage help is printed.
.IP \fBdump\fR
To dump the contents of a file.
.IP \fBspec\fR
For generating .spec files and stub DLLs.
.IP \fBsym\fR
Symbol mode.
Used to demangle C++ symbols.
.SH OPTIONS
Mode options depend on the mode given as the first argument.
.PP
.B Help mode:
.nf
No options are used.
The program prints the help info and than exits.
.PP
.B Dump mode:
.IP \fI<file>\fR
Dumps the content of the file named \fI<file>\fR. Various file
formats are supported (PE, NE, LE, Minidumps, .lnk).
.IP \fB-C\fR
Turns on symbol demangling.
.IP \fB-f\fR
Dumps file header information.
This option dumps only the standard PE header structures,
along with the COFF sections available in the file.
.IP "\fB-j \fIdir_name\fR"
Dumps only the content of directory \fIdir_name\fR, for files
which header points to directories.
For PE files, currently the import, export, debug, resource,
tls and clr directories are implemented.
For NE files, currently the export and resource directories are
implemented.
.IP \fB-x\fR
Dumps everything.
This command prints all available information (including all
available directories - see \fB-j\fR option) about the file. You may
wish to pipe the output through more/less or into a file, since
a lot of output will be produced.
.IP \fB-G\fR
Dumps contents of debug section if any (for now, only stabs
information is supported).
.PP
.B Spec mode:
.IP \fI<dll>\fR
Use dll for input file and generate implementation code.
.IP "\fB-I \fIdir\fR"
Look for prototypes in '\fIdir\fR' (implies \fB-c\fR). In the case of
Windows DLLs, this could be either the standard include
directory from your compiler, or a SDK include directory.
If you have a text document with prototypes (such as
documentation) that can be used also, however you may need
to delete some non-code lines to ensure that prototypes are
parsed correctly.
The '\fIdir\fR' argument can also be a file specification (e.g.
"include/*"). If it contains wildcards you must quote it to
prevent the shell from expanding it.
If you have no prototypes, specify /dev/null for '\fIdir\fR'.
Winedump may still be able to generate some working stub
code for you.
.IP \fB-c\fR
Generate skeleton code (requires \fB-I\fR).
This option tells winedump to create function stubs for each
function in the DLL. As winedump reads each exported symbol
from the source DLL, it first tries to demangle the name. If
the name is a C++ symbol, the arguments, class and return
value are all encoded into the symbol name. Winedump
converts this information into a C function prototype. If
this fails, the file(s) specified in the \fB-I\fR argument are
scanned for a function prototype. If one is found it is used
for the next step of the process, code generation.
.IP \fB-t\fR
TRACE arguments (implies \fB-c\fR).
This option produces the same code as \fB-c\fR, except that
arguments are printed out when the function is called.
Structs that are passed by value are printed as "struct",
and functions that take variable argument lists print "...".
.IP "\fB-f \fIdll\fR"
Forward calls to '\fIdll\fR' (implies \fB-t\fR).
This is the most complicated level of code generation. The
same code is generated as \fB-t\fR, however support is added for
forwarding calls to another DLL. The DLL to forward to is
given as '\fIdll\fR'.
.IP \fB-D\fR
Generate documentation.
By default, winedump generates a standard comment at the
header of each function it generates. Passing this option
makes winedump output a full header template for standard
Wine documentation, listing the parameters and return value
of the function.
.IP "\fB-o \fIname\fR"
Set the output dll name (default: \fIdll\fR).
By default, if winedump is run on DLL 'foo', it creates
files 'foo.spec', 'foo_main.c' etc, and prefixes any
functions generated with 'FOO_'.  If '-o bar' is given,
these will become 'bar.spec', 'bar_main.c' and 'BAR_'
respectively.
This option is mostly useful when generating a forwarding DLL.
.IP \fB-C\fR
Assume __cdecl calls (default: __stdcall).
If winebuild cannot determine the calling convention,
__stdcall is used by default, unless this option has
been given.
Unless \fB-q\fR is given, a warning will be printed for every
function that winedump determines the calling convention
for and which does not match the assumed calling convention.
.IP "\fB-s \fInum\fR"
Start prototype search after symbol '\fInum\fR'.
.IP "\fB-e \fInum\fR"
End prototype search after symbol '\fInum\fR'.
By passing the \fB-s\fR or \fB-e\fR options you can have winedump try to
generate code for only some functions in your DLL. This may
be used to generate a single function, for example, if you
wanted to add functionality to an existing DLL.
.IP "\fB-S \fIsymfile\fR"
Search only prototype names found in '\fIsymfile\fR'.
If you want to only generate code for a subset of exported
functions from your source DLL, you can use this option to
provide a text file containing the names of the symbols to
extract, one per line. Only the symbols present in this file
will be used in your output DLL.
.IP \fB-q\fR
Don't show progress (quiet).
No output is printed unless a fatal error is encountered.
.IP \fB-v\fR
Show lots of detail while working (verbose).
There are 3 levels of output while winedump is running. The
default level, when neither -q or -v are given, prints the
number of exported functions found in the dll, followed by
the name of each function as it is processed, and a status
indication of whether it was processed OK.  With -v given, a
lot of information is dumped while winedump works: this is
intended to help debug any problems.
.PP
.B Sym mode:
.IP \fI<sym>\fR
Demangles C++ symbol '\fI<sym>\fR' and then exits.
.SH FILES
.I function_grep.pl
.RS
Perl script used to retrieve a function prototype.
.RE
.PP
Files output in
.B spec mode
for
.I foo.dll:
.nf
.I foo.spec
.RS
This is the .spec file.
.RE
.I foo_dll.h
.nf
.I foo_main.c
.RS
These are the source code files containing the minimum set
of code to build a stub DLL. The C file contains one
function, FOO_Init, which does nothing (but must be
present).
.RE
.I Makefile.in
.RS
This is a template for 'configure' to produce a makefile. It
is designed for a DLL that will be inserted into the Wine
source tree.
.SH BUGS
C++ name demangling is not fully in sync with the implementation in msvcrt.
It might be useful to submit your C++ name to the testsuite for msvcrt.
.SH AUTHORS
Jon P. Griffiths <jon_p_griffiths at yahoo dot com>
.nf
Michael Stefaniuc <mstefani at redhat dot com>
.SH "SEE ALSO"
.BR winedump "'s README file"
.nf
The Winelib User Guide
.nf
The Wine Developers Guide
