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
34128f1a
Commit
34128f1a
authored
Jan 29, 2024
by
Eric Pouech
Committed by
Alexandre Julliard
Feb 01, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dbghelp/tests: Test SymSrvGetFileIndexInfo() on .dbg files.
Signed-off-by:
Eric Pouech
<
epouech@codeweavers.com
>
parent
27003f83
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
81 additions
and
0 deletions
+81
-0
path.c
dlls/dbghelp/tests/path.c
+81
-0
No files found.
dlls/dbghelp/tests/path.c
View file @
34128f1a
...
...
@@ -671,6 +671,34 @@ static BOOL create_test_pdb_ds(const WCHAR* pdb_name, const GUID* guid, DWORD ag
return
TRUE
;
}
static
BOOL
create_test_dbg
(
const
WCHAR
*
dbg_name
,
WORD
machine
,
DWORD
timestamp
,
DWORD
size
)
{
HANDLE
hfile
;
/* minimalistic .dbg made of a header and a DEBUG_DIRECTORY without any data */
const
IMAGE_SEPARATE_DEBUG_HEADER
header
=
{.
Signature
=
0x4944
/* DI */
,
.
Flags
=
0
,
.
Machine
=
machine
,
.
Characteristics
=
0x010E
,
.
TimeDateStamp
=
timestamp
,
.
CheckSum
=
0
,
.
ImageBase
=
0x00040000
,
.
SizeOfImage
=
size
,
.
NumberOfSections
=
0
,
.
ExportedNamesSize
=
0
,
.
DebugDirectorySize
=
sizeof
(
IMAGE_DEBUG_DIRECTORY
)};
const
IMAGE_DEBUG_DIRECTORY
debug_dir
=
{.
Characteristics
=
0
,
.
TimeDateStamp
=
timestamp
+
1
,
.
MajorVersion
=
0
,
.
MinorVersion
=
0
,
.
Type
=
IMAGE_DEBUG_TYPE_CODEVIEW
,
.
SizeOfData
=
0
,
.
AddressOfRawData
=
0
,
.
PointerToRawData
=
sizeof
(
header
)
+
header
.
NumberOfSections
*
sizeof
(
IMAGE_SECTION_HEADER
)
+
header
.
DebugDirectorySize
};
hfile
=
CreateFileW
(
dbg_name
,
GENERIC_WRITE
,
FILE_SHARE_READ
,
NULL
,
CREATE_ALWAYS
,
0
,
0
);
ok
(
hfile
!=
INVALID_HANDLE_VALUE
,
"failed to create %ls err %lu
\n
"
,
dbg_name
,
GetLastError
());
if
(
hfile
==
INVALID_HANDLE_VALUE
)
return
FALSE
;
check_write_file
(
hfile
,
&
header
,
sizeof
(
header
));
/* FIXME: 0 sections... as header.NumberOfSections */
check_write_file
(
hfile
,
&
debug_dir
,
sizeof
(
debug_dir
));
ok
(
SetFilePointer
(
hfile
,
0
,
NULL
,
FILE_CURRENT
)
==
debug_dir
.
PointerToRawData
,
"mismatch
\n
"
);
CloseHandle
(
hfile
);
return
TRUE
;
}
/* ==============================================
* the tests
* ==============================================
...
...
@@ -848,6 +876,58 @@ static void test_srvgetindexes_pdb(void)
}
}
static
void
test_srvgetindexes_dbg
(
void
)
{
unsigned
int
i
;
WCHAR
filename
[
128
];
SYMSRV_INDEX_INFOW
ssii
;
BOOL
ret
;
static
struct
{
/* input parameters */
WORD
machine
;
DWORD
timestamp
;
DWORD
imagesize
;
}
indexes
[]
=
{
{
IMAGE_FILE_MACHINE_I386
,
0x1234
,
0x00560000
},
{
IMAGE_FILE_MACHINE_AMD64
,
0x1235
,
0x00570000
},
};
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
indexes
);
i
++
)
{
winetest_push_context
(
"dbg#%02u"
,
i
);
/* create dll */
swprintf
(
filename
,
ARRAY_SIZE
(
filename
),
L"winetest%02u.dbg"
,
i
);
ret
=
create_test_dbg
(
filename
,
indexes
[
i
].
machine
,
indexes
[
i
].
timestamp
,
indexes
[
i
].
imagesize
);
ok
(
ret
,
"Couldn't create dbg file %ls
\n
"
,
filename
);
memset
(
&
ssii
,
0x45
,
sizeof
(
ssii
));
ssii
.
sizeofstruct
=
sizeof
(
ssii
);
ret
=
SymSrvGetFileIndexInfoW
(
filename
,
&
ssii
,
0
);
todo_wine
ok
(
ret
,
"SymSrvGetFileIndexInfo failed: %lu
\n
"
,
GetLastError
());
if
(
ret
){
ok
(
ssii
.
age
==
0
,
"Mismatch in age: %lx
\n
"
,
ssii
.
age
);
ok
(
!
memcmp
(
&
ssii
.
guid
,
&
null_guid
,
sizeof
(
GUID
)),
"Mismatch in guid: guid=%s
\n
"
,
wine_dbgstr_guid
(
&
ssii
.
guid
));
ok
(
ssii
.
sig
==
0
,
"Mismatch in sig: %lx
\n
"
,
ssii
.
sig
);
ok
(
ssii
.
size
==
indexes
[
i
].
imagesize
,
"Mismatch in size: %lx
\n
"
,
ssii
.
size
);
ok
(
!
ssii
.
stripped
,
"Mismatch in stripped: %x
\n
"
,
ssii
.
stripped
);
ok
(
ssii
.
timestamp
==
indexes
[
i
].
timestamp
,
"Mismatch in timestamp: %lx
\n
"
,
ssii
.
timestamp
);
ok
(
!
wcscmp
(
ssii
.
file
,
filename
),
"Mismatch in file: %ls
\n
"
,
ssii
.
file
);
ok
(
!
ssii
.
pdbfile
[
0
],
"Mismatch in pdbfile: %ls
\n
"
,
ssii
.
pdbfile
);
ok
(
!
ssii
.
dbgfile
[
0
],
"Mismatch in dbgfile: %ls
\n
"
,
ssii
.
dbgfile
);
}
DeleteFileW
(
filename
);
winetest_pop_context
();
}
}
START_TEST
(
path
)
{
/* cleanup env variables that affect dbghelp's behavior */
...
...
@@ -856,4 +936,5 @@ START_TEST(path)
test_srvgetindexes_pe
();
test_srvgetindexes_pdb
();
test_srvgetindexes_dbg
();
}
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