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
5c9c3428
Commit
5c9c3428
authored
Aug 24, 2021
by
Eric Pouech
Committed by
Alexandre Julliard
Aug 24, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winedump: Add support for dumping S_LOCAL symbol record.
Signed-off-by:
Eric Pouech
<
eric.pouech@gmail.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
0003c64e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
43 additions
and
0 deletions
+43
-0
mscvpdb.h
include/wine/mscvpdb.h
+9
-0
msc.c
tools/winedump/msc.c
+34
-0
No files found.
include/wine/mscvpdb.h
View file @
5c9c3428
...
...
@@ -1727,6 +1727,15 @@ union codeview_symbol
unsigned
short
inst_len
;
unsigned
int
index
;
}
heap_alloc_site
;
struct
{
unsigned
short
int
len
;
unsigned
short
int
id
;
cv_typ_t
symtype
;
unsigned
short
varflags
;
char
name
[
1
];
}
local_v3
;
};
#define S_COMPILE 0x0001
...
...
tools/winedump/msc.c
View file @
5c9c3428
...
...
@@ -288,6 +288,33 @@ static const char* get_funcattr(unsigned attr)
return
tmp
;
}
static
const
char
*
get_varflags
(
unsigned
flags
)
{
static
char
tmp
[
1024
];
unsigned
pos
=
0
;
if
(
!
flags
)
return
"none"
;
#define X(s) {if (pos) tmp[pos++] = ';'; strcpy(tmp + pos, s); pos += strlen(s);}
if
(
flags
&
0x0001
)
X
(
"param"
);
if
(
flags
&
0x0002
)
X
(
"addr-taken"
);
if
(
flags
&
0x0004
)
X
(
"compiler-gen"
);
if
(
flags
&
0x0008
)
X
(
"aggregated"
);
if
(
flags
&
0x0010
)
X
(
"in-aggreate"
);
if
(
flags
&
0x0020
)
X
(
"aliased"
);
if
(
flags
&
0x0040
)
X
(
"alias"
);
if
(
flags
&
0x0080
)
X
(
"retval"
);
if
(
flags
&
0x0100
)
X
(
"optimized-out"
);
if
(
flags
&
0x0200
)
X
(
"enreg-global"
);
if
(
flags
&
0x0400
)
X
(
"enreg-static"
);
if
(
flags
&
0xf800
)
pos
+=
sprintf
(
tmp
,
"unk:%x"
,
flags
&
0xf800
);
#undef X
tmp
[
pos
]
=
'\0'
;
assert
(
pos
<
sizeof
(
tmp
));
return
tmp
;
}
static
const
char
*
get_machine
(
unsigned
m
)
{
const
char
*
machine
;
...
...
@@ -1564,6 +1591,13 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
sym
->
thread_v3
.
segment
,
sym
->
thread_v3
.
offset
,
sym
->
thread_v3
.
symtype
);
break
;
case
S_LOCAL
:
printf
(
"
\t
S-Local V3 '%s' type=%x flags=%s
\n
"
,
sym
->
local_v3
.
name
,
sym
->
local_v3
.
symtype
,
get_varflags
(
sym
->
local_v3
.
varflags
));
break
;
default:
printf
(
">>> Unsupported symbol-id %x sz=%d
\n
"
,
sym
->
generic
.
id
,
sym
->
generic
.
len
+
2
);
dump_data
((
const
void
*
)
sym
,
sym
->
generic
.
len
+
2
,
" "
);
...
...
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