Skip to content

Commit 4d20d26

Browse files
committed
text patches: checkpoint
1 parent 6b5bf1d commit 4d20d26

22 files changed

Lines changed: 564 additions & 567 deletions

project.4coder

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ commands =
4949
// .f1 = { .win = "raddbg_stable --ipc kill_all && build raddbg", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
5050
// .f1 = { .win = "raddbg_stable --ipc kill_all && build raddbg debug telemetry", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
5151
// .f1 = { .win = "raddbg_stable --ipc kill_all && build radbin", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
52-
.f1 = { .win = "raddbg_stable --ipc kill_all && build ryan_scratch && pushd build && ryan_scratch && popd", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
52+
.f1 = { .win = "raddbg_stable --ipc kill_all && build raddbg", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
5353

5454
//- rjf: [raddbg wsl]
5555
// .f1 = { .win = "wsl ./build.sh raddbg", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },

src/base/base_memory_map.c

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,39 @@ memory_map_read(MemoryMap *map, Rng1U64 range, void *dst)
1818
{
1919
U64 dst_vaddr = range.min;
2020
{
21-
for(MemoryMapRangeNode *n = map->first_range; n != 0; n = n->next)
21+
for(;;)
2222
{
23-
if(contains_1u64(n->v.vaddr_range, dst_vaddr))
23+
U64 start_dst_vaddr = dst_vaddr;
24+
B32 found = 0;
25+
for(MemoryMapRangeNode *n = map->first_range; n != 0; n = n->next)
2426
{
25-
U64 src_off = dst_vaddr - n->v.vaddr_range.min;
26-
U64 num_bytes_possible = n->v.vaddr_range.max - dst_vaddr;
27-
U64 num_bytes_needed = range.max - dst_vaddr;
28-
U64 num_bytes_to_read = Min(num_bytes_needed, num_bytes_possible);
29-
MemoryCopy((U8 *)dst + (dst_vaddr - range.min), (U8 *)n->v.base + src_off, num_bytes_to_read);
30-
dst_vaddr += num_bytes_to_read;
27+
if(contains_1u64(n->v.vaddr_range, dst_vaddr))
28+
{
29+
U64 src_off = dst_vaddr - n->v.vaddr_range.min;
30+
U64 num_bytes_possible = n->v.vaddr_range.max - dst_vaddr;
31+
U64 num_bytes_needed = range.max - dst_vaddr;
32+
U64 num_bytes_to_read = Min(num_bytes_needed, num_bytes_possible);
33+
MemoryCopy((U8 *)dst + (dst_vaddr - range.min), (U8 *)n->v.base + src_off, num_bytes_to_read);
34+
dst_vaddr += num_bytes_to_read;
35+
found = 1;
36+
}
37+
}
38+
if(!found || start_dst_vaddr == dst_vaddr)
39+
{
40+
break;
3141
}
3242
}
3343
}
3444
U64 bytes_read = (dst_vaddr - range.min);
3545
return bytes_read;
3646
}
47+
48+
internal String8
49+
memory_map_data_from_range(Arena *arena, MemoryMap *map, Rng1U64 range)
50+
{
51+
String8 result = {0};
52+
result.size = dim_1u64(range);
53+
result.str = push_array(arena, U8, result.size);
54+
memory_map_read(map, range, result.str);
55+
return result;
56+
}

src/base/base_memory_map.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,6 @@ struct MemoryMap
3434
internal void memory_map_push(Arena *arena, MemoryMap *map, Rng1U64 vaddr_range, void *data);
3535
internal U64 memory_map_read(MemoryMap *map, Rng1U64 range, void *dst);
3636
#define memory_map_read_struct(map, vaddr, ptr) memory_map_read((map), r1u64((vaddr), (vaddr)+sizeof(*(ptr))), (ptr))
37+
internal String8 memory_map_data_from_range(Arena *arena, MemoryMap *map, Rng1U64 range);
3738

3839
#endif // BASE_MEMORY_MAP_H

src/dbg_engine/dbg_engine_user.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2004,7 +2004,7 @@ d_tick(Arena *arena, D_TargetArray *targets, D_BreakpointArray *breakpoints, D_P
20042004
if(params->file_path.size != 0)
20052005
{
20062006
run_extra_bps.v[0].file_path = params->file_path;
2007-
run_extra_bps.v[0].pt = params->cursor;
2007+
run_extra_bps.v[0].pt = txt_pt((S64)params->line_num, (S64)params->column_num);
20082008
}
20092009
else if(params->vaddr != 0)
20102010
{

src/dbg_engine/dbg_engine_user.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ struct D_CmdParams
6565
D_Handle entity;
6666
String8 string;
6767
String8 file_path;
68-
TxtPt cursor;
68+
U64 line_num;
69+
U64 column_num;
6970
U64 vaddr;
7071
B32 prefer_disasm;
7172
U32 pid;

src/raddbg/generated/raddbg.meta.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ RD_NameSchemaInfo rd_name_schema_info_table[39] =
477477
{str8_lit_comp("thread"), 0, str8_lit_comp("x:{'label':code_string, 'id':u64, @no_expand 'active':bool, 'call_stack':set}")},
478478
};
479479

480-
String8 rd_reg_slot_code_name_table[52] =
480+
String8 rd_reg_slot_code_name_table[54] =
481481
{
482482
{0},
483483
str8_lit_comp("machine"),
@@ -499,6 +499,8 @@ str8_lit_comp("inline_depth"),
499499
str8_lit_comp("file_path"),
500500
str8_lit_comp("cursor"),
501501
str8_lit_comp("mark"),
502+
str8_lit_comp("line_num"),
503+
str8_lit_comp("column_num"),
502504
str8_lit_comp("text_key"),
503505
str8_lit_comp("lang_kind"),
504506
str8_lit_comp("lines"),
@@ -533,7 +535,7 @@ str8_lit_comp("cmd_name"),
533535
str8_lit_comp("wm_event"),
534536
};
535537

536-
Rng1U64 rd_reg_slot_range_table[52] =
538+
Rng1U64 rd_reg_slot_range_table[54] =
537539
{
538540
{0},
539541
{OffsetOf(RD_Regs, machine), OffsetOf(RD_Regs, machine) + sizeof(D_Handle)},
@@ -553,8 +555,10 @@ Rng1U64 rd_reg_slot_range_table[52] =
553555
{OffsetOf(RD_Regs, unwind_count), OffsetOf(RD_Regs, unwind_count) + sizeof(U64)},
554556
{OffsetOf(RD_Regs, inline_depth), OffsetOf(RD_Regs, inline_depth) + sizeof(U64)},
555557
{OffsetOf(RD_Regs, file_path), OffsetOf(RD_Regs, file_path) + sizeof(String8)},
556-
{OffsetOf(RD_Regs, cursor), OffsetOf(RD_Regs, cursor) + sizeof(TxtPt)},
557-
{OffsetOf(RD_Regs, mark), OffsetOf(RD_Regs, mark) + sizeof(TxtPt)},
558+
{OffsetOf(RD_Regs, cursor), OffsetOf(RD_Regs, cursor) + sizeof(U64)},
559+
{OffsetOf(RD_Regs, mark), OffsetOf(RD_Regs, mark) + sizeof(U64)},
560+
{OffsetOf(RD_Regs, line_num), OffsetOf(RD_Regs, line_num) + sizeof(U64)},
561+
{OffsetOf(RD_Regs, column_num), OffsetOf(RD_Regs, column_num) + sizeof(U64)},
558562
{OffsetOf(RD_Regs, text_key), OffsetOf(RD_Regs, text_key) + sizeof(C_Key)},
559563
{OffsetOf(RD_Regs, lang_kind), OffsetOf(RD_Regs, lang_kind) + sizeof(TXT_LangKind)},
560564
{OffsetOf(RD_Regs, lines), OffsetOf(RD_Regs, lines) + sizeof(D_LineList)},
@@ -755,7 +759,7 @@ RD_CmdKindInfo rd_cmd_kind_info_table[256] =
755759
{ str8_lit_comp("insert_text"), str8_lit_comp("Inserts the text that was used to cause this command."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("")}},
756760
{ str8_lit_comp("move_next"), str8_lit_comp("Moves the cursor or selection to the next element."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("")}},
757761
{ str8_lit_comp("move_prev"), str8_lit_comp("Moves the cursor or selection to the previous element."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("")}},
758-
{ str8_lit_comp("goto_line"), str8_lit_comp("Jumps to a line number in the current code file."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*1)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*1), RD_RegSlot_Cursor, str8_lit_comp("")}},
762+
{ str8_lit_comp("goto_line"), str8_lit_comp("Jumps to a line number in the current code file."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*1)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*1), RD_RegSlot_LineNum, str8_lit_comp("")}},
759763
{ str8_lit_comp("goto_address"), str8_lit_comp("Jumps to an address in the current memory or disassembly view."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*1)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*1), RD_RegSlot_Vaddr, str8_lit_comp("")}},
760764
{ str8_lit_comp("center_cursor"), str8_lit_comp("Snaps the current code view to center the cursor."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("")}},
761765
{ str8_lit_comp("contain_cursor"), str8_lit_comp("Snaps the current code view to contain the cursor."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("")}},

src/raddbg/generated/raddbg.meta.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ RD_RegSlot_InlineDepth,
2828
RD_RegSlot_FilePath,
2929
RD_RegSlot_Cursor,
3030
RD_RegSlot_Mark,
31+
RD_RegSlot_LineNum,
32+
RD_RegSlot_ColumnNum,
3133
RD_RegSlot_TextKey,
3234
RD_RegSlot_LangKind,
3335
RD_RegSlot_Lines,
@@ -478,8 +480,10 @@ E_Space eval_space;
478480
U64 unwind_count;
479481
U64 inline_depth;
480482
String8 file_path;
481-
TxtPt cursor;
482-
TxtPt mark;
483+
U64 cursor;
484+
U64 mark;
485+
U64 line_num;
486+
U64 column_num;
483487
C_Key text_key;
484488
TXT_LangKind lang_kind;
485489
D_LineList lines;
@@ -581,6 +585,8 @@ Z(getting_started)\
581585
.file_path = rd_regs()->file_path,\
582586
.cursor = rd_regs()->cursor,\
583587
.mark = rd_regs()->mark,\
588+
.line_num = rd_regs()->line_num,\
589+
.column_num = rd_regs()->column_num,\
584590
.text_key = rd_regs()->text_key,\
585591
.lang_kind = rd_regs()->lang_kind,\
586592
.lines = rd_regs()->lines,\
@@ -619,8 +625,8 @@ extern String8 rd_tab_fast_path_view_name_table[25];
619625
extern String8 rd_tab_fast_path_query_name_table[25];
620626
extern RD_VocabInfo rd_vocab_info_table[368];
621627
extern RD_NameSchemaInfo rd_name_schema_info_table[39];
622-
extern String8 rd_reg_slot_code_name_table[52];
623-
extern Rng1U64 rd_reg_slot_range_table[52];
628+
extern String8 rd_reg_slot_code_name_table[54];
629+
extern Rng1U64 rd_reg_slot_range_table[54];
624630
extern String8 rd_binding_version_remap_old_name_table[9];
625631
extern String8 rd_binding_version_remap_new_name_table[9];
626632
extern String8 rd_icon_kind_text_table[75];

src/raddbg/raddbg.mdesk

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -870,8 +870,10 @@ RD_RegTable:
870870

871871
// rjf: code / address location info
872872
{String8 file_path FilePath }
873-
{TxtPt cursor Cursor }
874-
{TxtPt mark Mark }
873+
{U64 cursor Cursor }
874+
{U64 mark Mark }
875+
{U64 line_num LineNum }
876+
{U64 column_num ColumnNum }
875877
{C_Key text_key TextKey }
876878
{TXT_LangKind lang_kind LangKind }
877879
{D_LineList lines Lines }
@@ -1131,7 +1133,7 @@ RD_CmdTable: // | | |
11311133
{MovePrev 1 1 "" Null 0 0 0 0 0 0 0 Null "move_prev" "Move Previous" "Moves the cursor or selection to the previous element." "" "" }
11321134

11331135
//- rjf: code navigation
1134-
{GoToLine 1 1 "" Cursor 0 0 0 0 1 0 1 Null "goto_line" "Go To Line" "Jumps to a line number in the current code file." "" "" }
1136+
{GoToLine 1 1 "" LineNum 0 0 0 0 1 0 1 Null "goto_line" "Go To Line" "Jumps to a line number in the current code file." "" "" }
11351137
{GoToAddress 1 1 "" Vaddr 0 0 0 0 1 0 1 Null "goto_address" "Go To Address" "Jumps to an address in the current memory or disassembly view." "" "" }
11361138
{CenterCursor 1 1 "" Null 0 0 0 0 0 0 0 Null "center_cursor" "Center Cursor" "Snaps the current code view to center the cursor." "" "" }
11371139
{ContainCursor 1 1 "" Null 0 0 0 0 0 0 0 Null "contain_cursor" "Contain Cursor" "Snaps the current code view to contain the cursor." "" "" }

0 commit comments

Comments
 (0)