From 9cccabfa2188024060507eefda6d07cb04993e87 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 16 Feb 2024 13:33:45 -0800 Subject: [PATCH] transfer over string baking --- src/lib_raddbgi_make/raddbgi_make.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/lib_raddbgi_make/raddbgi_make.c b/src/lib_raddbgi_make/raddbgi_make.c index d6fa628a..10f4218ab7 100644 --- a/src/lib_raddbgi_make/raddbgi_make.c +++ b/src/lib_raddbgi_make/raddbgi_make.c @@ -2588,7 +2588,34 @@ rdim_bake(RDIM_Arena *arena, RDIM_BakeParams *params) // RDIM_ProfScope("build sections for strings") { - + RDI_U32 *str_offs = rdim_push_array_no_zero(arena, RDI_U32, strings.count + 1); + RDI_U32 off_cursor = 0; + { + RDI_U32 *off_ptr = str_offs; + *off_ptr = 0; + off_ptr += 1; + for(RDIM_BakeStringNode *node = strings.order_first; + node != 0; + node = node->order_next) + { + off_cursor += node->string.size; + *off_ptr = off_cursor; + off_ptr += 1; + } + } + RDI_U8 *buf = rdim_push_array(arena, RDI_U8, off_cursor); + { + RDI_U8 *ptr = buf; + for(RDIM_BakeStringNode *node = strings.order_first; + node != 0; + node = node->order_next) + { + rdim_memcpy(ptr, node->string.str, node->string.size); + ptr += node->string.size; + } + } + rdim_bake_section_list_push_new(arena, §ions, str_offs, sizeof(RDI_U32)*(strings.count+1), RDI_DataSectionTag_StringTable); + rdim_bake_section_list_push_new(arena, §ions, buf, off_cursor, RDI_DataSectionTag_StringData); } //////////////////////////////