mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-14 17:28:07 +00:00
Ignore S_REGREL32 during conversion of optimized procedures.
In optimized builds, MSVC emits parameters as both S_LOCAL and S_REGREL32. Most likely because their debugger relies on S_REGREL32 to format parameters in the call stack window.
This commit is contained in:
@@ -3437,6 +3437,7 @@ p2r_convert(Arena *arena, P2R_ConvertParams *params)
|
|||||||
B32 defrange_target_is_param = 0;
|
B32 defrange_target_is_param = 0;
|
||||||
U64 procedure_num = 0;
|
U64 procedure_num = 0;
|
||||||
U64 procedure_base_voff = 0;
|
U64 procedure_base_voff = 0;
|
||||||
|
CV_ProcFlags proc_flags = 0;
|
||||||
U64 regrel_idx = 0;
|
U64 regrel_idx = 0;
|
||||||
RDIM_Symbol *curr_proc_symbol = 0;
|
RDIM_Symbol *curr_proc_symbol = 0;
|
||||||
CV_RecRange *rec_ranges_first = sym->sym_ranges.ranges + sym_rec_range.min;
|
CV_RecRange *rec_ranges_first = sym->sym_ranges.ranges + sym_rec_range.min;
|
||||||
@@ -3706,12 +3707,14 @@ p2r_convert(Arena *arena, P2R_ConvertParams *params)
|
|||||||
|
|
||||||
// reset S_REGREL32 index
|
// reset S_REGREL32 index
|
||||||
regrel_idx = 0;
|
regrel_idx = 0;
|
||||||
|
|
||||||
|
proc_flags = proc32->flags;
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
//- rjf: REGREL32
|
//- rjf: REGREL32
|
||||||
case CV_SymKind_REGREL32:
|
case CV_SymKind_REGREL32:
|
||||||
{
|
{
|
||||||
if(params->subset_flags & RDIM_SubsetFlag_Locals)
|
if(params->subset_flags & RDIM_SubsetFlag_Locals && !(proc_flags & CV_ProcFlag_OptDbgInfo))
|
||||||
{
|
{
|
||||||
// TODO(rjf): apparently some of the information here may end up being
|
// TODO(rjf): apparently some of the information here may end up being
|
||||||
// redundant with "better" information from CV_SymKind_LOCAL record.
|
// redundant with "better" information from CV_SymKind_LOCAL record.
|
||||||
|
|||||||
Reference in New Issue
Block a user