Eric Pouech
acfcd84a05
dbghelp/dwarf: Workaround functions with multiple range of addresses.
...
gcc can emit functions with code spread across non contiguous code areas.
We used to register those functions with an address range enclosing all ranges
(meaning that all addresses not actually belonging to the function but
lying in that address range could be returned by dbghelp as belonging
to the function).
Work around this by registering the function with only the first range
of addresses (this will avoid the errors described above), but will
fail to mark the other address ranges as part of the function.
dbghelp doesn't seem to have explicit support of those cases, even if
pdb/codeview also support functions with multi range of addresses
(see S_SEPCODE).
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:16:26 +01:00
Eric Pouech
b332bda8e2
dbghelp/dwarf: Introduce a helper to read properly multiple range of addresses.
...
Use it to reimplement dwarf2_feed_inlined_ranges.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:16:17 +01:00
Eric Pouech
0c3274b526
dbghelp/msc: Better detect whether IPI stream is present.
...
Old version of PDB files can have a stream #4 which is not an IPI stream
Available documentation isn't 100% clear about when IPI has been
introduced.
So decide that IPI is present when header of stream looks like a type
stream header.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:14:08 +01:00
Eric Pouech
92fabc64e5
dbghelp/pdb: Fix start adress of block.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:13:27 +01:00
Eric Pouech
d8f26a4233
dbghelp/pdb: Add line number to inline sites.
...
Requires to join DEBUG_S_INLINEES subsection with symbol annotations.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
bfc0edb8cf
dbghelp/pdb: Handle a block in DEBUG_S_LINES subsection spreading across several symbols.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
cab92c90e0
dbghelp/pdb: Added support for S_INLINESITE and S_INLINESITE_END.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
3bc073d8bf
dbghelp/pdb: Let codeview_snarf() handle all module debug information.
...
Except old linetab v1.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
54ec50d859
dbghelp/pdb: Introduce codeview_init_type_parse() to handle init of type streams.
...
Currently used for TPI stream.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
b73ca9f05e
dbghelp/pdb: Implement loc_compute for pdb backend.
...
Add support for S_DEFRANGE* entries.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
7ad847bc34
dbghelp/pdb: Handle S_LOCAL codeview entries.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
de5fe89357
dbghelp/pdb: Add new basic type to represent char8_t introduced in C++20.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
9f3e8a515f
dbghelp: Use cpu from debuggee's modules rather than debugger's.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
e8b195329e
dbghelp: Use module's cpu word size instead of sizeof(void*) or sizeof(DWORD_PTR).
...
This fixes a couple of wrong pointer size computation when debugging a
WoW64 process from a 64 bit debugger.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
d72e6ac772
dbghelp: Attach a struct cpu* to every module.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
e105e9d35e
dbghelp: Check that we don't add same line number twice.
...
This happens (at least) in dwarf debug info where there could be two entries
with same source file and line number, but different column numbers
(and we don't store columns).
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Eric Pouech
f83e647547
dbghelp/dwarf: Don't skip functions when their inlined flag comes from an abstract origin.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-05 17:10:45 +01:00
Eric Pouech
5f9bcb13b7
mscvpdb.h: Move parsing definitions to dbghelp.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 20:32:51 +01:00
Eric Pouech
fbc65b802b
dbghelp/pdb: Convert to new debug subsection definitions (in linetab2).
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 20:32:51 +01:00
Eric Pouech
f0b8518333
mscvpdb.h: Update symbol header for linetab2's block size.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 20:32:51 +01:00
Eric Pouech
c967245ba8
dbghelp: Silence a couple more CV entries.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-29 21:28:36 +02:00
Eric Pouech
ec0af6dc3e
dbghelp: Silence a couple of C++ oriented requests in SymGetTypeInfo().
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-29 21:28:32 +02:00
Eric Pouech
7bde153afe
dbghelp/dwarf: Store line numbers and file info for inlined functions.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-29 21:28:19 +02:00
Eric Pouech
27f133732f
dbghelp: Implement SymGetLineFromInlineContext(W) for inlined frame.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-29 21:28:14 +02:00
Eric Pouech
3d6b65dd38
dbghelp: In SymGetLine* family, compute displacement relative to line_info's address.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-29 21:28:02 +02:00
Eric Pouech
1c5989465e
dbghelp: Make symt_add_func_line() last parameter an absolute address.
...
It used to be an offset to the start of function, but it's actually
stored as an absolute address afterwards. This avoids unnecessary
computations.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-29 21:27:41 +02:00
Eric Pouech
0187675065
dbghelp: Rename line_info's pc_offset field into address.
...
It's actually an absolute address.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-29 21:27:23 +02:00
Eric Pouech
232681da96
dbghelp: Implement SymSetScopeFromInlineContext for inlined frames.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-28 18:25:17 +02:00
Eric Pouech
eee701ad52
dbghelp: Implement SymFromInlineContext for inlined frames.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-28 18:25:16 +02:00
Eric Pouech
82bac5d080
dbghelp: Implement StackWalkEx for inlined frames.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-28 18:25:16 +02:00
Eric Pouech
fb34c82ef8
dbghelp/dwarf: Store each subrange for an inlined function.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-28 18:25:16 +02:00
Eric Pouech
690c2e51bf
dbghelp/dwarf: Generate proper inline functions.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-28 18:25:16 +02:00
Eric Pouech
ecb91941b3
dbghelp/dwarf: Add current block as a field in dwarf2_subprogram_t.
...
Instead of passing it as a parameter in various subprogram related
functions.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-28 18:25:16 +02:00
Eric Pouech
b9290c987a
dbghelp: Introduce symt_inlinesite (SymTagInlineSite) to support inline sites.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-28 18:25:16 +02:00
Eric Pouech
fd5c709c6b
dbghelp: Correct type of exported function addresses in PE module.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-28 18:25:16 +02:00
Eric Pouech
8592e9088f
dbghelp: Implement SymSetScopeFromInlineContext() when context isn't inlined.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-27 22:40:50 +02:00
Eric Pouech
706c5400e9
dbghelp: Rewrite SymSetContext() on top of SymSetScopeFromAddr().
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-27 22:40:50 +02:00
Eric Pouech
925182b09f
dbghelp: Implement SymSetScopeFromAddr() and SymSetScopeFromIndex().
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-27 22:40:50 +02:00
Eric Pouech
066bb761cc
dbghelp: Add local scope information in struct process.
...
- make SymSetContext() generate this information
- let SymEnumSymboli() (when dealing with local symbols) use this
information instead of the stack frame
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-27 22:40:50 +02:00
Eric Pouech
e250c6fb98
dbghelp: Implement SymGetLineFromInlineContext*() when context isn't in inline mode.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-27 22:40:50 +02:00
Eric Pouech
219e4b6e75
dbghelp: Implement SymFromInlineContext() when context isn't in inline mode.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-27 22:40:50 +02:00
Eric Pouech
2a0495743b
dbghelp: Let StackWalkEx() succeed even when inline mode is requested.
...
Fallback to regular StackWalk64() behavior.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-27 22:40:50 +02:00
Eric Pouech
7bc6eb9d25
dbghelp/dwarf: Properly handle error cases while computing frame_cfa.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 20:59:13 +02:00
Eric Pouech
8f272e25af
dbghelp: Factorize SymUnloadModule and SymUnloadModule64.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 20:59:07 +02:00
Eric Pouech
8b4d5e6eef
dbghelp: Improve error handling in SymSetContext().
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 20:59:01 +02:00
Eric Pouech
76c4e691af
dbghelp: Add stub implementations for the SymSetScope* functions.
...
Also move SymSetScopeFromAddr out of symbol.c into dbghelp.c which
makes more sense as modification of process settings.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 20:58:38 +02:00
Eric Pouech
26e06f5b79
dbghelp: Add stub implementations of SymGetLineFromInlineContext(W).
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 20:58:12 +02:00
Eric Pouech
9a1a849b95
dbghelp: Add stub implementation of SymFromInlineContext(W).
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 20:58:00 +02:00
Eric Pouech
bef7e1f202
dbghelp: Start implementing StackWalkEx.
...
Simple copy of StackWalk implementation.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 20:57:31 +02:00
Eric Pouech
e9fac51ae0
dbghelp: Add stubs for inline-related APIs.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 20:56:21 +02:00