This serie tackles several issues encountered while loading PDB files through dbghelp.
It happens that PDB allows to have several type records for user defined types (struct / enums)
with the same name.
This seems to be generated by a) compiler (when modifying a structure definition between several
compilation phases), b) the incremental linker (likely an optimisation of previous case, but
not 100% certain when it's triggered).
Wine's dbghelp ended up not picking the right record, hence generating errneous outputs.
This series:
- cleans up some PDB related code
- update winedump to display the PDB hash table internals
- fixes dbghelp to preserve in Wine's dbghelp hash table the partial order between type
records of same name.
v2:
- rebased
- removed a bunch of stray comments
--
v3: dlls/dbghelp{pdb}: use remap table from PDB hash stream
dlls/dbghelp{pdb}: ensure dbghelp's list order in hash table matches PDB's
dlls/dbghelp{pdb}: clearly separate the type loading into two passes
include/wine/mscvpdb.h: redefine property with bitfields
dlls/dbghelp{pdb}: rely on first/last index from type header
tools/winedump{pdb}: explore a bit more TPI hash elements
https://gitlab.winehq.org/wine/wine/-/merge_requests/73
This serie tackles several issues encountered while loading PDB files through dbghelp.
It happens that PDB allows to have several type records for user defined types (struct / enums)
with the same name.
This seems to be generated by a) compiler (when modifying a structure definition between several
compilation phases), b) the incremental linker (likely an optimisation of previous case, but
not 100% certain when it's triggered).
Wine's dbghelp ended up not picking the right record, hence generating errneous outputs.
This series:
- cleans up some PDB related code
- update winedump to display the PDB hash table internals
- fixes dbghelp to preserve in Wine's dbghelp hash table the partial order between type
records of same name.
--
v2: dlls/dbghelp{pdb}: use remap table from PDB hash stream
dlls/dbghelp{pdb}: ensure dbghelp's list order in hash table matches PDB's
dlls/dbghelp{pdb}: clearly separate the type loading into two passes
include/wine/mscvpdb.h: redefine property with bitfields
dlls/dbghelp{pdb}: rely on first/last index from type header
tools/winedump{pdb}: explore a bit more TPI hash elements
https://gitlab.winehq.org/wine/wine/-/merge_requests/73
Enforce proper atomic update so that other threads do not read stale
data from IO_STATUS_BLOCK.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v2: ntdll: Fix reading stale Information from IOSB.
https://gitlab.winehq.org/wine/wine/-/merge_requests/155