Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
bbef1cbd
Commit
bbef1cbd
authored
Jan 05, 2007
by
Eric Pouech
Committed by
Alexandre Julliard
Jan 06, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winedump: Removed cvinclude.h.
parent
4141eafb
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
154 additions
and
262 deletions
+154
-262
msc.c
dlls/dbghelp/msc.c
+24
-23
mscvpdb.h
include/wine/mscvpdb.h
+99
-22
cvinclude.h
tools/winedump/cvinclude.h
+0
-187
debug.c
tools/winedump/debug.c
+31
-30
No files found.
dlls/dbghelp/msc.c
View file @
bbef1cbd
...
...
@@ -2295,34 +2295,35 @@ BOOL pdb_fetch_file_info(struct pdb_lookup* pdb_lookup)
static
BOOL
codeview_process_info
(
const
struct
process
*
pcs
,
const
struct
msc_debug_info
*
msc_dbg
)
{
const
CODEVIEW_HEADER_NBxx
*
cv
=
(
const
CODEVIEW_HEADER_NBxx
*
)
msc_dbg
->
root
;
const
DWORD
*
signature
=
(
const
DWORD
*
)
msc_dbg
->
root
;
BOOL
ret
=
FALSE
;
struct
pdb_lookup
pdb_lookup
;
TRACE
(
"Processing signature %.4s
\n
"
,
(
const
char
*
)
&
cv
->
dwS
ignature
);
TRACE
(
"Processing signature %.4s
\n
"
,
(
const
char
*
)
s
ignature
);
switch
(
cv
->
dwS
ignature
)
switch
(
*
s
ignature
)
{
case
CODEVIEW_NB09_SIG
:
case
CODEVIEW_NB11_SIG
:
{
const
CV_DIRECTORY_HEADER
*
hdr
=
(
const
CV_DIRECTORY_HEADER
*
)(
msc_dbg
->
root
+
cv
->
lfoDirectory
);
const
CV_DIRECTORY_ENTRY
*
ent
;
const
CV_DIRECTORY_ENTRY
*
prev
;
const
CV_DIRECTORY_ENTRY
*
next
;
const
OMFSignature
*
cv
=
(
const
OMFSignature
*
)
msc_dbg
->
root
;
const
OMFDirHeader
*
hdr
=
(
const
OMFDirHeader
*
)(
msc_dbg
->
root
+
cv
->
filepos
);
const
OMFDirEntry
*
ent
;
const
OMFDirEntry
*
prev
;
const
OMFDirEntry
*
next
;
unsigned
int
i
;
codeview_init_basic_types
(
msc_dbg
->
module
);
for
(
i
=
0
;
i
<
hdr
->
cDir
;
i
++
)
{
ent
=
(
const
CV_DIRECTORY_ENTRY
*
)((
const
BYTE
*
)
hdr
+
hdr
->
cbDirHeader
+
i
*
hdr
->
cbDirEntry
);
if
(
ent
->
subs
ection
==
sstGlobalTypes
)
ent
=
(
const
OMFDirEntry
*
)((
const
BYTE
*
)
hdr
+
hdr
->
cbDirHeader
+
i
*
hdr
->
cbDirEntry
);
if
(
ent
->
SubS
ection
==
sstGlobalTypes
)
{
const
CV_ENTRY_GLOBAL_TYPES
*
types
;
const
OMFGlobalTypes
*
types
;
struct
codeview_type_parse
ctp
;
types
=
(
const
CV_ENTRY_GLOBAL_TYPES
*
)(
msc_dbg
->
root
+
ent
->
lfo
);
types
=
(
const
OMFGlobalTypes
*
)(
msc_dbg
->
root
+
ent
->
lfo
);
ctp
.
module
=
msc_dbg
->
module
;
ctp
.
offset
=
(
const
DWORD
*
)(
types
+
1
);
ctp
.
num
=
types
->
cTypes
;
...
...
@@ -2337,15 +2338,15 @@ static BOOL codeview_process_info(const struct process* pcs,
}
}
ent
=
(
const
CV_DIRECTORY_ENTRY
*
)((
const
BYTE
*
)
hdr
+
hdr
->
cbDirHeader
);
ent
=
(
const
OMFDirEntry
*
)((
const
BYTE
*
)
hdr
+
hdr
->
cbDirHeader
);
for
(
i
=
0
;
i
<
hdr
->
cDir
;
i
++
,
ent
=
next
)
{
next
=
(
i
==
hdr
->
cDir
-
1
)
?
NULL
:
(
const
CV_DIRECTORY_ENTRY
*
)((
const
BYTE
*
)
ent
+
hdr
->
cbDirEntry
);
(
const
OMFDirEntry
*
)((
const
BYTE
*
)
ent
+
hdr
->
cbDirEntry
);
prev
=
(
i
==
0
)
?
NULL
:
(
const
CV_DIRECTORY_ENTRY
*
)((
const
BYTE
*
)
ent
-
hdr
->
cbDirEntry
);
(
const
OMFDirEntry
*
)((
const
BYTE
*
)
ent
-
hdr
->
cbDirEntry
);
if
(
ent
->
subs
ection
==
sstAlignSym
)
if
(
ent
->
SubS
ection
==
sstAlignSym
)
{
/*
* Check the next and previous entry. If either is a
...
...
@@ -2357,13 +2358,13 @@ static BOOL codeview_process_info(const struct process* pcs,
struct
codeview_linetab
*
linetab
=
NULL
;
if
(
next
&&
next
->
iMod
==
ent
->
iMod
&&
next
->
subs
ection
==
sstSrcModule
)
next
->
SubS
ection
==
sstSrcModule
)
linetab
=
codeview_snarf_linetab
(
msc_dbg
->
module
,
msc_dbg
->
root
+
next
->
lfo
,
next
->
cb
,
TRUE
);
if
(
prev
&&
prev
->
iMod
==
ent
->
iMod
&&
prev
->
subs
ection
==
sstSrcModule
)
prev
->
SubS
ection
==
sstSrcModule
)
linetab
=
codeview_snarf_linetab
(
msc_dbg
->
module
,
msc_dbg
->
root
+
prev
->
lfo
,
prev
->
cb
,
TRUE
);
...
...
@@ -2387,7 +2388,7 @@ static BOOL codeview_process_info(const struct process* pcs,
case
CODEVIEW_NB10_SIG
:
{
const
CODEVIEW_PDB_DATA
*
pdb
=
(
const
CODEVIEW_PDB_DATA
*
)
(
cv
+
1
)
;
const
CODEVIEW_PDB_DATA
*
pdb
=
(
const
CODEVIEW_PDB_DATA
*
)
msc_dbg
->
root
;
pdb_lookup
.
filename
=
pdb
->
name
;
pdb_lookup
.
kind
=
PDB_JG
;
pdb_lookup
.
u
.
jg
.
timestamp
=
pdb
->
timestamp
;
...
...
@@ -2398,7 +2399,7 @@ static BOOL codeview_process_info(const struct process* pcs,
}
case
CODEVIEW_RSDS_SIG
:
{
const
CODEVIEW_HEADER_RSDS
*
rsds
=
(
const
CODEVIEW_HEADER_
RSDS
*
)
msc_dbg
->
root
;
const
OMFSignatureRSDS
*
rsds
=
(
const
OMFSignature
RSDS
*
)
msc_dbg
->
root
;
TRACE
(
"Got RSDS type of PDB file: guid=%s unk=%08x name=%s
\n
"
,
wine_dbgstr_guid
(
&
rsds
->
guid
),
rsds
->
unknown
,
rsds
->
name
);
...
...
@@ -2411,14 +2412,14 @@ static BOOL codeview_process_info(const struct process* pcs,
break
;
}
default:
ERR
(
"Unknown CODEVIEW signature %
08X
in module %s
\n
"
,
cv
->
dwS
ignature
,
msc_dbg
->
module
->
module
.
ModuleName
);
ERR
(
"Unknown CODEVIEW signature %
.4s
in module %s
\n
"
,
(
const
char
*
)
s
ignature
,
msc_dbg
->
module
->
module
.
ModuleName
);
break
;
}
if
(
ret
)
{
msc_dbg
->
module
->
module
.
CVSig
=
cv
->
dwS
ignature
;
memcpy
(
msc_dbg
->
module
->
module
.
CVData
,
cv
,
msc_dbg
->
module
->
module
.
CVSig
=
*
s
ignature
;
memcpy
(
msc_dbg
->
module
->
module
.
CVData
,
msc_dbg
->
root
,
sizeof
(
msc_dbg
->
module
->
module
.
CVData
));
}
return
ret
;
...
...
include/wine/mscvpdb.h
View file @
bbef1cbd
...
...
@@ -1565,65 +1565,70 @@ extern BOOL coff_process_info(const struct msc_debug_info* msc_dbg);
#define sstFileIndex 0x133
#define sstStaticSym 0x134
typedef
struct
_CODEVIEW_HEADER_NBxx
/* overall structure information */
typedef
struct
OMFSignature
{
DWORD
dwSignature
;
DWORD
lfoDirectory
;
}
CODEVIEW_HEADER_NBxx
,
*
PCODEVIEW_HEADER_NBxx
;
char
Signature
[
4
]
;
long
filepos
;
}
OMFSignature
;
typedef
struct
_CODEVIEW_HEADER_
RSDS
typedef
struct
OMFSignature
RSDS
{
DWORD
dwSignature
;
char
Signature
[
4
]
;
GUID
guid
;
DWORD
unknown
;
CHAR
name
[
1
];
}
CODEVIEW_HEADER_RSDS
,
*
PCODEVIEW_HEADER_
RSDS
;
}
OMFSignature
RSDS
;
typedef
struct
_CODEVIEW_PDB_DATA
{
char
Signature
[
4
];
long
filepos
;
DWORD
timestamp
;
DWORD
unknown
;
CHAR
name
[
1
];
}
CODEVIEW_PDB_DATA
,
*
PCODEVIEW_PDB_DATA
;
typedef
struct
_CV_DIRECTORY_HEADER
typedef
struct
OMFDirHeader
{
WORD
cbDirHeader
;
WORD
cbDirEntry
;
DWORD
cDir
;
DWORD
lfoNextDir
;
DWORD
flags
;
}
CV_DIRECTORY_HEADER
,
*
PCV_DIRECTORY_HEADER
;
}
OMFDirHeader
;
typedef
struct
_CV_DIRECTORY_ENTRY
typedef
struct
OMFDirEntry
{
WORD
subs
ection
;
WORD
SubS
ection
;
WORD
iMod
;
DWORD
lfo
;
DWORD
cb
;
}
CV_DIRECTORY_ENTRY
,
*
PCV_DIRECTORY_ENTRY
;
}
OMFDirEntry
;
typedef
struct
_CV_ENTRY_MODULE_SEGINFO
/* sstModule subsection */
typedef
struct
OMFSegDesc
{
WORD
s
eg
;
WORD
S
eg
;
WORD
pad
;
DWORD
offset
;
DWORD
Off
;
DWORD
cbSeg
;
}
CV_ENTRY_MODULE_SEGINFO
;
}
OMFSegDesc
;
typedef
struct
_CV_ENTRY_MODULE
typedef
struct
OMFModule
{
WORD
ovlNumber
;
WORD
iLib
;
WORD
cSeg
;
WORD
Style
;
char
Style
[
2
]
;
/*
CV_ENTRY_MODULE_SEGINFO
SegInfo[cSeg];
OMFSegDesc
SegInfo[cSeg];
p_string Name;
*/
}
CV_ENTRY_MODULE
;
}
OMFModule
;
typedef
struct
_CV_ENTRY_GLOBAL_TYPES
typedef
struct
OMFGlobalTypes
{
DWORD
flags
;
DWORD
cTypes
;
...
...
@@ -1631,4 +1636,76 @@ typedef struct _CV_ENTRY_GLOBAL_TYPES
DWORD offset[cTypes];
types_record[];
*/
}
CV_ENTRY_GLOBAL_TYPES
;
}
OMFGlobalTypes
;
/* sstGlobalPub section */
/* Header for symbol table */
typedef
struct
OMFSymHash
{
unsigned
short
symhash
;
unsigned
short
addrhash
;
unsigned
long
cbSymbol
;
unsigned
long
cbHSym
;
unsigned
long
cbHAddr
;
}
OMFSymHash
;
/* FIXME: to be removed (and using codeview_symbol type above)
* Symbol table entry */
typedef
struct
DATASYM32
{
unsigned
short
reclen
;
unsigned
short
rectyp
;
unsigned
long
typind
;
unsigned
long
off
;
unsigned
short
seg
;
}
DATASYM32
;
typedef
DATASYM32
PUBSYM32
;
/* sstSegMap section */
typedef
struct
OMFSegMapDesc
{
unsigned
short
flags
;
unsigned
short
ovl
;
unsigned
short
group
;
unsigned
short
frame
;
unsigned
short
iSegName
;
unsigned
short
iClassName
;
unsigned
long
offset
;
unsigned
long
cbSeg
;
}
OMFSegMapDesc
;
typedef
struct
OMFSegMap
{
unsigned
short
cSeg
;
unsigned
short
cSegLog
;
/* OMFSegMapDesc rgDesc[0];*/
}
OMFSegMap
;
/* sstSrcModule section */
typedef
struct
OMFSourceLine
{
unsigned
short
Seg
;
unsigned
short
cLnOff
;
unsigned
long
offset
[
1
];
unsigned
short
lineNbr
[
1
];
}
OMFSourceLine
;
typedef
struct
OMFSourceFile
{
unsigned
short
cSeg
;
unsigned
short
reserved
;
unsigned
long
baseSrcLn
[
1
];
unsigned
short
cFName
;
char
Name
;
}
OMFSourceFile
;
typedef
struct
OMFSourceModule
{
unsigned
short
cFile
;
unsigned
short
cSeg
;
unsigned
long
baseSrcFile
[
1
];
}
OMFSourceModule
;
tools/winedump/cvinclude.h
deleted
100644 → 0
View file @
4141eafb
/*
* CodeView 4 Debug format - declarations
*
* (based on cvinfo.h and cvexefmt.h from the Win32 SDK)
*
* Copyright 2000 John R. Sheets for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define sstModule 0x120
#define sstAlignSym 0x125
#define sstSrcModule 0x127
#define sstLibraries 0x128
#define sstGlobalSym 0x129
#define sstGlobalPub 0x12a
#define sstGlobalTypes 0x12b
#define sstSegMap 0x12d
#define sstFileIndex 0x133
#define sstStaticSym 0x134
#if 0
/* Old, crusty value */
#define S_PUB32 0x0203
#endif
#define S_PUB32 0x1009
#include "pshpack1.h"
/*
* CodeView headers
*/
typedef
struct
OMFSignature
{
char
Signature
[
4
];
long
filepos
;
}
OMFSignature
;
typedef
struct
OMFDirHeader
{
unsigned
short
cbDirHeader
;
unsigned
short
cbDirEntry
;
unsigned
long
cDir
;
long
lfoNextDir
;
unsigned
long
flags
;
}
OMFDirHeader
;
typedef
struct
OMFDirEntry
{
unsigned
short
SubSection
;
unsigned
short
iMod
;
long
lfo
;
unsigned
long
cb
;
}
OMFDirEntry
;
/*
* sstModule subsection
*/
typedef
struct
OMFSegDesc
{
unsigned
short
Seg
;
unsigned
short
pad
;
unsigned
long
Off
;
unsigned
long
cbSeg
;
}
OMFSegDesc
;
/* Must chop off the OMFSegDesc* field, because we need to write this
* struct out to a file. If we write the whole struct out, we'll end up
* with (*OMFSegDesc), not (OMFSegDesc). See OMFModuleFull.
*/
typedef
struct
OMFModule
{
unsigned
short
ovlNumber
;
unsigned
short
iLib
;
unsigned
short
cSeg
;
char
Style
[
2
];
}
OMFModule
;
/* Full version, with memory pointers, too. Use OMFModule for writing out to
* a file, and OMFModuleFull for reading. If offsetof() were available, we
* could use that instead.
*/
typedef
struct
OMFModuleFull
{
unsigned
short
ovlNumber
;
unsigned
short
iLib
;
unsigned
short
cSeg
;
char
Style
[
2
];
OMFSegDesc
*
SegInfo
;
char
*
Name
;
}
OMFModuleFull
;
/*
* sstGlobalPub section
*/
/* Header for symbol table.
*/
typedef
struct
OMFSymHash
{
unsigned
short
symhash
;
unsigned
short
addrhash
;
unsigned
long
cbSymbol
;
unsigned
long
cbHSym
;
unsigned
long
cbHAddr
;
}
OMFSymHash
;
/* Symbol table entry.
*/
typedef
struct
DATASYM32
{
unsigned
short
reclen
;
unsigned
short
rectyp
;
unsigned
long
typind
;
unsigned
long
off
;
unsigned
short
seg
;
}
DATASYM32
;
typedef
DATASYM32
PUBSYM32
;
/*
* sstSegMap section
*/
typedef
struct
OMFSegMapDesc
{
unsigned
short
flags
;
unsigned
short
ovl
;
unsigned
short
group
;
unsigned
short
frame
;
unsigned
short
iSegName
;
unsigned
short
iClassName
;
unsigned
long
offset
;
unsigned
long
cbSeg
;
}
OMFSegMapDesc
;
typedef
struct
OMFSegMap
{
unsigned
short
cSeg
;
unsigned
short
cSegLog
;
/* OMFSegMapDesc rgDesc[0];*/
}
OMFSegMap
;
/*
* sstSrcModule section
*/
typedef
struct
OMFSourceLine
{
unsigned
short
Seg
;
unsigned
short
cLnOff
;
unsigned
long
offset
[
1
];
unsigned
short
lineNbr
[
1
];
}
OMFSourceLine
;
typedef
struct
OMFSourceFile
{
unsigned
short
cSeg
;
unsigned
short
reserved
;
unsigned
long
baseSrcLn
[
1
];
unsigned
short
cFName
;
char
Name
;
}
OMFSourceFile
;
typedef
struct
OMFSourceModule
{
unsigned
short
cFile
;
unsigned
short
cSeg
;
unsigned
long
baseSrcFile
[
1
];
}
OMFSourceModule
;
tools/winedump/debug.c
View file @
bbef1cbd
...
...
@@ -44,7 +44,6 @@
#include "windef.h"
#include "winbase.h"
#include "winedump.h"
#include "cvinclude.h"
#include "wine/mscvpdb.h"
/*
...
...
@@ -99,8 +98,8 @@
* (OMFDirHeader.cDir)
*/
extern
const
IMAGE_NT_HEADERS
*
PE_nt_headers
;
static
const
void
*
cv_base
/* = 0 */
;
extern
const
IMAGE_NT_HEADERS
*
PE_nt_headers
;
static
const
void
*
cv_base
/* = 0 */
;
static
int
dump_cv_sst_module
(
const
OMFDirEntry
*
omfde
)
{
...
...
@@ -124,7 +123,7 @@ static int dump_cv_sst_module(const OMFDirEntry* omfde)
for
(
i
=
0
;
i
<
module
->
cSeg
;
i
++
)
{
printf
(
" segment #%2d: offset = [0x%8
lx], size = [0x%8l
x]
\n
"
,
printf
(
" segment #%2d: offset = [0x%8
x], size = [0x%8
x]
\n
"
,
segDesc
->
Seg
,
segDesc
->
Off
,
segDesc
->
cbSeg
);
segDesc
++
;
}
...
...
@@ -376,8 +375,8 @@ static void dump_codeview_all_modules(const OMFDirHeader *omfdh)
printf
(
"Module #%2d (%p)
\n
"
,
i
+
1
,
&
dirEntry
[
i
]);
printf
(
" SubSection: %04X (%s)
\n
"
,
dirEntry
[
i
].
SubSection
,
str
);
printf
(
" iMod: %d
\n
"
,
dirEntry
[
i
].
iMod
);
printf
(
" lfo: %
l
d
\n
"
,
dirEntry
[
i
].
lfo
);
printf
(
" cb: %
l
u
\n
"
,
dirEntry
[
i
].
cb
);
printf
(
" lfo: %d
\n
"
,
dirEntry
[
i
].
lfo
);
printf
(
" cb: %u
\n
"
,
dirEntry
[
i
].
cb
);
switch
(
dirEntry
[
i
].
SubSection
)
{
...
...
@@ -402,8 +401,9 @@ static void dump_codeview_all_modules(const OMFDirHeader *omfdh)
static
void
dump_codeview_headers
(
unsigned
long
base
,
unsigned
long
len
)
{
const
OMFDirHeader
*
dirHeader
;
const
OMFSignature
*
signature
;
const
char
*
signature
;
const
OMFDirEntry
*
dirEntry
;
const
OMFSignature
*
sig
;
unsigned
i
;
int
modulecount
=
0
,
alignsymcount
=
0
,
srcmodulecount
=
0
,
librariescount
=
0
;
int
globalsymcount
=
0
,
globalpubcount
=
0
,
globaltypescount
=
0
;
...
...
@@ -415,50 +415,51 @@ static void dump_codeview_headers(unsigned long base, unsigned long len)
signature
=
cv_base
;
printf
(
" CodeView Data
\n
"
);
printf
(
" Signature: %.4s
\n
"
,
signature
);
printf
(
" Signature: %.4s
\n
"
,
signature
->
Signature
);
printf
(
" Filepos: 0x%08lX
\n
"
,
signature
->
filepos
);
if
(
memcmp
(
signature
->
Signature
,
"NB10"
,
4
)
==
0
)
if
(
memcmp
(
signature
,
"NB10"
,
4
)
==
0
)
{
const
CODEVIEW_PDB_DATA
*
pdb_data
;
pdb_data
=
(
const
void
*
)
(
signature
+
1
)
;
pdb_data
=
(
const
void
*
)
cv_base
;
printf
(
" TimeStamp: %08X (%s)
\n
"
,
printf
(
" Filepos: 0x%08lX
\n
"
,
pdb_data
->
filepos
);
printf
(
" TimeStamp: %08X (%s)
\n
"
,
pdb_data
->
timestamp
,
get_time_str
(
pdb_data
->
timestamp
));
printf
(
"
Dunno:
%08X
\n
"
,
pdb_data
->
unknown
);
printf
(
"
Filename:
%s
\n
"
,
pdb_data
->
name
);
printf
(
"
Dunno:
%08X
\n
"
,
pdb_data
->
unknown
);
printf
(
"
Filename:
%s
\n
"
,
pdb_data
->
name
);
return
;
}
if
(
memcmp
(
signature
->
Signature
,
"RSDS"
,
4
)
==
0
)
if
(
memcmp
(
signature
,
"RSDS"
,
4
)
==
0
)
{
const
CODEVIEW_HEADER_RSDS
*
rsds_data
;
char
guid_str
[
40
];
const
OMFSignatureRSDS
*
rsds_data
;
char
guid_str
[
40
];
rsds_data
=
(
const
void
*
)
signature
;
printf
(
" Signature: %08X
\n
"
,
rsds_data
->
dwSignature
);
printf
(
" Guid: %s
\n
"
,
rsds_data
=
(
const
void
*
)
cv_base
;
printf
(
" Guid: %s
\n
"
,
guid_to_string
(
&
rsds_data
->
guid
,
guid_str
,
sizeof
(
guid_str
)));
printf
(
"
Dunno:
%08X
\n
"
,
rsds_data
->
unknown
);
printf
(
"
Filename:
%s
\n
"
,
rsds_data
->
name
);
printf
(
"
Dunno:
%08X
\n
"
,
rsds_data
->
unknown
);
printf
(
"
Filename:
%s
\n
"
,
rsds_data
->
name
);
return
;
}
if
(
memcmp
(
signature
->
Signature
,
"NB09"
,
4
)
!=
0
&&
memcmp
(
signature
->
S
ignature
,
"NB11"
,
4
)
!=
0
)
if
(
memcmp
(
signature
,
"NB09"
,
4
)
!=
0
&&
memcmp
(
s
ignature
,
"NB11"
,
4
)
!=
0
)
{
printf
(
"Unsupported signature (%.4s), aborting
\n
"
,
signature
->
Signature
);
printf
(
"Unsupported signature (%.4s), aborting
\n
"
,
signature
);
return
;
}
dirHeader
=
PRD
(
Offset
(
cv_base
)
+
signature
->
filepos
,
sizeof
(
OMFDirHeader
));
sig
=
cv_base
;
printf
(
" Filepos: 0x%08lX
\n
"
,
sig
->
filepos
);
dirHeader
=
PRD
(
Offset
(
cv_base
)
+
sig
->
filepos
,
sizeof
(
OMFDirHeader
));
if
(
!
dirHeader
)
{
printf
(
"Can't get debug header, aborting
\n
"
);
return
;}
printf
(
" Size of header: 0x%4X
\n
"
,
dirHeader
->
cbDirHeader
);
printf
(
" Size per entry: 0x%4X
\n
"
,
dirHeader
->
cbDirEntry
);
printf
(
" # of entries: 0x%8
lX (%l
d)
\n
"
,
dirHeader
->
cDir
,
dirHeader
->
cDir
);
printf
(
" Offset to NextDir: 0x%8
l
X
\n
"
,
dirHeader
->
lfoNextDir
);
printf
(
" Flags: 0x%8
l
X
\n
"
,
dirHeader
->
flags
);
printf
(
" # of entries: 0x%8
X (%
d)
\n
"
,
dirHeader
->
cDir
,
dirHeader
->
cDir
);
printf
(
" Offset to NextDir: 0x%8X
\n
"
,
dirHeader
->
lfoNextDir
);
printf
(
" Flags: 0x%8X
\n
"
,
dirHeader
->
flags
);
if
(
!
dirHeader
->
cDir
)
return
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment