mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-10-15 13:29:41 -07:00
WIP symbol plumbing
This commit is contained in:
1 parent
12a1e28fff
commit
f7ac6767cf
4 files changed
+233
-218
No files matched your search
@@ -457,6 +457,25 @@ cv_make_proc_refs(Arena *arena, CV_ModIndex imod, CV_SymbolList symbol_list)
|
||||
return proc_ref_list;
|
||||
}
|
||||
|
||||
internal B32
|
||||
cv_is_lproc(CV_Symbol symbol)
|
||||
{
|
||||
return symbol.kind == CV_SymKind_LPROC32 ||
|
||||
symbol.kind == CV_SymKind_LPROCMIPS ||
|
||||
symbol.kind == CV_SymKind_LPROCIA64 ||
|
||||
symbol.kind == CV_SymKind_LPROC32_ID ||
|
||||
symbol.kind == CV_SymKind_LPROCMIPS_ID ||
|
||||
symbol.kind == CV_SymKind_LPROCIA64_ID ||
|
||||
symbol.kind == CV_SymKind_LPROC32_DPC ||
|
||||
symbol.kind == CV_SymKind_LPROC32_DPC_ID ||
|
||||
symbol.kind == CV_SymKind_LPROC16 ||
|
||||
symbol.kind == CV_SymKind_LPROC32_16t ||
|
||||
symbol.kind == CV_SymKind_LPROCMIPS_16t ||
|
||||
symbol.kind == CV_SymKind_LPROC32_ST ||
|
||||
symbol.kind == CV_SymKind_LPROCMIPS_ST ||
|
||||
symbol.kind == CV_SymKind_LPROCIA64_ST;
|
||||
}
|
||||
|
||||
internal B32
|
||||
cv_is_obj_info(CV_Symbol symbol)
|
||||
{
|
||||
@@ -1020,7 +1039,7 @@ cv_symbol_deduper_insert_or_update(void **buckets, U64 bucket_cap, U64 hash, voi
|
||||
U64 bucket_idx = best_idx;
|
||||
do {
|
||||
retry:;
|
||||
void *curr_ptr = buckets + bucket_idx;
|
||||
void *curr_ptr = buckets[bucket_idx];
|
||||
Assert(curr_ptr != symbol_ptr);
|
||||
|
||||
if (curr_ptr == 0) {
|
||||
@@ -1513,9 +1532,7 @@ cv_patch_symbol_tree_offsets_new(String8List raw_symbols, U64 base_offset, U64 a
|
||||
for EachNode(n, String8Node, raw_symbols.first) {
|
||||
for (U64 cursor = 0, depth = 0; cursor + sizeof(CV_SymbolHeader) <= n->string.size; ) {
|
||||
CV_Symbol symbol = {0};
|
||||
U64 read_size = cv_read_symbol(n->string, cursor, CV_SymbolAlign, &symbol);
|
||||
if (read_size == 0) { break; }
|
||||
cursor += read_size;
|
||||
TryReadBreak(cv_read_symbol(n->string, cursor, CV_SymbolAlign, &symbol), cursor);
|
||||
|
||||
if (symbol.kind == CV_SymKind_SKIP) { continue; }
|
||||
|
||||
|
||||
@@ -408,6 +408,7 @@ internal CV_SymbolList cv_make_proc_refs(Arena *arena, CV_ModIndex imod, CV_Symb
|
||||
internal U64 cv_read_symbol(String8 raw_data, U64 off, U64 align, CV_Symbol *symbol_out);
|
||||
internal CV_Symbol cv_symbol_from_string(String8 raw_data);
|
||||
|
||||
internal B32 cv_is_lproc(CV_Symbol symbol);
|
||||
internal B32 cv_is_obj_info(CV_Symbol symbol);
|
||||
internal CV_ObjInfo cv_obj_info_from_symbol(CV_Symbol symbol);
|
||||
|
||||
|
||||
Reference in new issue
Block a user