Skip to content

Commit 72f9875

Browse files
committed
Merge branch 'dev' of https://github.com/EpicGames/raddebugger into dev
2 parents 5fd835c + c50d927 commit 72f9875

File tree

6 files changed

+490
-3
lines changed

6 files changed

+490
-3
lines changed

build.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ if "%rdi_breakpad_from_pdb%"=="1" set didbuild=1 && %compile% ..\src\rdi_br
107107
if "%radlink%"=="1" set didbuild=1 && %compile% ..\src\linker\lnk.c %compile_link% %out%radlink.exe || exit /b 1
108108
if "%tester%"=="1" set didbuild=1 && %compile% ..\src\tester\tester_main.c %compile_link% %out%tester.exe || exit /b 1
109109
if "%ryan_scratch%"=="1" set didbuild=1 && %compile% ..\src\scratch\ryan_scratch.c %compile_link% %out%ryan_scratch.exe || exit /b 1
110+
if "%parse_inline_sites%"=="1" set didbuild=1 && %compile% ..\src\scratch\parse_inline_sites.c %compile_link% %out%parse_inline_sites.exe || exit /b 1
110111
if "%mule_main%"=="1" set didbuild=1 && del vc*.pdb mule*.pdb && %compile_release% %only_compile% ..\src\mule\mule_inline.cpp && %compile_release% %only_compile% ..\src\mule\mule_o2.cpp && %compile_debug% %EHsc% ..\src\mule\mule_main.cpp ..\src\mule\mule_c.c mule_inline.obj mule_o2.obj %compile_link% %no_aslr% %out%mule_main.exe || exit /b 1
111112
if "%mule_module%"=="1" set didbuild=1 && %compile% ..\src\mule\mule_module.cpp %compile_link% %link_dll% %out%mule_module.dll || exit /b 1
112113
if "%mule_hotload%"=="1" set didbuild=1 && %compile% ..\src\mule\mule_hotload_main.c %compile_link% %out%mule_hotload.exe & %compile% ..\src\mule\mule_hotload_module_main.c %compile_link% %link_dll% %out%mule_hotload_module.dll || exit /b 1

src/codeview/codeview.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ cv_decode_inline_annot_u32(String8 data, U64 offset, U32 *out_value)
193193
}
194194

195195
// 2 bytes
196-
else if((header & 0xC0) == 0x80 && cursor+2 <= data.size)
196+
else if((header & 0xC0) == 0x80 && cursor+1 <= data.size)
197197
{
198198
U8 second_byte;
199199
cursor += str8_deserial_read_struct(data, cursor, &second_byte);

src/codeview/codeview_stringize.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2328,3 +2328,15 @@ cv_stringize_c13_parsed(Arena *arena, String8List *out, CV_C13Parsed *c13){
23282328
str8_list_push(arena, out, str8_lit("\n"));
23292329
}
23302330
}
2331+
2332+
internal String8
2333+
cv_string_from_inline_range_kind(CV_InlineRangeKind kind)
2334+
{
2335+
String8 result = str8_zero();
2336+
switch (kind) {
2337+
case CV_InlineRangeKind_Expr: result = str8_lit("Expr"); break;
2338+
case CV_InlineRangeKind_Stmt: result = str8_lit("Stmt"); break;
2339+
}
2340+
return result;
2341+
}
2342+

src/codeview/codeview_stringize.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,6 @@ internal void cv_stringize_leaf_array(Arena *arena, String8List *out,
7979

8080
internal void cv_stringize_c13_parsed(Arena *arena, String8List *out, CV_C13Parsed *c13);
8181

82+
internal String8 cv_string_from_inline_range_kind(CV_InlineRangeKind kind);
83+
8284
#endif // CODEVIEW_STRINGIZE_H

src/linker/lnk_debug_info.c

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4397,6 +4397,25 @@ THREAD_POOL_TASK_FUNC(lnk_convert_line_tables_to_rdi_task)
43974397
ProfEnd();
43984398
}
43994399

4400+
internal
4401+
THREAD_POOL_TASK_FUNC(lnk_build_inlinee_lines_accels_task)
4402+
{
4403+
ProfBeginFunction();
4404+
Temp scratch = scratch_begin(&arena, 1);
4405+
4406+
LNK_ConvertUnitToRDITask *task = raw_task;
4407+
CV_DebugS debug_s = task->debug_s_arr[task_id];
4408+
4409+
String8List raw_inlinee_lines = cv_sub_section_from_debug_s(debug_s, CV_C13SubSectionKind_InlineeLines);
4410+
CV_C13InlineeLinesParsedList inlinee_lines = cv_c13_inlinee_lines_from_sub_sections(arena, raw_inlinee_lines);
4411+
CV_InlineeLinesAccel *inlinee_lines_accel = cv_c13_make_inlinee_lines_accel(arena, inlinee_lines);
4412+
4413+
task->inlinee_lines_accel_arr[task_id] = inlinee_lines_accel;
4414+
4415+
scratch_end(scratch);
4416+
ProfEnd();
4417+
}
4418+
44004419
internal
44014420
THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
44024421
{
@@ -4917,7 +4936,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
49174936
} break;
49184937
case CV_SymKind_INLINESITE: {
49194938
CV_SymInlineSite *sym_inline_site = (CV_SymInlineSite *) symbol.data.str;
4920-
String8 binary_annots = str8((U8 *) (sym_inline_site + 1), symbol.data.size - sizeof(*sym_inline_site));
4939+
String8 binary_annots = str8_skip(symbol.data, sizeof(*sym_inline_site));
49214940

49224941
U64 parent_voff = 0;
49234942
if (scope_stack != 0) {
@@ -4972,7 +4991,7 @@ THREAD_POOL_TASK_FUNC(lnk_convert_symbols_to_rdi_task)
49724991

49734992
inline_site->convert_ref.ud0 = binary_annots_parsed.lines;
49744993
inline_site->convert_ref.ud1 = binary_annots_parsed.lines_count;
4975-
inline_site->convert_ref.ud2 = task_id;
4994+
inline_site->convert_ref.ud2 = symbols_input.obj_idx;
49764995

49774996
// fill out scope
49784997
RDIB_Scope *scope = rdib_scope_chunk_list_push(arena, &task->scopes[worker_id], task->symbol_chunk_cap);
@@ -5208,6 +5227,7 @@ lnk_build_rad_debug_info(TP_Context *tp,
52085227
udt_name_buckets = lnk_udt_name_hash_table_from_debug_t(tp, tp_arena, types[CV_TypeIndexSource_TPI], &udt_name_buckets_cap);
52095228
ProfEnd();
52105229

5230+
52115231
ProfBegin("Convert CodeView types to RDIB Types");
52125232
LNK_ConvertTypesToRDI task = {0};
52135233
task.types = types;
@@ -5349,6 +5369,11 @@ lnk_build_rad_debug_info(TP_Context *tp,
53495369
tp_for_parallel(tp, tp_arena, obj_count, lnk_convert_line_tables_to_rdi_task, &task);
53505370
ProfEnd();
53515371

5372+
ProfBegin("Build Inlinee Lines Accels");
5373+
task.inlinee_lines_accel_arr = push_array(scratch.arena, CV_InlineeLinesAccel *, obj_count);
5374+
tp_for_parallel(tp, tp_arena, obj_count, lnk_build_inlinee_lines_accels_task, &task);
5375+
ProfEnd();
5376+
53525377
ProfBegin("Convert Symbols");
53535378
tp_for_parallel(tp, tp_arena, total_symbol_input_count, lnk_convert_symbols_to_rdi_task, &task);
53545379
ProfEnd();

0 commit comments

Comments
 (0)