Commit graph

1084 commits

Author SHA1 Message Date
Eric Pouech ffc3efe775 dbghelp: Manage the new MachineType field in IMAGEHLP_MODULE(W)64.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-06 17:59:11 +02:00
Eric Pouech b882ab2b25 dbghelp: Use the correct module name for lookups including module's name.
(modulename is truncated at 64 chars, while module.ModuleName at 32 chars)

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-06 17:58:43 +02:00
Eric Pouech b9ebb3fb62 dbghelp: Use module->modulename instead of module->module.ModuleName in traces.
The former is truncated to 64 chars while the latter is truncated to
32 chars.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-06 17:58:29 +02:00
Eric Pouech 2296b4952a dbghelp: Return correct error code when reloading a module in SymLoadModule*.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-06 17:58:20 +02:00
Eric Pouech aed40b934c dbghelp: Allow loading virtual module at any address.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-06 17:58:05 +02:00
Eric Pouech f2f27b6b95 dbghelp: SymLoadModule* should return the base address in case of success, and 0 otherwise.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-06 17:57:51 +02:00
Eric Pouech a4b206b384 dbghelp: Handle the case where loader isn't what WINELOADER reports.
use case, in a WoW setup:
	wine programs/winedbg/winedbg.exe.so notepad.exe
where both winedbg and notepad are 64bit exec:s

in this case, dbghelp (loaded from winedbg) reads '<...>/wine' from WINELOADER
windows env block inside notepad
(but the unix env block is correctly set to wine64 by the tweak in
ntdll/unix/loader.c)

as a consequence dbghelp doesn't get the ELF information (it tries to read 32bit
ELF entities, and fails); hence misses all the loaded ELF libraries
winedbg's command 'info share' only reports the PE modules

note: the 'dual' case
  wine64 programs/winedbg/winedbg.exe.so c:\\windows\\syswow64\\notepad.exe
  where winedbg is a 64bit exec and notepad a 32bit
  shows the same failures

workaround this in dbghelp by tweaking the value of WINELOADER whether
the debuggee is 32 or 64bit

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:51:04 +02:00
Eric Pouech ca00b056b8 dbghelp: Properly handle errors when reading first DIE in compilation unit.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:50:52 +02:00
Eric Pouech e05bac0fd5 dbghelp: Fix erroneous string manipulation when said string is empty.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:50:45 +02:00
Eric Pouech ebff1e8c9b dbghelp: Harden inspection of Dwarf line number information.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:50:38 +02:00
Eric Pouech 0b84fa05a1 dbghelp: Don't call assert() on missing subprogram dwarf's information.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:50:28 +02:00
Eric Pouech c8fede5efb dbghelp: Check correctness of type (esp. in case of unknown ones).
Since with the unknown type entry, we can end up with types which don't
match the expected symt->tag, we need to check before the conversions.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:50:14 +02:00
Eric Pouech ee3ea1e163 dbghelp: Added an unknown type in symt_cache for handling bad references to types.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:50:06 +02:00
Eric Pouech e08b80a752 dbghelp: Mostly get rid of symt_cache in dwarf debug information.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:49:57 +02:00
Eric Pouech c9b0483689 dbghelp: Always return a type in lookup_type, even in case of errors.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:49:42 +02:00
Eric Pouech 50144e2732 dbghelp: Fix dwarf constants.
The 32bit CIE_ID is an unsigned integer (will become important when
handling 32 vs 64 bit values).

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:49:31 +02:00
Eric Pouech 1a2d1e1a8a dbghelp: Update/clarify dwarf definitions for 3/3f/4 standard versions.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:49:13 +02:00
Eric Pouech 598e577475 dbghelp: Add a couple of more traces when querying an attribute's value.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:49:11 +02:00
Eric Pouech 0020265286 dbghelp: Add dwarf support of DW_FORM_ref_udata.
DW_FORM_ref_udata value is an offset from current unit (as the others
DW_FORM_ref[1,2,3,4] are)

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:48:37 +02:00
Eric Pouech 7790b395ce dbghelp: Fix dwarf2 subprogram handling.
Fix dwarf2_parse_subprogram_block when looking for inner information
to use the child's debug_info (not the lexical_block one!)

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-03 13:48:26 +02:00
Eric Pouech 35c45857ae dbghelp: Tidy up internals for array type.
Mainly remove hackish storage of information with negative value and
use a uniform min/count pair for all debug formats.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 21:21:49 +02:00
Eric Pouech 1cddd8d571 dbghelp: Fix SymInitialize for a live 32bit target from a 64bit caller in WOW64.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 21:59:30 +02:00
Eric Pouech 4a03ffc1ef dbghelp: Store the IMAGE_OPTIONAL_HEADER in either 32bit or 64bit form.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 21:59:20 +02:00
Eric Pouech 339953cced dbghelp: Split storage of PE header.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 21:58:28 +02:00
Eric Pouech 3596358097 dbghelp: Added missing break statement.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 29fedfb5d4 dbghelp: Return a lexical parent for enums (as we do for UDTs).
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 62c06fc31c dbghelp: Return the correct length for an enumeration.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 46c12b2971 dbghelp: Enums should be found by name (as UDTs are).
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 5c8c999b5a dbghelp: Return the symt_module when requesting lexical parent of a UDT.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 2325962e74 dbghelp: Return the stored name for a compiland.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 1fa1620086 dbghelp: Introduce internal type (symt_module) to match SymTagExe.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 3ed209e0d9 dbghelp: Correctly store and report bitfield information.
Bitfield information must be stored relative to first byte
of underlying integral type. We were storing the information
always relative to the first containing byte.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 85557f361b dbghelp: Fix two internal buffer allocations.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 5c271afc99 dbghelp: Fill more fields in SYMBOL_INFO in SymGetTypeFromName.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech d268cb028a dbghelp: Fix NameLen usage in SYMBOL_INFO(W).
SYMBOL_INFO.NameLen should be the actual length of the symbol, not the
length of the (potentially truncated) string returned in
SYMBOL_INFO.Name. Add an helper (symbol_setname) to set those fields
properly.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Michael Stefaniuc e1e761d55f dbghelp: Remove superfluous casts to self.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-30 22:49:58 +02:00
Eric Pouech 7d54682ffc dbghelp: Fix a failure about 'wrong name EntryPoint'.
Regression was introduced in d614ac4671
by allowing to return the symbol with the lowest address in the module
even if the requested address was strictly below.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-24 20:49:05 +02:00
Eric Pouech 5ddcb94af6 winedump: Correct and update a couple of infos in PDB symbol stream header.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-24 19:59:23 +02:00
Eric Pouech d6aff64ccf winedump: Add support for dumping heap_alloc_site CodeView records.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-24 19:57:53 +02:00
Eric Pouech 0003c64e5b winedump: Correctly support flags in public records (V1 and V2).
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-24 19:55:08 +02:00
Eric Pouech bf6ac26f75 winedump: Fix public and data/proc ref definitions of Codeview records.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 12:05:14 +02:00
Eric Pouech 7499b98ec8 winedump: Update support for S_COMPILE* records.
Don't mix up S_COMPILE records with compiland information.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 12:04:36 +02:00
Eric Pouech 9adf73be7e dbghelp:: Add proper support for S_OBJNAME records.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 12:03:27 +02:00
Eric Pouech a9c552fe7f winedump: Dump calling convention attributes for CodeView.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 12:01:59 +02:00
Alistair Leslie-Hughes bad67b1421 dbghelp: Initialize new structure members.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-20 13:16:53 +02:00
Eric Pouech beb1314307 dbghelp/tests: Try to fix failure in current dbghelp tests.
Testbot failures in previous SymGetTypeFromName patch have nothing
to do with that former patch. Trying to address errouneous test.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-06 16:10:00 +02:00
Eric Pouech 71e2ab0ed3 dbghelp: Correctly initialize the module_pair structure in SymGetTypeFromName.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-06 16:09:44 +02:00
Alexandre Julliard f2838cc1d4 dbghelp: Look for .so files in the architecture-specific directory.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-28 16:25:48 +02:00
Alexandre Julliard f14632f345 dbghelp: Support loading builtins from the architecture-specific PE directory.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-26 21:34:02 +02:00
Gijs Vermeulen 8d260b40fc dbghelp: Implement SymFromNameW().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50829
Signed-off-by: Gijs Vermeulen <gijsvrm@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-22 21:12:57 +02:00