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
46684a9f
Commit
46684a9f
authored
Feb 21, 2007
by
Eric Pouech
Committed by
Alexandre Julliard
Feb 22, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dbghelp: Moved ELF module loading interfaces to Unicode.
The core the code remains ANSI, as all the information is stored as ANSI.
parent
6a859fb0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
20 additions
and
30 deletions
+20
-30
dbghelp_private.h
dlls/dbghelp/dbghelp_private.h
+1
-6
elf_module.c
dlls/dbghelp/elf_module.c
+18
-12
module.c
dlls/dbghelp/module.c
+1
-12
No files found.
dlls/dbghelp/dbghelp_private.h
View file @
46684a9f
...
...
@@ -422,7 +422,7 @@ extern BOOL elf_fetch_file_info(const char* name, DWORD* base, DWORD* si
struct
elf_file_map
;
extern
BOOL
elf_load_debug_info
(
struct
module
*
module
,
struct
elf_file_map
*
fmap
);
extern
struct
module
*
elf_load_module
(
struct
process
*
pcs
,
const
char
*
name
,
unsigned
long
);
elf_load_module
(
struct
process
*
pcs
,
const
WCHAR
*
name
,
unsigned
long
);
extern
BOOL
elf_read_wine_loader_dbg_info
(
struct
process
*
pcs
);
extern
BOOL
elf_synchronize_module_list
(
struct
process
*
pcs
);
struct
elf_thunk_area
;
...
...
@@ -449,11 +449,6 @@ extern struct module*
unsigned
long
addr
,
unsigned
long
size
,
unsigned
long
stamp
,
unsigned
long
checksum
);
extern
struct
module
*
module_newA
(
struct
process
*
pcs
,
const
char
*
name
,
enum
module_type
type
,
BOOL
virtual
,
unsigned
long
addr
,
unsigned
long
size
,
unsigned
long
stamp
,
unsigned
long
checksum
);
extern
struct
module
*
module_get_container
(
const
struct
process
*
pcs
,
const
struct
module
*
inner
);
extern
struct
module
*
...
...
dlls/dbghelp/elf_module.c
View file @
46684a9f
...
...
@@ -1063,7 +1063,7 @@ static BOOL elf_load_debug_info_from_map(struct module* module,
dbg_link
=
(
const
BYTE
*
)
elf_map_section
(
fmap
,
debuglink_sect
);
if
(
dbg_link
!=
ELF_NO_MAP
)
{
lret
=
elf_debuglink_parse
(
module
,
pool
,
ht_symtab
,
dbg_link
);
lret
=
elf_debuglink_parse
(
module
,
pool
,
ht_symtab
,
dbg_link
);
if
(
!
lret
)
WARN
(
"Couldn't load linked debug file for %s
\n
"
,
debugstr_w
(
module
->
module
.
ModuleName
));
...
...
@@ -1111,7 +1111,7 @@ BOOL elf_load_debug_info(struct module* module, struct elf_file_map* fmap)
char
LoadedImageName
[
MAX_PATH
];
fmap
=
&
my_fmap
;
WideCharToMultiByte
(
CP_
A
CP
,
0
,
module
->
module
.
LoadedImageName
,
-
1
,
WideCharToMultiByte
(
CP_
UNIX
CP
,
0
,
module
->
module
.
LoadedImageName
,
-
1
,
LoadedImageName
,
MAX_PATH
,
NULL
,
NULL
);
ret
=
elf_map_file
(
LoadedImageName
,
fmap
);
}
...
...
@@ -1209,12 +1209,14 @@ static BOOL elf_load_file(struct process* pcs, const char* filename,
if
(
elf_info
->
flags
&
ELF_INFO_MODULE
)
{
WCHAR
wfilename
[
MAX_PATH
];
struct
elf_module_info
*
elf_module_info
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
struct
elf_module_info
));
if
(
!
elf_module_info
)
goto
leave
;
elf_info
->
module
=
module_newA
(
pcs
,
filename
,
DMT_ELF
,
FALSE
,
(
load_offset
)
?
load_offset
:
fmap
.
elf_start
,
fmap
.
elf_size
,
0
,
calc_crc32
(
&
fmap
));
MultiByteToWideChar
(
CP_UNIXCP
,
0
,
filename
,
-
1
,
wfilename
,
sizeof
(
wfilename
)
/
sizeof
(
WCHAR
));
elf_info
->
module
=
module_new
(
pcs
,
wfilename
,
DMT_ELF
,
FALSE
,
(
load_offset
)
?
load_offset
:
fmap
.
elf_start
,
fmap
.
elf_size
,
0
,
calc_crc32
(
&
fmap
));
if
(
!
elf_info
->
module
)
{
HeapFree
(
GetProcessHeap
(),
0
,
elf_module_info
);
...
...
@@ -1508,7 +1510,7 @@ struct elf_load
{
struct
process
*
pcs
;
struct
elf_info
elf_info
;
c
onst
char
*
name
;
c
har
name
[
MAX_PATH
]
;
BOOL
ret
;
};
...
...
@@ -1543,23 +1545,26 @@ static BOOL elf_load_cb(const char* name, unsigned long addr, void* user)
* Also, find module real name and load address from
* the real loaded modules list in pcs address space
*/
struct
module
*
elf_load_module
(
struct
process
*
pcs
,
const
char
*
name
,
unsigned
long
addr
)
struct
module
*
elf_load_module
(
struct
process
*
pcs
,
const
WCHAR
*
name
,
unsigned
long
addr
)
{
struct
elf_load
el
;
TRACE
(
"(%p %s %08lx)
\n
"
,
pcs
,
name
,
addr
);
TRACE
(
"(%p %s %08lx)
\n
"
,
pcs
,
debugstr_w
(
name
)
,
addr
);
el
.
elf_info
.
flags
=
ELF_INFO_MODULE
;
el
.
ret
=
FALSE
;
if
(
pcs
->
dbg_hdr_addr
)
/* we're debugging a life target */
{
const
WCHAR
*
ptr
;
el
.
pcs
=
pcs
;
/* do only the lookup from the filename, not the path (as we lookup module
* name in the process' loaded module list)
*/
el
.
name
=
strrchr
(
name
,
'/'
);
if
(
!
el
.
name
++
)
el
.
name
=
name
;
ptr
=
strrchrW
(
name
,
'/'
);
if
(
!
ptr
++
)
ptr
=
name
;
WideCharToMultiByte
(
CP_UNIXCP
,
0
,
ptr
,
-
1
,
el
.
name
,
sizeof
(
el
.
name
),
NULL
,
NULL
);
el
.
ret
=
FALSE
;
if
(
!
elf_enum_modules_internal
(
pcs
,
NULL
,
elf_load_cb
,
&
el
))
...
...
@@ -1567,7 +1572,8 @@ struct module* elf_load_module(struct process* pcs, const char* name, unsigned
}
else
if
(
addr
)
{
el
.
ret
=
elf_search_and_load_file
(
pcs
,
name
,
addr
,
&
el
.
elf_info
);
WideCharToMultiByte
(
CP_UNIXCP
,
0
,
name
,
-
1
,
el
.
name
,
sizeof
(
el
.
name
),
NULL
,
NULL
);
el
.
ret
=
elf_search_and_load_file
(
pcs
,
el
.
name
,
addr
,
&
el
.
elf_info
);
}
if
(
!
el
.
ret
)
return
NULL
;
assert
(
el
.
elf_info
.
module
);
...
...
@@ -1597,7 +1603,7 @@ BOOL elf_enum_modules(HANDLE hProc, elf_enum_modules_cb cb, void* user)
return
FALSE
;
}
struct
module
*
elf_load_module
(
struct
process
*
pcs
,
const
char
*
name
,
unsigned
long
addr
)
struct
module
*
elf_load_module
(
struct
process
*
pcs
,
const
WCHAR
*
name
,
unsigned
long
addr
)
{
return
NULL
;
}
...
...
dlls/dbghelp/module.c
View file @
46684a9f
...
...
@@ -177,17 +177,6 @@ struct module* module_new(struct process* pcs, const WCHAR* name,
return
module
;
}
struct
module
*
module_newA
(
struct
process
*
pcs
,
const
char
*
name
,
enum
module_type
type
,
BOOL
virtual
,
unsigned
long
mod_addr
,
unsigned
long
size
,
unsigned
long
stamp
,
unsigned
long
checksum
)
{
WCHAR
wname
[
MAX_PATH
];
MultiByteToWideChar
(
CP_ACP
,
0
,
name
,
-
1
,
wname
,
sizeof
(
wname
)
/
sizeof
(
WCHAR
));
return
module_new
(
pcs
,
wname
,
type
,
virtual
,
mod_addr
,
size
,
stamp
,
checksum
);
}
/***********************************************************************
* module_find_by_name
*
...
...
@@ -527,7 +516,7 @@ DWORD64 WINAPI SymLoadModuleExW(HANDLE hProcess, HANDLE hFile, PCWSTR wImageNam
if
(
!
(
module
=
pe_load_module
(
pcs
,
wImageName
,
hFile
,
BaseOfDll
,
SizeOfDll
)))
{
if
(
module_get_type_by_name
(
ImageName
)
==
DMT_ELF
&&
(
module
=
elf_load_module
(
pcs
,
ImageName
,
BaseOfDll
)))
(
module
=
elf_load_module
(
pcs
,
w
ImageName
,
BaseOfDll
)))
goto
done
;
FIXME
(
"Should have successfully loaded debug information for image %s
\n
"
,
debugstr_w
(
wImageName
));
...
...
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