2005-10-06 18:10:01 +02:00
|
|
|
.\" -*- nroff -*-
|
|
|
|
.TH WINEDUMP 1 "October 2005" "@PACKAGE_STRING@" "Wine Developers Manual"
|
2004-02-17 23:49:33 +01:00
|
|
|
.SH NAME
|
|
|
|
winedump \- A Wine DLL tool
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.BR "winedump " [ "-h " "| "
|
|
|
|
.BI "sym " "<sym> "
|
|
|
|
|
|
|
|
|
.BI "spec " "<dll> "
|
|
|
|
|
|
|
|
|
.BI "dump " "<dll>"
|
|
|
|
.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
|
2005-06-30 20:19:33 +02:00
|
|
|
B: Compiling a Win32 application with Winelib that uses x86 DLLs
|
2004-02-17 23:49:33 +01:00
|
|
|
.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
|
2004-04-09 21:06:29 +02:00
|
|
|
addition you can have \fBwinedump\fR create code to help you re-implement a
|
2004-02-17 23:49:33 +01:00
|
|
|
DLL, by providing tracing of calls to the DLL, and (in some cases)
|
|
|
|
automatically determining the parameters, calling conventions, and
|
2004-04-09 21:06:29 +02:00
|
|
|
return values of the DLL's functions.
|
2004-02-17 23:49:33 +01:00
|
|
|
.PP
|
2004-04-09 21:06:29 +02:00
|
|
|
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.
|
2004-02-17 23:49:33 +01:00
|
|
|
.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 PE file.
|
|
|
|
.IP \fBspec\fR
|
2005-06-30 20:19:33 +02:00
|
|
|
For generating .spec files and stub DLLs.
|
2004-02-17 23:49:33 +01:00
|
|
|
.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<dll>\fR
|
|
|
|
Dumps the content of the dll named \fI<dll>\fR.
|
|
|
|
.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 \fIsect_name\fR"
|
|
|
|
Dumps only the content of section sect_name (import,
|
|
|
|
export, debug).
|
|
|
|
To dump only a given directory, specify them using this
|
|
|
|
option. Currently only the import, export and debug
|
|
|
|
directories are implemented.
|
|
|
|
.IP \fB-x\fR
|
|
|
|
Dumps everything.
|
2004-04-09 21:06:29 +02:00
|
|
|
This command prints all available information 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.
|
2006-08-27 08:50:46 +02:00
|
|
|
.IP \fB-G\fR
|
|
|
|
Dumps contents of debug section if any (for now, only stabs
|
|
|
|
information is supported).
|
2004-02-17 23:49:33 +01:00
|
|
|
.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
|
2005-06-30 20:19:33 +02:00
|
|
|
Windows DLLs, this could be either the standard include
|
2004-02-17 23:49:33 +01:00
|
|
|
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.
|
2004-04-09 21:06:29 +02:00
|
|
|
Structs that are passed by value are printed as "struct",
|
|
|
|
and functions that take variable argument lists print "...".
|
2004-02-17 23:49:33 +01:00
|
|
|
.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.
|
2004-04-09 21:06:29 +02:00
|
|
|
This option is mostly useful when generating a forwarding DLL.
|
2004-02-17 23:49:33 +01:00
|
|
|
.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).
|
2004-04-09 21:06:29 +02:00
|
|
|
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.
|
2004-02-17 23:49:33 +01:00
|
|
|
.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.
|
|
|
|
.RE
|
|
|
|
.I foo_install
|
|
|
|
.RS
|
|
|
|
A shell script for adding
|
|
|
|
.I foo
|
|
|
|
to the Wine source tree.
|
|
|
|
.SH BUGS
|
|
|
|
C++ name demangling is currently under development. Since the
|
|
|
|
algorithm used is not documented, it must be decoded. Many simple
|
|
|
|
prototypes are already working however.
|
|
|
|
.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
|