mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 13:58:40 +00:00
fix cases where decorative disasm lines were being confused with non-decorative
This commit is contained in:
@@ -73,7 +73,10 @@ dasm_inst_array_idx_from_code_off__linear_scan(DASM_InstArray *array, U64 off)
|
|||||||
if(array->v[idx].code_off <= off && off < next_off)
|
if(array->v[idx].code_off <= off && off < next_off)
|
||||||
{
|
{
|
||||||
result = idx;
|
result = idx;
|
||||||
break;
|
if(!(array->v[idx].flags & DASM_InstFlag_Decorative))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -472,15 +475,19 @@ dasm_parse_thread__entry_point(void *p)
|
|||||||
if(params.style_flags & DASM_StyleFlag_SourceFilesNames &&
|
if(params.style_flags & DASM_StyleFlag_SourceFilesNames &&
|
||||||
file->normal_full_path_string_idx != 0 && file_normalized_full_path.size != 0)
|
file->normal_full_path_string_idx != 0 && file_normalized_full_path.size != 0)
|
||||||
{
|
{
|
||||||
DASM_Inst inst = {0};
|
String8 inst_string = push_str8f(scratch.arena, "> %S", file_normalized_full_path);
|
||||||
|
DASM_Inst inst = {u32_from_u64_saturate(off), DASM_InstFlag_Decorative, 0, r1u64(inst_strings.total_size + inst_strings.node_count,
|
||||||
|
inst_strings.total_size + inst_strings.node_count + inst_string.size)};
|
||||||
dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst);
|
dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst);
|
||||||
str8_list_pushf(scratch.arena, &inst_strings, "> %S", file_normalized_full_path);
|
str8_list_push(scratch.arena, &inst_strings, inst_string);
|
||||||
}
|
}
|
||||||
if(params.style_flags & DASM_StyleFlag_SourceFilesNames && file->normal_full_path_string_idx == 0)
|
if(params.style_flags & DASM_StyleFlag_SourceFilesNames && file->normal_full_path_string_idx == 0)
|
||||||
{
|
{
|
||||||
DASM_Inst inst = {0};
|
String8 inst_string = str8_lit(">");
|
||||||
|
DASM_Inst inst = {u32_from_u64_saturate(off), DASM_InstFlag_Decorative, 0, r1u64(inst_strings.total_size + inst_strings.node_count,
|
||||||
|
inst_strings.total_size + inst_strings.node_count + inst_string.size)};
|
||||||
dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst);
|
dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst);
|
||||||
str8_list_pushf(scratch.arena, &inst_strings, ">");
|
str8_list_push(scratch.arena, &inst_strings, inst_string);
|
||||||
}
|
}
|
||||||
last_file = file;
|
last_file = file;
|
||||||
}
|
}
|
||||||
@@ -512,9 +519,11 @@ dasm_parse_thread__entry_point(void *p)
|
|||||||
String8 line_text = str8_skip_chop_whitespace(str8_substr(data, text_info.lines_ranges[line->line_num-1]));
|
String8 line_text = str8_skip_chop_whitespace(str8_substr(data, text_info.lines_ranges[line->line_num-1]));
|
||||||
if(line_text.size != 0)
|
if(line_text.size != 0)
|
||||||
{
|
{
|
||||||
DASM_Inst inst = {0};
|
String8 inst_string = push_str8f(scratch.arena, "> %S", line_text);
|
||||||
|
DASM_Inst inst = {u32_from_u64_saturate(off), DASM_InstFlag_Decorative, 0, r1u64(inst_strings.total_size + inst_strings.node_count,
|
||||||
|
inst_strings.total_size + inst_strings.node_count + inst_string.size)};
|
||||||
dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst);
|
dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst);
|
||||||
str8_list_pushf(scratch.arena, &inst_strings, "> %S", line_text);
|
str8_list_push(scratch.arena, &inst_strings, inst_string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -567,8 +576,8 @@ dasm_parse_thread__entry_point(void *p)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
String8 inst_string = push_str8f(scratch.arena, "%S%S%s%S", addr_part, code_bytes_part, udc.asm_buf, symbol_part);
|
String8 inst_string = push_str8f(scratch.arena, "%S%S%s%S", addr_part, code_bytes_part, udc.asm_buf, symbol_part);
|
||||||
DASM_Inst inst = {off, rel_voff, r1u64(inst_strings.total_size + inst_strings.node_count,
|
DASM_Inst inst = {u32_from_u64_saturate(off), 0, rel_voff, r1u64(inst_strings.total_size + inst_strings.node_count,
|
||||||
inst_strings.total_size + inst_strings.node_count + inst_string.size)};
|
inst_strings.total_size + inst_strings.node_count + inst_string.size)};
|
||||||
dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst);
|
dasm_inst_chunk_list_push(scratch.arena, &inst_list, 1024, &inst);
|
||||||
str8_list_push(scratch.arena, &inst_strings, inst_string);
|
str8_list_push(scratch.arena, &inst_strings, inst_string);
|
||||||
|
|
||||||
|
|||||||
@@ -42,10 +42,17 @@ struct DASM_Params
|
|||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Instruction Types
|
//~ rjf: Instruction Types
|
||||||
|
|
||||||
|
typedef U32 DASM_InstFlags;
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
DASM_InstFlag_Decorative = (1<<0),
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct DASM_Inst DASM_Inst;
|
typedef struct DASM_Inst DASM_Inst;
|
||||||
struct DASM_Inst
|
struct DASM_Inst
|
||||||
{
|
{
|
||||||
U64 code_off;
|
U32 code_off;
|
||||||
|
DASM_InstFlags flags;
|
||||||
U64 addr;
|
U64 addr;
|
||||||
Rng1U64 text_range;
|
Rng1U64 text_range;
|
||||||
};
|
};
|
||||||
|
|||||||
+2
-1
@@ -12034,7 +12034,8 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_
|
|||||||
{
|
{
|
||||||
for(DF_TextLineDasm2SrcInfoNode *n = dasm2src_list->first; n != 0; n = n->next)
|
for(DF_TextLineDasm2SrcInfoNode *n = dasm2src_list->first; n != 0; n = n->next)
|
||||||
{
|
{
|
||||||
if(n->v.voff_range.min <= hovered_line_voff && hovered_line_voff < n->v.voff_range.max)
|
if(n->v.voff_range.min <= hovered_line_voff &&
|
||||||
|
hovered_line_voff < n->v.voff_range.max)
|
||||||
{
|
{
|
||||||
line_info_line_num = n->v.pt.line;
|
line_info_line_num = n->v.pt.line;
|
||||||
matches = 1;
|
matches = 1;
|
||||||
|
|||||||
@@ -1526,7 +1526,7 @@ extern "C"{
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static FORCE_INLINE void
|
static FORCE_INLINE void
|
||||||
basic_inlinee(void)
|
basic_inlinee(int inlinee_param_x, int inlinee_param_y, int inlinee_param_z)
|
||||||
{
|
{
|
||||||
OutputDebugStringA("A\n");
|
OutputDebugStringA("A\n");
|
||||||
OutputDebugStringA("B\n");
|
OutputDebugStringA("B\n");
|
||||||
@@ -1538,7 +1538,7 @@ static void
|
|||||||
basic_inline_tests(void)
|
basic_inline_tests(void)
|
||||||
{
|
{
|
||||||
OutputDebugStringA("{\n");
|
OutputDebugStringA("{\n");
|
||||||
basic_inlinee();
|
basic_inlinee(12, 34, 56);
|
||||||
OutputDebugStringA("}\n");
|
OutputDebugStringA("}\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user