Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
10e8ed07
Commit
10e8ed07
authored
Jul 04, 2004
by
Eric Pouech
Committed by
Alexandre Julliard
Jul 04, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- enhanced 'info share' output
- made use of new dbghelp pure ELF symbol lookup
parent
6e2bca34
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
10 deletions
+39
-10
info.c
programs/winedbg/info.c
+8
-8
symbol.c
programs/winedbg/symbol.c
+30
-0
winedbg.c
programs/winedbg/winedbg.c
+1
-2
No files found.
programs/winedbg/info.c
View file @
10e8ed07
...
...
@@ -120,6 +120,7 @@ static const char* get_symtype_str(SYM_TYPE st)
{
switch
(
st
)
{
case
-
1
:
return
"
\\
"
;
default:
case
SymNone
:
return
"--none--"
;
case
SymCoff
:
return
"COFF"
;
...
...
@@ -129,6 +130,7 @@ static const char* get_symtype_str(SYM_TYPE st)
case
SymDeferred
:
return
"Deferred"
;
case
SymSym
:
return
"Sym"
;
case
SymDia
:
return
"DIA"
;
case
NumSymTypes
:
return
"Stabs"
;
}
}
...
...
@@ -139,11 +141,11 @@ struct info_module
unsigned
num_used
;
};
static
void
module_print_info
(
const
IMAGEHLP_MODULE
*
mi
)
static
void
module_print_info
(
const
IMAGEHLP_MODULE
*
mi
,
SYM_TYPE
st
)
{
dbg_printf
(
"0x%08lx-%08lx
\t
%-16s%s
\n
"
,
mi
->
BaseOfImage
,
mi
->
BaseOfImage
+
mi
->
ImageSize
,
get_symtype_str
(
mi
->
SymType
),
mi
->
ModuleName
);
get_symtype_str
(
st
),
mi
->
ModuleName
);
}
static
int
module_compare
(
const
void
*
p1
,
const
void
*
p2
)
...
...
@@ -172,7 +174,6 @@ static BOOL CALLBACK info_mod_cb(PSTR mod_name, DWORD base, void* ctx)
im
->
mi
[
im
->
num_used
].
SizeOfStruct
=
sizeof
(
im
->
mi
[
im
->
num_used
]);
if
(
SymGetModuleInfo
(
dbg_curr_process
->
handle
,
base
,
&
im
->
mi
[
im
->
num_used
]))
{
module_print_info
(
&
im
->
mi
[
im
->
num_used
]);
im
->
num_used
++
;
}
return
TRUE
;
...
...
@@ -202,7 +203,7 @@ void info_win32_module(DWORD base)
dbg_printf
(
"'0x%08lx' is not a valid module address
\n
"
,
base
);
return
;
}
module_print_info
(
&
mi
);
module_print_info
(
&
mi
,
mi
.
SymType
);
}
else
{
...
...
@@ -229,14 +230,14 @@ void info_win32_module(DWORD base)
if
(
strstr
(
im
.
mi
[
i
].
ModuleName
,
"<elf>"
))
{
dbg_printf
(
"ELF
\t
"
);
module_print_info
(
&
im
.
mi
[
i
]);
module_print_info
(
&
im
.
mi
[
i
]
,
(
im
.
mi
[
i
].
SymType
==
SymDia
)
?
NumSymTypes
:
im
.
mi
[
i
].
SymType
);
/* print all modules embedded in this one */
for
(
j
=
0
;
j
<
im
.
num_used
;
j
++
)
{
if
(
!
strstr
(
im
.
mi
[
j
].
ModuleName
,
"<elf>"
)
&&
module_is_container
(
&
im
.
mi
[
i
],
&
im
.
mi
[
j
]))
{
dbg_printf
(
"
\\
-PE
\t
"
);
module_print_info
(
&
im
.
mi
[
j
]);
module_print_info
(
&
im
.
mi
[
j
]
,
-
1
);
}
}
}
...
...
@@ -253,7 +254,7 @@ void info_win32_module(DWORD base)
dbg_printf
(
"ELF
\t
"
);
else
dbg_printf
(
"PE
\t
"
);
module_print_info
(
&
im
.
mi
[
i
]);
module_print_info
(
&
im
.
mi
[
i
]
,
im
.
mi
[
i
].
SymType
);
}
}
HeapFree
(
GetProcessHeap
(),
0
,
im
.
mi
);
...
...
@@ -704,7 +705,6 @@ void info_wine_dbg_channel(BOOL turn_on, const char* chnl, const char* name)
if
(
symbol_get_lvalue
(
"first_dll"
,
-
1
,
&
lvalue
,
FALSE
)
!=
sglv_found
)
{
dbg_printf
(
"Can't get first_dll symbol
\n
"
);
return
;
}
addr
=
memory_to_linear_addr
(
&
lvalue
.
addr
);
...
...
programs/winedbg/symbol.c
View file @
10e8ed07
...
...
@@ -204,6 +204,7 @@ enum sym_get_lval symbol_get_lvalue(const char* name, const int lineno,
char
tmp
[
sizeof
(
SYMBOL_INFO
)
+
256
];
SYMBOL_INFO
*
si
=
(
SYMBOL_INFO
*
)
tmp
;
char
buffer
[
512
];
DWORD
opt
;
if
(
strlen
(
name
)
+
4
>
sizeof
(
buffer
))
{
...
...
@@ -223,16 +224,27 @@ enum sym_get_lval symbol_get_lvalue(const char* name, const int lineno,
buffer
[
1
]
=
'!'
;
strcpy
(
&
buffer
[
2
],
name
);
/* this is a wine specific options to return also ELF modules in the
* enumeration
*/
SymSetOptions
((
opt
=
SymGetOptions
())
|
0x40000000
);
if
(
!
SymEnumSymbols
(
dbg_curr_process
->
handle
,
0
,
buffer
,
sgv_cb
,
(
void
*
)
&
sgv
))
{
SymSetOptions
(
opt
);
return
sglv_unknown
;
}
if
(
!
sgv
.
num
&&
(
name
[
0
]
!=
'_'
))
{
buffer
[
2
]
=
'_'
;
strcpy
(
&
buffer
[
3
],
name
);
if
(
!
SymEnumSymbols
(
dbg_curr_process
->
handle
,
0
,
buffer
,
sgv_cb
,
(
void
*
)
&
sgv
))
{
SymSetOptions
(
opt
);
return
sglv_unknown
;
}
}
SymSetOptions
(
opt
);
/* now grab local symbols */
si
->
SizeOfStruct
=
sizeof
(
*
si
);
...
...
@@ -426,6 +438,7 @@ BOOL symbol_get_line(const char* filename, const char* name, IMAGEHLP_LINE* line
{
struct
sgv_data
sgv
;
char
buffer
[
512
];
DWORD
opt
;
sgv
.
num
=
0
;
sgv
.
num_thunks
=
0
;
...
...
@@ -439,16 +452,27 @@ BOOL symbol_get_line(const char* filename, const char* name, IMAGEHLP_LINE* line
buffer
[
1
]
=
'!'
;
strcpy
(
&
buffer
[
2
],
name
);
/* this is a wine specific options to return also ELF modules in the
* enumeration
*/
SymSetOptions
((
opt
=
SymGetOptions
())
|
0x40000000
);
if
(
!
SymEnumSymbols
(
dbg_curr_process
->
handle
,
0
,
buffer
,
sgv_cb
,
(
void
*
)
&
sgv
))
{
SymSetOptions
(
opt
);
return
sglv_unknown
;
}
if
(
!
sgv
.
num
&&
(
name
[
0
]
!=
'_'
))
{
buffer
[
2
]
=
'_'
;
strcpy
(
&
buffer
[
3
],
name
);
if
(
!
SymEnumSymbols
(
dbg_curr_process
->
handle
,
0
,
buffer
,
sgv_cb
,
(
void
*
)
&
sgv
))
{
SymSetOptions
(
opt
);
return
sglv_unknown
;
}
}
SymSetOptions
(
opt
);
switch
(
sgv
.
num
)
{
...
...
@@ -547,6 +571,7 @@ static BOOL CALLBACK symbols_info_cb(SYMBOL_INFO* sym, ULONG size, void* ctx)
void
symbol_info
(
const
char
*
str
)
{
char
buffer
[
512
];
DWORD
opt
;
if
(
strlen
(
str
)
+
3
>=
sizeof
(
buffer
))
{
...
...
@@ -556,5 +581,10 @@ void symbol_info(const char* str)
buffer
[
0
]
=
'*'
;
buffer
[
1
]
=
'!'
;
strcpy
(
&
buffer
[
2
],
str
);
/* this is a wine specific options to return also ELF modules in the
* enumeration
*/
SymSetOptions
((
opt
=
SymGetOptions
())
|
0x40000000
);
SymEnumSymbols
(
dbg_curr_process
->
handle
,
0
,
buffer
,
symbols_info_cb
,
NULL
);
SymSetOptions
(
opt
);
}
programs/winedbg/winedbg.c
View file @
10e8ed07
...
...
@@ -42,9 +42,8 @@
* - UI
* + enable back the limited output (depth of structure printing and number of
* lines)
* + make the output as close as possible to what gdb does
* - symbol management:
* + in most of the module enumeration for symbol lookup, we don't search in
* the ELF modules (should we turn wine extented flag for ELF modules on ?)
* + symbol table loading is broken
* - type management:
* + some bits of internal types are missing (like type casts and the address
...
...
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