mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-16 00:52:23 -07:00
update code block dividers
This commit is contained in:
committed by
Ryan Fleury
parent
46663688e2
commit
0aadf60359
+8
-19
@@ -1,18 +1,16 @@
|
||||
// Copyright (c) 2025 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
////////////////////////////////
|
||||
// Build Options
|
||||
// --- Build Options -----------------------------------------------------------
|
||||
|
||||
#define BUILD_CONSOLE_INTERFACE 1
|
||||
#define BUILD_TITLE "Epic Games Tools (R) RAD PE/COFF Linker"
|
||||
|
||||
////////////////////////////////
|
||||
// --- Arena -------------------------------------------------------------------
|
||||
|
||||
#define ARENA_FREE_LIST 1
|
||||
|
||||
////////////////////////////////
|
||||
// Third Party
|
||||
// --- Third Party -------------------------------------------------------------
|
||||
|
||||
#include "base_ext/base_blake3.h"
|
||||
#include "base_ext/base_blake3.c"
|
||||
@@ -22,8 +20,7 @@
|
||||
#include "third_party/xxHash/xxhash.h"
|
||||
#include "third_party/radsort/radsort.h"
|
||||
|
||||
////////////////////////////////
|
||||
// Code Base
|
||||
// --- Code Base ---------------------------------------------------------------
|
||||
|
||||
#if defined(__clang__)
|
||||
# pragma clang diagnostic push
|
||||
@@ -78,8 +75,7 @@
|
||||
# pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
// RDI
|
||||
// --- RDI ---------------------------------------------------------------------
|
||||
|
||||
#include "rdi/rdi_overrides.h"
|
||||
#include "lib_rdi_format/rdi_format.h"
|
||||
@@ -87,8 +83,7 @@
|
||||
#include "lib_rdi_format/rdi_format.c"
|
||||
#include "rdi/rdi.c"
|
||||
|
||||
////////////////////////////////
|
||||
// Code Base Extensions
|
||||
// --- Code Base Extensions ----------------------------------------------------
|
||||
|
||||
#include "base_ext/base_inc.h"
|
||||
#include "thread_pool/thread_pool.h"
|
||||
@@ -106,8 +101,7 @@
|
||||
#include "pdb_ext/pdb_helpers.c"
|
||||
#include "pdb_ext/pdb_builder.c"
|
||||
|
||||
////////////////////////////////
|
||||
// RDI Builder
|
||||
// --- RDI Builder -------------------------------------------------------------
|
||||
|
||||
#include "rdi/rdi_builder.h"
|
||||
#include "rdi/rdi_coff.h"
|
||||
@@ -117,8 +111,7 @@
|
||||
#include "rdi/rdi_coff.c"
|
||||
#include "rdi/rdi_cv.c"
|
||||
|
||||
////////////////////////////////
|
||||
// Linker
|
||||
// --- Linker ------------------------------------------------------------------
|
||||
|
||||
#include "lnk_error.h"
|
||||
#include "lnk_log.h"
|
||||
@@ -149,12 +142,8 @@
|
||||
#include "lnk_lib.c"
|
||||
#include "lnk_debug_info.c"
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
global read_only LNK_SectionContrib g_null_sc;
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal LNK_Config *
|
||||
lnk_config_from_argcv(Arena *arena, int argc, char **argv)
|
||||
{
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// Copyright (c) 2025 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal
|
||||
THREAD_POOL_TASK_FUNC(lnk_parse_debug_s_task)
|
||||
{
|
||||
@@ -802,10 +800,6 @@ lnk_make_code_view_input(TP_Context *tp, TP_Arena *tp_arena, LNK_IO_Flags io_fla
|
||||
return cv;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
// Leaf Deduper
|
||||
|
||||
|
||||
internal LNK_LeafRef
|
||||
lnk_leaf_ref(U32 enc_loc_idx, U32 enc_leaf_idx)
|
||||
{
|
||||
@@ -1451,8 +1445,6 @@ lnk_leaf_hash_table_search(LNK_LeafHashTable *ht, LNK_CodeViewInput *input, LNK_
|
||||
return match;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal
|
||||
THREAD_POOL_TASK_FUNC(lnk_count_per_source_leaf_task)
|
||||
{
|
||||
@@ -2674,9 +2666,6 @@ lnk_replace_type_names_with_hashes(TP_Context *tp, TP_Arena *arena, CV_DebugT de
|
||||
ProfEnd();
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
// PDB Builder
|
||||
|
||||
internal
|
||||
THREAD_POOL_TASK_FUNC(lnk_filter_out_gsi_symbols_task)
|
||||
{
|
||||
@@ -3034,8 +3023,6 @@ THREAD_POOL_TASK_FUNC(lnk_push_dbi_sec_contrib_task)
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal
|
||||
THREAD_POOL_TASK_FUNC(lnk_build_pdb_public_symbols_defined_task)
|
||||
{
|
||||
@@ -3369,9 +3356,6 @@ lnk_build_pdb(TP_Context *tp,
|
||||
return page_data_list;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
// RAD Debug Info
|
||||
|
||||
internal U64
|
||||
lnk_udt_name_hash_table_hash(String8 string)
|
||||
{
|
||||
|
||||
+11
-16
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////
|
||||
// --- Code View Input ---------------------------------------------------------
|
||||
|
||||
typedef struct LNK_PchInfo
|
||||
{
|
||||
@@ -60,7 +60,7 @@ typedef struct LNK_CodeViewInput
|
||||
Rng1U64 external_obj_range;
|
||||
} LNK_CodeViewInput;
|
||||
|
||||
////////////////////////////////
|
||||
// --- Leaf Ref ----------------------------------------------------------------
|
||||
|
||||
typedef enum
|
||||
{
|
||||
@@ -118,7 +118,7 @@ typedef union
|
||||
U128Array **v[CV_TypeIndexSource_COUNT];
|
||||
} LNK_LeafHashes;
|
||||
|
||||
////////////////////////////////
|
||||
// --- Symbol Parsing Tasks ----------------------------------------------------
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -155,7 +155,7 @@ typedef struct
|
||||
B8 *is_corrupted;
|
||||
} LNK_GetExternalLeavesTask;
|
||||
|
||||
////////////////////////////////
|
||||
// --- Leaf Deduping Tasks -----------------------------------------------------
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -261,7 +261,7 @@ typedef struct
|
||||
Arena **fixed_arena_arr;
|
||||
} LNK_PatchLeavesTask;
|
||||
|
||||
////////////////////////////////
|
||||
// --- Code View Processing Trasks ---------------------------------------------
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -378,8 +378,7 @@ typedef struct
|
||||
String8List *maps;
|
||||
} LNK_TypeNameReplacer;
|
||||
|
||||
////////////////////////////////
|
||||
// RAD Debug Info
|
||||
// --- RAD Debug Info ----------------------------------------------------------
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -405,7 +404,7 @@ typedef struct
|
||||
CV_TypeIndex *fwdmap;
|
||||
} LNK_BuildUDTFwdMapTask;
|
||||
|
||||
////////////////////////////////
|
||||
// --- RDI Conversion Tasks ----------------------------------------------------
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -492,8 +491,7 @@ typedef struct
|
||||
RDIB_LineTableChunkList *line_tables;
|
||||
} LNK_ConvertUnitToRDITask;
|
||||
|
||||
////////////////////////////////
|
||||
// CodeView
|
||||
// --- CodeView ----------------------------------------------------------------
|
||||
|
||||
internal CV_DebugS * lnk_parse_debug_s_sections(TP_Context *tp, TP_Arena *arena, U64 obj_count, LNK_Obj **obj_arr, String8List *sect_list_arr);
|
||||
internal CV_DebugT * lnk_parse_debug_t_sections(TP_Context *tp, TP_Arena *arena, U64 obj_count, LNK_Obj **obj_arr, String8List *debug_t_list_arr);
|
||||
@@ -536,8 +534,7 @@ internal CV_DebugT * lnk_import_types(TP_Context *tp, TP_Arena *tp_temp,
|
||||
|
||||
internal void lnk_replace_type_names_with_hashes(TP_Context *tp, TP_Arena *arena, CV_DebugT debug_t, LNK_TypeNameHashMode mode, U64 hash_length, String8 map_name);
|
||||
|
||||
////////////////////////////////
|
||||
// RAD Debug info
|
||||
// --- RAD Debug info ----------------------------------------------------------
|
||||
|
||||
internal U64 lnk_udt_name_hash_table_hash(String8 string);
|
||||
internal LNK_UDTNameBucket ** lnk_udt_name_hash_table_from_debug_t(TP_Context *tp, TP_Arena *arena, CV_DebugT debug_t, U64 *buckets_cap_out);
|
||||
@@ -563,8 +560,7 @@ internal String8List lnk_build_rad_debug_info(TP_Context *tp,
|
||||
CV_SymbolListArray *parsed_symbols,
|
||||
CV_DebugT types[CV_TypeIndexSource_COUNT]);
|
||||
|
||||
////////////////////////////////
|
||||
// PDB
|
||||
// --- PDB ---------------------------------------------------------------------
|
||||
|
||||
internal LNK_ProcessedCodeViewC11Data lnk_process_c11_data(TP_Context *tp, TP_Arena *arena, U64 obj_count, CV_DebugS *debug_s_arr, U64 string_data_base_offset, CV_StringHashTable string_ht, MSF_Context *msf, PDB_DbiModule **mod_arr);
|
||||
internal LNK_ProcessedCodeViewC13Data lnk_process_c13_data(TP_Context *tp, TP_Arena *arena, U64 obj_count, CV_DebugS *debug_s_arr, U64 string_data_base_offset, CV_StringHashTable string_ht, MSF_Context *msf, PDB_DbiModule **mod_arr);
|
||||
@@ -586,8 +582,7 @@ internal String8List lnk_build_pdb(TP_Context *tp,
|
||||
CV_SymbolListArray *parsed_symbols,
|
||||
CV_DebugT types[CV_TypeIndexSource_COUNT]);
|
||||
|
||||
////////////////////////////////
|
||||
// RAD Debug Info
|
||||
// --- RAD Debug Info ----------------------------------------------------------
|
||||
|
||||
internal U64 lnk_udt_name_hash_table_hash(String8 string);
|
||||
internal LNK_UDTNameBucket ** lnk_udt_name_hash_table_from_debug_t(TP_Context *tp, TP_Arena *arena, CV_DebugT debug_t, U64 *buckets_cap_out);
|
||||
|
||||
+6
-12
@@ -1,6 +1,3 @@
|
||||
////////////////////////////////
|
||||
// Shared File API
|
||||
|
||||
shared_function int
|
||||
lnk_open_file_read(char *path, uint64_t path_size, void *handle_buffer, uint64_t handle_buffer_max)
|
||||
{
|
||||
@@ -51,8 +48,6 @@ lnk_write_file(void *raw_handle, uint64_t offset, void *buffer, uint64_t buffer_
|
||||
return write_size;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal String8List
|
||||
lnk_file_search(Arena *arena, String8List dir_list, String8 file_path)
|
||||
{
|
||||
@@ -104,7 +99,7 @@ internal OS_Handle
|
||||
lnk_file_open_with_rename_permissions(String8 path)
|
||||
{
|
||||
OS_Handle file_handle = os_handle_zero();
|
||||
#if _WIN32
|
||||
#if OS_WINDOWS
|
||||
Temp scratch = scratch_begin(0,0);
|
||||
|
||||
// open file with permissions to rename
|
||||
@@ -123,7 +118,7 @@ lnk_file_open_with_rename_permissions(String8 path)
|
||||
|
||||
scratch_end(scratch);
|
||||
#else
|
||||
#error "TODO: file rename"
|
||||
# error "TODO: file rename"
|
||||
#endif
|
||||
return file_handle;
|
||||
}
|
||||
@@ -131,12 +126,12 @@ lnk_file_open_with_rename_permissions(String8 path)
|
||||
internal B32
|
||||
lnk_file_set_delete_on_close(OS_Handle handle, B32 delete_file)
|
||||
{
|
||||
#if _WIN32
|
||||
#if OS_WINDOWS
|
||||
FILE_DISPOSITION_INFO file_disposition = {0};
|
||||
file_disposition.DeleteFile = (BOOL)delete_file;
|
||||
B32 is_set = SetFileInformationByHandle((HANDLE)handle.u64[0], FileDispositionInfo, &file_disposition, sizeof(file_disposition));
|
||||
#else
|
||||
#error "TODO: file rename"
|
||||
# error "TODO: file rename"
|
||||
#endif
|
||||
return is_set;
|
||||
}
|
||||
@@ -145,7 +140,7 @@ internal B32
|
||||
lnk_file_rename(OS_Handle handle, String8 new_name)
|
||||
{
|
||||
Temp scratch = scratch_begin(0,0);
|
||||
#if _WIN32
|
||||
#if OS_WINDOWS
|
||||
String16 new_name16 = str16_from_8(scratch.arena, new_name);
|
||||
|
||||
U64 file_rename_info_size = sizeof(FILE_RENAME_INFO);
|
||||
@@ -218,7 +213,7 @@ internal
|
||||
THREAD_POOL_TASK_FUNC(lnk_memory_map_file_task)
|
||||
{
|
||||
LNK_DiskReader *task = raw_task;
|
||||
#if _WIN32
|
||||
#if OS_WINDOWS
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
String16 path16 = str16_from_8(scratch.arena, task->path_arr.v[task_id]);
|
||||
HANDLE file_handle = CreateFileW(path16.str, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
|
||||
@@ -376,4 +371,3 @@ lnk_write_data_to_file_path(String8 path, String8 temp_path, String8 data)
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-7
@@ -1,15 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
typedef U32 LNK_IO_Flags;
|
||||
enum
|
||||
{
|
||||
LNK_IO_Flags_MemoryMapFiles = (1 << 0),
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LNK_IO_Flags io_flags;
|
||||
@@ -21,8 +17,7 @@ typedef struct
|
||||
U8 *buffer;
|
||||
} LNK_DiskReader;
|
||||
|
||||
////////////////////////////////
|
||||
// Shared File API
|
||||
// --- Shared File API ---------------------------------------------------------
|
||||
|
||||
shared_function int lnk_open_file_read(char *path, uint64_t path_size, void *handle_buffer, uint64_t handle_buffer_max);
|
||||
shared_function int lnk_open_file_write(char *path, uint64_t path_size, void *handle_buffer, uint64_t handle_buffer_max);
|
||||
@@ -31,7 +26,7 @@ shared_function uint64_t lnk_size_from_file(void *raw_handle);
|
||||
shared_function uint64_t lnk_read_file(void *raw_handle, void *buffer, uint64_t buffer_max);
|
||||
shared_function uint64_t lnk_write_file(void *raw_handle, uint64_t offset, void *buffer, uint64_t buffer_size);
|
||||
|
||||
////////////////////////////////
|
||||
// --- IO Functions ------------------------------------------------------------
|
||||
|
||||
internal String8List lnk_file_search(Arena *arena, String8List dir_list, String8 file_path);
|
||||
|
||||
|
||||
@@ -34,8 +34,6 @@ typedef struct LNK_LibList
|
||||
struct LNK_LibNode *last;
|
||||
} LNK_LibList;
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LNK_LibNode *node_arr;
|
||||
@@ -44,8 +42,6 @@ typedef struct
|
||||
U64 base_input_idx;
|
||||
} LNK_LibIniter;
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal LNK_Lib lnk_lib_from_data(Arena *arena, String8 data, String8 path);
|
||||
internal LNK_LibNodeArray lnk_lib_list_push_parallel(TP_Context *tp, TP_Arena *arena, LNK_LibList *list, String8Array data_arr, String8Array path_arr);
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// Copyright (c) 2025 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal LNK_Symbol *
|
||||
lnk_make_defined_symbol(Arena *arena, String8 name, struct LNK_Obj *obj, U32 symbol_idx)
|
||||
{
|
||||
@@ -45,8 +43,6 @@ lnk_make_import_symbol(Arena *arena, String8 name, String8 import_header)
|
||||
return symbol;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal void
|
||||
lnk_symbol_list_push_node(LNK_SymbolList *list, LNK_SymbolNode *node)
|
||||
{
|
||||
@@ -107,50 +103,6 @@ lnk_symbol_array_from_list(Arena *arena, LNK_SymbolList list)
|
||||
return arr;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal ISectOff
|
||||
lnk_sc_from_symbol(LNK_Symbol *symbol)
|
||||
{
|
||||
COFF_ParsedSymbol parsed_symbol = lnk_parsed_symbol_from_coff_symbol_idx(symbol->u.defined.obj, symbol->u.defined.symbol_idx);
|
||||
|
||||
ISectOff sc = {0};
|
||||
sc.isect = parsed_symbol.section_number;
|
||||
sc.off = parsed_symbol.value;
|
||||
|
||||
return sc;
|
||||
}
|
||||
|
||||
internal U64
|
||||
lnk_isect_from_symbol(LNK_Symbol *symbol)
|
||||
{
|
||||
return lnk_sc_from_symbol(symbol).isect;
|
||||
}
|
||||
|
||||
internal U64
|
||||
lnk_sect_off_from_symbol(LNK_Symbol *symbol)
|
||||
{
|
||||
return lnk_sc_from_symbol(symbol).off;
|
||||
}
|
||||
|
||||
internal U64
|
||||
lnk_virt_off_from_symbol(COFF_SectionHeader **section_table, LNK_Symbol *symbol)
|
||||
{
|
||||
ISectOff sc = lnk_sc_from_symbol(symbol);
|
||||
U64 voff = section_table[sc.isect]->voff + sc.off;
|
||||
return voff;
|
||||
}
|
||||
|
||||
internal U64
|
||||
lnk_file_off_from_symbol(COFF_SectionHeader **section_table, LNK_Symbol *symbol)
|
||||
{
|
||||
ISectOff sc = lnk_sc_from_symbol(symbol);
|
||||
U64 foff = section_table[sc.isect]->foff + sc.off;
|
||||
return foff;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal LNK_SymbolHashTrie *
|
||||
lnk_symbol_hash_trie_chunk_list_push(Arena *arena, LNK_SymbolHashTrieChunkList *list, U64 cap)
|
||||
{
|
||||
@@ -498,8 +450,6 @@ lnk_symbol_hash_trie_remove(LNK_SymbolHashTrie *trie)
|
||||
ins_atomic_ptr_eval_assign(&trie->symbol, 0);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal U64
|
||||
lnk_symbol_hash(String8 string)
|
||||
{
|
||||
@@ -607,3 +557,44 @@ lnk_symbol_table_push_alt_name(LNK_SymbolTable *symtab, LNK_Obj *obj, String8 fr
|
||||
}
|
||||
}
|
||||
|
||||
internal ISectOff
|
||||
lnk_sc_from_symbol(LNK_Symbol *symbol)
|
||||
{
|
||||
COFF_ParsedSymbol parsed_symbol = lnk_parsed_symbol_from_coff_symbol_idx(symbol->u.defined.obj, symbol->u.defined.symbol_idx);
|
||||
|
||||
ISectOff sc = {0};
|
||||
sc.isect = parsed_symbol.section_number;
|
||||
sc.off = parsed_symbol.value;
|
||||
|
||||
return sc;
|
||||
}
|
||||
|
||||
internal U64
|
||||
lnk_isect_from_symbol(LNK_Symbol *symbol)
|
||||
{
|
||||
return lnk_sc_from_symbol(symbol).isect;
|
||||
}
|
||||
|
||||
internal U64
|
||||
lnk_sect_off_from_symbol(LNK_Symbol *symbol)
|
||||
{
|
||||
return lnk_sc_from_symbol(symbol).off;
|
||||
}
|
||||
|
||||
internal U64
|
||||
lnk_virt_off_from_symbol(COFF_SectionHeader **section_table, LNK_Symbol *symbol)
|
||||
{
|
||||
ISectOff sc = lnk_sc_from_symbol(symbol);
|
||||
U64 voff = section_table[sc.isect]->voff + sc.off;
|
||||
return voff;
|
||||
}
|
||||
|
||||
internal U64
|
||||
lnk_file_off_from_symbol(COFF_SectionHeader **section_table, LNK_Symbol *symbol)
|
||||
{
|
||||
ISectOff sc = lnk_sc_from_symbol(symbol);
|
||||
U64 foff = section_table[sc.isect]->foff + sc.off;
|
||||
return foff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
typedef enum
|
||||
{
|
||||
LNK_Symbol_Null,
|
||||
@@ -111,24 +109,14 @@ typedef struct LNK_SymbolTable
|
||||
HashTable *alt_names;
|
||||
} LNK_SymbolTable;
|
||||
|
||||
////////////////////////////////
|
||||
// parallel for wrappers
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LNK_SymbolTable *symtab;
|
||||
Rng1U64 *ranges;
|
||||
LNK_Symbol *arr;
|
||||
} LNK_LazySymbolInserter;
|
||||
|
||||
////////////////////////////////
|
||||
// --- Symbol Make -------------------------------------------------------------
|
||||
|
||||
internal LNK_Symbol * lnk_make_defined_symbol(Arena *arena, String8 name, struct LNK_Obj *obj, U32 symbol_idx);
|
||||
internal LNK_Symbol * lnk_make_lib_symbol(Arena *arena, String8 name, struct LNK_Lib *lib, U64 member_offset);
|
||||
internal LNK_Symbol * lnk_make_undefined_symbol(Arena *arena, String8 name, struct LNK_Obj *obj);
|
||||
internal LNK_Symbol * lnk_make_import_symbol(Arena *arena, String8 name, String8 import_header);
|
||||
|
||||
////////////////////////////////
|
||||
// --- Symbol List -------------------------------------------------------------
|
||||
|
||||
internal void lnk_symbol_list_push_node(LNK_SymbolList *list, LNK_SymbolNode *node);
|
||||
internal LNK_SymbolNode * lnk_symbol_list_push(Arena *arena, LNK_SymbolList *list, LNK_Symbol *symbol);
|
||||
@@ -137,21 +125,13 @@ internal LNK_SymbolList lnk_symbol_list_from_array(Arena *arena, LNK_Symbol
|
||||
internal LNK_SymbolNodeArray lnk_symbol_node_array_from_list(Arena *arena, LNK_SymbolList list);
|
||||
internal LNK_SymbolArray lnk_symbol_array_from_list(Arena *arena, LNK_SymbolList list);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal ISectOff lnk_sc_from_symbol (LNK_Symbol *symbol);
|
||||
internal U64 lnk_isect_from_symbol (LNK_Symbol *symbol);
|
||||
internal U64 lnk_sect_off_from_symbol(LNK_Symbol *symbol);
|
||||
internal U64 lnk_virt_off_from_symbol(COFF_SectionHeader **section_table, LNK_Symbol *symbol);
|
||||
internal U64 lnk_file_off_from_symbol(COFF_SectionHeader **section_table, LNK_Symbol *symbol);
|
||||
|
||||
////////////////////////////////
|
||||
// --- Symbol Hash Trie --------------------------------------------------------
|
||||
|
||||
internal void lnk_symbol_hash_trie_insert_or_replace(Arena *arena, LNK_SymbolHashTrieChunkList *chunks, LNK_SymbolHashTrie **trie, U64 hash, LNK_Symbol *symbol);
|
||||
internal LNK_SymbolHashTrie * lnk_symbol_hash_trie_search(LNK_SymbolHashTrie *trie, U64 hash, String8 name);
|
||||
internal void lnk_symbol_hash_trie_remove(LNK_SymbolHashTrie *trie);
|
||||
|
||||
////////////////////////////////
|
||||
// --- Symbol Table ------------------------------------------------------------
|
||||
|
||||
internal U64 lnk_symbol_hash(String8 string);
|
||||
|
||||
@@ -165,3 +145,10 @@ internal void lnk_symbol_table_remove(LNK_SymbolTable *symtab, LNK_
|
||||
|
||||
internal void lnk_symbol_table_push_alt_name(LNK_SymbolTable *symtab, struct LNK_Obj *obj, String8 from, String8 to);
|
||||
|
||||
// --- Symbol Contrib Helpers --------------------------------------------------
|
||||
|
||||
internal ISectOff lnk_sc_from_symbol (LNK_Symbol *symbol);
|
||||
internal U64 lnk_isect_from_symbol (LNK_Symbol *symbol);
|
||||
internal U64 lnk_sect_off_from_symbol(LNK_Symbol *symbol);
|
||||
internal U64 lnk_virt_off_from_symbol(COFF_SectionHeader **section_table, LNK_Symbol *symbol);
|
||||
internal U64 lnk_file_off_from_symbol(COFF_SectionHeader **section_table, LNK_Symbol *symbol);
|
||||
|
||||
Reference in New Issue
Block a user