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
9926ca77
Commit
9926ca77
authored
Jan 24, 2011
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dbghelp: Use Dwarf debug info even when part of it is missing.
parent
f58c709b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
11 deletions
+10
-11
dwarf.c
dlls/dbghelp/dwarf.c
+10
-11
No files found.
dlls/dbghelp/dwarf.c
View file @
9926ca77
...
@@ -3174,31 +3174,29 @@ BOOL dwarf2_parse(struct module* module, unsigned long load_offset,
...
@@ -3174,31 +3174,29 @@ BOOL dwarf2_parse(struct module* module, unsigned long load_offset,
const
struct
elf_thunk_area
*
thunks
,
const
struct
elf_thunk_area
*
thunks
,
struct
image_file_map
*
fmap
)
struct
image_file_map
*
fmap
)
{
{
dwarf2_section_t
section
[
section_max
];
dwarf2_section_t
eh_frame
,
section
[
section_max
];
dwarf2_traverse_context_t
mod_ctx
;
dwarf2_traverse_context_t
mod_ctx
;
struct
image_section_map
debug_sect
,
debug_str_sect
,
debug_abbrev_sect
,
struct
image_section_map
debug_sect
,
debug_str_sect
,
debug_abbrev_sect
,
debug_line_sect
,
debug_ranges_sect
;
debug_line_sect
,
debug_ranges_sect
,
eh_frame_sect
;
BOOL
ret
=
TRUE
;
BOOL
ret
=
TRUE
;
struct
module_format
*
dwarf2_modfmt
;
struct
module_format
*
dwarf2_modfmt
;
if
(
!
dwarf2_init_section
(
&
section
[
section_debug
],
fmap
,
".debug_info"
,
&
debug_sect
))
dwarf2_init_section
(
&
eh_frame
,
fmap
,
".eh_frame"
,
&
eh_frame_sect
);
/* no Dwarf debug info here */
dwarf2_init_section
(
&
section
[
section_debug
],
fmap
,
".debug_info"
,
&
debug_sect
);
return
FALSE
;
dwarf2_init_section
(
&
section
[
section_abbrev
],
fmap
,
".debug_abbrev"
,
&
debug_abbrev_sect
);
dwarf2_init_section
(
&
section
[
section_abbrev
],
fmap
,
".debug_abbrev"
,
&
debug_abbrev_sect
);
dwarf2_init_section
(
&
section
[
section_string
],
fmap
,
".debug_str"
,
&
debug_str_sect
);
dwarf2_init_section
(
&
section
[
section_string
],
fmap
,
".debug_str"
,
&
debug_str_sect
);
dwarf2_init_section
(
&
section
[
section_line
],
fmap
,
".debug_line"
,
&
debug_line_sect
);
dwarf2_init_section
(
&
section
[
section_line
],
fmap
,
".debug_line"
,
&
debug_line_sect
);
dwarf2_init_section
(
&
section
[
section_ranges
],
fmap
,
".debug_ranges"
,
&
debug_ranges_sect
);
dwarf2_init_section
(
&
section
[
section_ranges
],
fmap
,
".debug_ranges"
,
&
debug_ranges_sect
);
if
(
section
[
section_debug
].
address
==
IMAGE_NO_MAP
||
/* to do anything useful we need either .eh_frame or .debug_info */
section
[
section_abbrev
].
address
==
IMAGE_NO_MAP
||
if
((
!
eh_frame
.
address
||
eh_frame
.
address
==
IMAGE_NO_MAP
)
&&
section
[
section_string
].
address
==
IMAGE_NO_MAP
)
(
!
section
[
section_debug
].
address
||
section
[
section_debug
].
address
==
IMAGE_NO_MAP
)
)
{
{
ret
=
FALSE
;
ret
=
FALSE
;
goto
leave
;
goto
leave
;
}
}
if
(
fmap
->
modtype
==
DMT_ELF
)
if
(
fmap
->
modtype
==
DMT_ELF
&&
debug_sect
.
fmap
)
{
{
/* debug info might have a different base address than .so file
/* debug info might have a different base address than .so file
* when elf file is prelinked after splitting off debug info
* when elf file is prelinked after splitting off debug info
...
@@ -3232,7 +3230,7 @@ BOOL dwarf2_parse(struct module* module, unsigned long load_offset,
...
@@ -3232,7 +3230,7 @@ BOOL dwarf2_parse(struct module* module, unsigned long load_offset,
*/
*/
dwarf2_init_section
(
&
dwarf2_modfmt
->
u
.
dwarf2_info
->
debug_loc
,
fmap
,
".debug_loc"
,
NULL
);
dwarf2_init_section
(
&
dwarf2_modfmt
->
u
.
dwarf2_info
->
debug_loc
,
fmap
,
".debug_loc"
,
NULL
);
dwarf2_init_section
(
&
dwarf2_modfmt
->
u
.
dwarf2_info
->
debug_frame
,
fmap
,
".debug_frame"
,
NULL
);
dwarf2_init_section
(
&
dwarf2_modfmt
->
u
.
dwarf2_info
->
debug_frame
,
fmap
,
".debug_frame"
,
NULL
);
dwarf2_
init_section
(
&
dwarf2_modfmt
->
u
.
dwarf2_info
->
eh_frame
,
fmap
,
".eh_frame"
,
NULL
)
;
dwarf2_
modfmt
->
u
.
dwarf2_info
->
eh_frame
=
eh_frame
;
while
(
mod_ctx
.
data
<
mod_ctx
.
end_data
)
while
(
mod_ctx
.
data
<
mod_ctx
.
end_data
)
{
{
...
@@ -3252,6 +3250,7 @@ leave:
...
@@ -3252,6 +3250,7 @@ leave:
image_unmap_section
(
&
debug_str_sect
);
image_unmap_section
(
&
debug_str_sect
);
image_unmap_section
(
&
debug_line_sect
);
image_unmap_section
(
&
debug_line_sect
);
image_unmap_section
(
&
debug_ranges_sect
);
image_unmap_section
(
&
debug_ranges_sect
);
if
(
!
ret
)
image_unmap_section
(
&
eh_frame_sect
);
return
ret
;
return
ret
;
}
}
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