From 55fbbb09d7a214011ae1d7664e8e02797e6263db Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Thu, 3 Sep 2026 14:50:14 -0700 Subject: [PATCH] fixes for the GCC build --- build.sh | 14 ++++--- src/base/base_core.h | 2 +- src/base/base_log.c | 6 +-- src/base/base_log.h | 1 + src/base/base_strings.c | 10 ++--- src/base/base_strings.h | 2 +- src/base/base_thread_context.c | 5 +-- src/base/base_thread_context.h | 5 +++ src/lib_rdi/rdi_parse.c | 2 +- src/linker/base_ext/base_core.c | 38 +++++++++---------- src/linker/codeview_ext/codeview.c | 2 +- src/linker/hash_table.c | 28 +++++++------- src/linker/lnk.c | 2 +- src/linker/lnk_obj.c | 6 +-- src/linker/pdb_ext/pdb_builder.c | 10 ++--- src/pe/pe.h | 2 +- src/rdi_from_dwarf/rdi_from_dwarf.c | 8 ++-- .../rad_lzb_simple/rad_lzb_simple.h | 2 +- src/third_party/radsort/radsort.h | 6 +-- src/torture/torture.c | 2 +- 20 files changed, 78 insertions(+), 75 deletions(-) diff --git a/build.sh b/build.sh index a3d11950..c481af6e 100755 --- a/build.sh +++ b/build.sh @@ -49,6 +49,10 @@ if [[ "${release:-0}" == "1" ]]; then echo "[release mode]"; compile="$compile elif [[ "${debug:-1}" == "1" ]]; then echo "[debug mode]"; compile="$compiler $cc_debug"; fi +compile() { + $compile -Wl,--start-group "$@" blake3.a -latomic -Wl,--end-group +} + # --- Prep Directories -------------------------------------------------------- mkdir -p build local @@ -75,11 +79,11 @@ fi # --- Build Everything (@build_targets) --------------------------------------- cd build -if [[ "${raddbg:-0}" == "1" ]]; then didbuild=1 && $compile ../src/raddbg/raddbg_main.c $cc_icon $cc_link $cc_os_gfx $cc_render $cc_font_provider -o raddbg; fi -if [[ "${raddbg_non_graphical:-0}" == "1" ]]; then didbuild=1 && $compile ../src/raddbg/raddbg_main.c -DWM_STUB=1 -DR_BACKEND=R_BACKEND_STUB $cc_link $cc_os_gfx $cc_render $cc_font_provider -o raddbg_non_graphical; fi -if [[ "${radbin:-0}" == "1" ]]; then didbuild=1 && $compile ../src/radbin/radbin_main.c $cc_link -o radbin; fi -if [[ "${radlink:-0}" == "1" ]]; then didbuild=1 && $compile ../src/linker/lnk.c $cc_link -o radlink blake3.a; fi -if [[ "${torture:-0}" == "1" ]]; then didbuild=1 && $compile ../src/torture/torture_main.c $cc_link $cc_os_gfx $cc_render $cc_font_provider -o torture; fi +if [[ "${raddbg:-0}" == "1" ]]; then didbuild=1 && compile ../src/raddbg/raddbg_main.c $cc_icon $cc_link $cc_os_gfx $cc_render $cc_font_provider -o raddbg; fi +if [[ "${raddbg_non_graphical:-0}" == "1" ]]; then didbuild=1 && compile ../src/raddbg/raddbg_main.c -DWM_STUB=1 -DR_BACKEND=R_BACKEND_STUB $cc_link $cc_os_gfx $cc_render $cc_font_provider -o raddbg_non_graphical; fi +if [[ "${radbin:-0}" == "1" ]]; then didbuild=1 && compile ../src/radbin/radbin_main.c $cc_link -o radbin; fi +if [[ "${radlink:-0}" == "1" ]]; then didbuild=1 && compile ../src/linker/lnk.c $cc_link -o radlink; fi +if [[ "${torture:-0}" == "1" ]]; then didbuild=1 && compile ../src/torture/torture_main.c $cc_link $cc_os_gfx $cc_render $cc_font_provider -o torture; fi cd .. # --- Warn On No Builds ------------------------------------------------------- diff --git a/src/base/base_core.h b/src/base/base_core.h index 43831617..05b9213c 100644 --- a/src/base/base_core.h +++ b/src/base/base_core.h @@ -54,7 +54,7 @@ #if COMPILER_MSVC # define force_inline __forceinline #elif COMPILER_CLANG || COMPILER_GCC -# define force_inline __attribute__((always_inline)) +# define force_inline inline __attribute__((always_inline)) #else # error force_inline not defined for this compiler. #endif diff --git a/src/base/base_log.c b/src/base/base_log.c index 5adf5a8a..4f471a05 100644 --- a/src/base/base_log.c +++ b/src/base/base_log.c @@ -4,11 +4,7 @@ //////////////////////////////// //~ rjf: Globals/Thread-Locals -C_LINKAGE thread_static Log *log_active; -#if !BUILD_SUPPLEMENTARY_UNIT -C_LINKAGE thread_static Log *log_active = 0; -#endif - +thread_static Log *log_active; String8 g_logs_folder; //////////////////////////////// diff --git a/src/base/base_log.h b/src/base/base_log.h index 8ef71a37..ef30a18d 100644 --- a/src/base/base_log.h +++ b/src/base/base_log.h @@ -40,6 +40,7 @@ struct Log // Globals extern String8 g_logs_folder; +extern thread_static Log *log_active; //////////////////////////////// //~ rjf: Log Creation/Selection diff --git a/src/base/base_strings.c b/src/base/base_strings.c index 209b0e37..60c69eed 100644 --- a/src/base/base_strings.c +++ b/src/base/base_strings.c @@ -196,7 +196,7 @@ str32_zero(void) } internal String8 -str8_cstring(char *c) +str8_cstring(const char *c) { String8 result = {(U8*)c, cstring8_length((U8*)c)}; return result; @@ -3076,7 +3076,7 @@ str8_deserial_read_sleb128(String8 string, U64 off, S64 *value_out) //////////////////////////////// -force_inline int +internal force_inline int str8_compar(String8 a, String8 b, B32 ignore_case) { U64 size = Min(a.size, b.size); @@ -3095,19 +3095,19 @@ str8_compar(String8 a, String8 b, B32 ignore_case) return cmp; } -force_inline int +internal force_inline int str8_compar_ignore_case(const void *a, const void *b) { return str8_compar(*(String8*)a, *(String8*)b, 1); } -force_inline int +internal force_inline int str8_compar_case_sensitive(const void *a, const void *b) { return str8_compar(*(String8*)a, *(String8*)b, 0); } -force_inline int +internal force_inline int str8_is_before_case_sensitive(const void *a, const void *b) { int cmp = str8_compar_case_sensitive(a, b); diff --git a/src/base/base_strings.h b/src/base/base_strings.h index 84cd6aa0..27cdc9d1 100644 --- a/src/base/base_strings.h +++ b/src/base/base_strings.h @@ -180,7 +180,7 @@ internal String16 str16_zero(void); internal String32 str32(U32 *str, U64 size); internal String32 str32_range(U32 *first, U32 *one_past_last); internal String32 str32_zero(void); -internal String8 str8_cstring(char *c); +internal String8 str8_cstring(const char *c); internal String16 str16_cstring(U16 *c); internal String32 str32_cstring(U32 *c); internal String8 str8_cstring_capped(void *cstr, void *cap); diff --git a/src/base/base_thread_context.c b/src/base/base_thread_context.c index 42163610..617fcc3d 100644 --- a/src/base/base_thread_context.c +++ b/src/base/base_thread_context.c @@ -4,10 +4,7 @@ //////////////////////////////// //~ rjf: Globals -C_LINKAGE thread_static TCTX *tctx_thread_local; -#if !BUILD_SUPPLEMENTARY_UNIT -C_LINKAGE thread_static TCTX *tctx_thread_local = 0; -#endif +thread_static TCTX *tctx_thread_local; //////////////////////////////// //~ rjf: Thread Context Functions diff --git a/src/base/base_thread_context.h b/src/base/base_thread_context.h index 494d1804..584d83c7 100644 --- a/src/base/base_thread_context.h +++ b/src/base/base_thread_context.h @@ -79,6 +79,11 @@ struct TCTX U64 *progress_target_ptr; }; +//////////////////////////////// +// Globals + +extern thread_static TCTX *tctx_thread_local; + //////////////////////////////// //~ rjf: Thread Context Functions diff --git a/src/lib_rdi/rdi_parse.c b/src/lib_rdi/rdi_parse.c index 375a07fb..425e48f3 100644 --- a/src/lib_rdi/rdi_parse.c +++ b/src/lib_rdi/rdi_parse.c @@ -67,7 +67,7 @@ typedef S32 RAD_S32; #if defined(_MSC_VER) # define RADFORCEINLINE __forceinline #elif defined(__clang__) || defined(__GNUC__) -# define RADFORCEINLINE __attribute__((always_inline)) +# define RADFORCEINLINE inline __attribute__((always_inline)) #else # error need force inline for this compiler #endif diff --git a/src/linker/base_ext/base_core.c b/src/linker/base_ext/base_core.c index 890b0831..0d6b1f26 100644 --- a/src/linker/base_ext/base_core.c +++ b/src/linker/base_ext/base_core.c @@ -23,7 +23,7 @@ make_version(U64 major, U64 minor) return version; } -internal int +internal force_inline int version_compar(Version a, Version b) { int cmp = 0; @@ -48,7 +48,7 @@ isect_off(U32 isect, U32 off) return result; } -internal int +internal force_inline int u16_compar(const void *raw_a, const void *raw_b) { U16 a = *(U16*)raw_a; @@ -59,7 +59,7 @@ u16_compar(const void *raw_a, const void *raw_b) return result; } -internal int +internal force_inline int u32_compar(const void *raw_a, const void *raw_b) { U32 a = *(U32*)raw_a; @@ -70,7 +70,7 @@ u32_compar(const void *raw_a, const void *raw_b) return result; } -internal int +internal force_inline int u64_compar(const void *raw_a, const void *raw_b) { U64 a = *(const U64*)raw_a; @@ -79,7 +79,7 @@ u64_compar(const void *raw_a, const void *raw_b) return result; } -internal int +internal force_inline int u64_compar_inv(const void *raw_a, const void *raw_b) { U64 a = *(const U64*)raw_a; @@ -88,7 +88,7 @@ u64_compar_inv(const void *raw_a, const void *raw_b) return result; } -internal int +internal force_inline int u16_compar_is_before(void *raw_a, void *raw_b) { U16 *a = (U16 *)raw_a; @@ -97,7 +97,7 @@ u16_compar_is_before(void *raw_a, void *raw_b) return is_before; } -internal int +internal force_inline int u32_compar_is_before(void *raw_a, void *raw_b) { U32 *a = (U32 *)raw_a; @@ -106,7 +106,7 @@ u32_compar_is_before(void *raw_a, void *raw_b) return is_before; } -internal int +internal force_inline int u64_compar_is_before(void *raw_a, void *raw_b) { U64 *a = (U64 *)raw_a; @@ -115,7 +115,7 @@ u64_compar_is_before(void *raw_a, void *raw_b) return is_before; } -internal int +internal force_inline int u8_is_before(void *raw_a, void *raw_b) { U8 *a = (U8 *) raw_a; @@ -123,7 +123,7 @@ u8_is_before(void *raw_a, void *raw_b) return *a < *b; } -internal int +internal force_inline int u16_is_before(void *raw_a, void *raw_b) { U16 *a = (U16 *) raw_a; @@ -131,7 +131,7 @@ u16_is_before(void *raw_a, void *raw_b) return *a < *b; } -internal int +internal force_inline int u32_is_before(void *raw_a, void *raw_b) { U32 *a = (U32 *) raw_a; @@ -139,7 +139,7 @@ u32_is_before(void *raw_a, void *raw_b) return *a < *b; } -internal int +internal force_inline int u64_is_before(void *raw_a, void *raw_b) { U64 *a = (U64 *) raw_a; @@ -147,7 +147,7 @@ u64_is_before(void *raw_a, void *raw_b) return *a < *b; } -internal int +internal force_inline int pair_u32_is_before_v0(void *raw_a, void *raw_b) { PairU32 *a = raw_a; @@ -155,7 +155,7 @@ pair_u32_is_before_v0(void *raw_a, void *raw_b) return a->v0 < b->v0; } -internal int +internal force_inline int pair_u32_is_before(void *raw_a, void *raw_b) { PairU32 *a = raw_a; @@ -163,7 +163,7 @@ pair_u32_is_before(void *raw_a, void *raw_b) return a->v1 < b->v1; } -internal int +internal force_inline int pair_u64_is_before_v0(void *raw_a, void *raw_b) { PairU64 *a = raw_a; @@ -171,7 +171,7 @@ pair_u64_is_before_v0(void *raw_a, void *raw_b) return a->v0 < b->v0; } -internal int +internal force_inline int pair_u64_is_before_v1(void *raw_a, void *raw_b) { PairU64 *a = raw_a; @@ -179,7 +179,7 @@ pair_u64_is_before_v1(void *raw_a, void *raw_b) return a->v1 < b->v1; } -internal int +internal force_inline int pair_u32_compar_v0(const void *raw_a, const void *raw_b) { const PairU32 *a = raw_a; @@ -187,7 +187,7 @@ pair_u32_compar_v0(const void *raw_a, const void *raw_b) return u32_compar(&a->v0, &b->v0); } -internal int +internal force_inline int pair_u64_compar_v0(const void *raw_a, const void *raw_b) { const PairU64 *a = raw_a; @@ -195,7 +195,7 @@ pair_u64_compar_v0(const void *raw_a, const void *raw_b) return u64_compar(&a->v0, &b->v0); } -internal int +internal force_inline int pair_u64_compar_v1(const void *raw_a, const void *raw_b) { const PairU64 *a = raw_a; diff --git a/src/linker/codeview_ext/codeview.c b/src/linker/codeview_ext/codeview.c index 11592f7a..c76f78a5 100644 --- a/src/linker/codeview_ext/codeview.c +++ b/src/linker/codeview_ext/codeview.c @@ -1635,7 +1635,7 @@ cv_c13_voff_map_compar(const void *raw_a, const void *raw_b) return cmp; } -force_inline int +internal force_inline int cv_c13_voff_map_is_before(void *raw_a, void *raw_b) { return cv_c13_voff_map_compar(raw_a, raw_b) < 0; diff --git a/src/linker/hash_table.c b/src/linker/hash_table.c index 66c9938c..23eddc0e 100644 --- a/src/linker/hash_table.c +++ b/src/linker/hash_table.c @@ -655,11 +655,11 @@ hash_map_purge(HashMap *hm) //////////////////////////////// -force_inline HASH_MAP_KEY_MATCH(hash_map_match_u32) { return a->key_u32 == b->key_u32; } -force_inline HASH_MAP_KEY_MATCH(hash_map_match_u64) { return a->key_u64 == b->key_u64; } -force_inline HASH_MAP_KEY_MATCH(hash_map_match_raw) { return a->key_raw == b->key_raw; } -force_inline HASH_MAP_KEY_MATCH(hash_map_match_string) { return str8_match(a->key_string, b->key_string, 0); } -force_inline HASH_MAP_KEY_MATCH(hash_map_match_path) { return str8_match(a->key_string, b->key_string, StringMatchFlag_CaseInsensitive|StringMatchFlag_SlashInsensitive); } +internal force_inline HASH_MAP_KEY_MATCH(hash_map_match_u32) { return a->key_u32 == b->key_u32; } +internal force_inline HASH_MAP_KEY_MATCH(hash_map_match_u64) { return a->key_u64 == b->key_u64; } +internal force_inline HASH_MAP_KEY_MATCH(hash_map_match_raw) { return a->key_raw == b->key_raw; } +internal force_inline HASH_MAP_KEY_MATCH(hash_map_match_string) { return str8_match(a->key_string, b->key_string, 0); } +internal force_inline HASH_MAP_KEY_MATCH(hash_map_match_path) { return str8_match(a->key_string, b->key_string, StringMatchFlag_CaseInsensitive|StringMatchFlag_SlashInsensitive); } internal U64 hash_map_hash_from_path(String8 path) @@ -949,29 +949,29 @@ hash_map_extract(Arena *arena, } // { keys, value } -force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_key_value) { MemoryCopy(buffer, kv, sizeof(*kv)); } +internal force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_key_value) { MemoryCopy(buffer, kv, sizeof(*kv)); } internal HashMapKeyValue * key_value_from_hash_map ( Arena *arena, HashMap *hm) { return hash_map_extract(arena, hm, hash_map_extract_key_value, sizeof(HashMapKeyValue), 0, 0).keys; } // keys -force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_key_u32) { MemoryCopy(buffer, &kv->key.key_u32, sizeof(kv->key.key_u32)); } -force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_key_u64) { MemoryCopy(buffer, &kv->key.key_u64, sizeof(kv->key.key_u64)); } -force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_key_string) { MemoryCopy(buffer, &kv->key.key_string, sizeof(kv->key.key_string)); } +internal force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_key_u32) { MemoryCopy(buffer, &kv->key.key_u32, sizeof(kv->key.key_u32)); } +internal force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_key_u64) { MemoryCopy(buffer, &kv->key.key_u64, sizeof(kv->key.key_u64)); } +internal force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_key_string) { MemoryCopy(buffer, &kv->key.key_string, sizeof(kv->key.key_string)); } internal U32 * keys_from_hash_map_u32 ( Arena *arena, HashMap *hm) { return hash_map_extract(arena, hm, hash_map_extract_key_u32, sizeof(U32), 0, 0).keys; } internal U64 * keys_from_hash_map_u64 ( Arena *arena, HashMap *hm) { return hash_map_extract(arena, hm, hash_map_extract_key_u64, sizeof(U64), 0, 0).keys; } internal String8 * keys_from_hash_map_string( Arena *arena, HashMap *hm) { return hash_map_extract(arena, hm, hash_map_extract_key_string, sizeof(String8), 0, 0).keys; } internal void * keys_from_hash_map_raw ( Arena *arena, HashMap *hm) { return hash_map_extract(arena, hm, hash_map_extract_key_string, sizeof(void *), 0, 0).keys; } // values -force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_value_u64) { MemoryCopy(buffer, &kv->value.value_u64, sizeof(kv->value.value_u64)); } -force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_value_raw) { MemoryCopy(buffer, &kv->value.value_raw, sizeof(kv->value.value_raw)); } +internal force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_value_u64) { MemoryCopy(buffer, &kv->value.value_u64, sizeof(kv->value.value_u64)); } +internal force_inline HASH_MAP_EXTRACT_FUNC(hash_map_extract_value_raw) { MemoryCopy(buffer, &kv->value.value_raw, sizeof(kv->value.value_raw)); } internal U64 * values_from_hash_map_u64(Arena *arena, HashMap *hm) { return hash_map_extract(arena, hm, 0, 0, hash_map_extract_value_u64, sizeof(U64)).values; } internal void * values_from_hash_map_raw(Arena *arena, HashMap *hm) {return hash_map_extract(arena, hm, 0, 0, hash_map_extract_value_raw, sizeof(void *)).values; } //////////////////////////////// -force_inline int hash_map_key_is_before_u32(void *a, void *b) { return ((HashMapKeyValue*)a)->key.key_u32 < ((HashMapKeyValue*)b)->key.key_u32; } -force_inline int hash_map_key_is_before_u64(void *a, void *b) { return ((HashMapKeyValue*)a)->key.key_u64 < ((HashMapKeyValue*)b)->key.key_u64; } -force_inline int hash_map_key_is_before_string(void *a, void *b) { return str8_is_before_case_sensitive(a, b); } +internal force_inline int hash_map_key_is_before_u32(void *a, void *b) { return ((HashMapKeyValue*)a)->key.key_u32 < ((HashMapKeyValue*)b)->key.key_u32; } +internal force_inline int hash_map_key_is_before_u64(void *a, void *b) { return ((HashMapKeyValue*)a)->key.key_u64 < ((HashMapKeyValue*)b)->key.key_u64; } +internal force_inline int hash_map_key_is_before_string(void *a, void *b) { return str8_is_before_case_sensitive(a, b); } internal void sort_hash_map_key_value_u32(HashMapKeyValue *pairs, U64 count) { radsort(pairs, count, hash_map_key_is_before_u32); } internal void sort_hash_map_key_value_u64(HashMapKeyValue *pairs, U64 count) { radsort(pairs, count, hash_map_key_is_before_u64); } diff --git a/src/linker/lnk.c b/src/linker/lnk.c index f24030a7..2a9bf39f 100644 --- a/src/linker/lnk.c +++ b/src/linker/lnk.c @@ -1109,7 +1109,7 @@ lnk_lib_member_ref_is_before(void *raw_a, void *raw_b) g_sort_lib_member_context[(*b)->member_idx].link); } -force_inline int +internal force_inline int lnk_import_ref_is_before(void *raw_a, void *raw_b) { LNK_LibMemberRef **a_ptr = raw_a, **b_ptr = raw_b; diff --git a/src/linker/lnk_obj.c b/src/linker/lnk_obj.c index b79edf31..0c7a0a02 100644 --- a/src/linker/lnk_obj.c +++ b/src/linker/lnk_obj.c @@ -976,7 +976,7 @@ lnk_directive_info_from_raw_directives(Arena *arena, LNK_Obj *obj, String8List r return directive_info; } -force_inline int +internal force_inline int lnk_section_offset_symbol_is_before(void *raw_a, void *raw_b) { LNK_SectionOffsetSymbol *a = raw_a, *b = raw_b; @@ -1084,7 +1084,7 @@ lnk_debug_s_from_obj(Arena *arena, LNK_Obj *obj) return debug_s; } -force_inline int +internal force_inline int lnk_line_table_block_is_before(void *raw_a, void *raw_b) { LNK_LineTableBlock *a = raw_a, *b = raw_b; @@ -1094,7 +1094,7 @@ lnk_line_table_block_is_before(void *raw_a, void *raw_b) return key_a < key_b; } -force_inline int +internal force_inline int lnk_inline_range_is_before(void *raw_a, void *raw_b) { LNK_InlineRange *a = raw_a, *b = raw_b; diff --git a/src/linker/pdb_ext/pdb_builder.c b/src/linker/pdb_ext/pdb_builder.c index fbe2c9ae..f1084429 100644 --- a/src/linker/pdb_ext/pdb_builder.c +++ b/src/linker/pdb_ext/pdb_builder.c @@ -1833,14 +1833,14 @@ typedef struct PDB_PsiAddrMapNameSortTask Rng1U64 *batch_arr; } PDB_PsiAddrMapNameSortTask; -force_inline U64 +internal force_inline U64 psi_addr_map_sort_key(PDB_GsiSortRecord *record) { U64 key = ((U64)record->isect_off.isect << 32) | record->isect_off.off; return key; } -force_inline int +internal force_inline int psi_addr_map_name_compar_is_before(void *raw_a, void *raw_b) { PDB_PsiAddrMapSortRecord *a = raw_a; @@ -1903,7 +1903,7 @@ THREAD_POOL_TASK_FUNC(psi_addr_map_radix_sort_task) ProfEnd(); } -force_inline U64 +internal force_inline U64 psi_addr_map_name_sort_work(Rng1U64 run) { U64 count = dim_1u64(run); @@ -2084,7 +2084,7 @@ THREAD_POOL_TASK_FUNC(gsi_size_buckets_task) } } -force_inline int +internal force_inline int gsi_symbol_is_before(void *raw_a, void *raw_b) { CV_Symbol *a = *(CV_Symbol **)raw_a; @@ -2113,7 +2113,7 @@ gsi_symbol_is_before(void *raw_a, void *raw_b) return is_before; } -force_inline int +internal force_inline int gsi_pub_symbol_is_before(void *raw_a, void *raw_b) { CV_Symbol *a = *(CV_Symbol **)raw_a; diff --git a/src/pe/pe.h b/src/pe/pe.h index 169b47c1..a1d9d9a1 100644 --- a/src/pe/pe.h +++ b/src/pe/pe.h @@ -526,7 +526,7 @@ struct PE_IntelPdata #define PE_CODEVIEW_PDB20_MAGIC 0x3031424e #define PE_CODEVIEW_PDB70_MAGIC 0x53445352 -#define PE_CODEVIEW_RDI_MAGIC '0IDR' +#define PE_CODEVIEW_RDI_MAGIC 0x30494452 // 0IDR typedef struct PE_CvHeaderPDB20 PE_CvHeaderPDB20; struct PE_CvHeaderPDB20 diff --git a/src/rdi_from_dwarf/rdi_from_dwarf.c b/src/rdi_from_dwarf/rdi_from_dwarf.c index 3e05376b..ce77f122 100644 --- a/src/rdi_from_dwarf/rdi_from_dwarf.c +++ b/src/rdi_from_dwarf/rdi_from_dwarf.c @@ -2040,10 +2040,10 @@ d2r_convert(Arena *arena, D2R_ConvertParams *params) // This compiles to in DWARF: // // foo -> DW_TAG_ArrayType -> (A0) DW_TAG_Subrange [2] - // \ - // -> (B0) DW_TAG_PointerType -> (A1) DW_TAG_ArrayType -> DW_TAG_Subrange [3] - // \ - // -> (B1) DW_TAG_BaseType (int) + // | + // +-> (B0) DW_TAG_PointerType -> (A1) DW_TAG_ArrayType -> DW_TAG_Subrange [3] + // | + // +-> (B1) DW_TAG_BaseType (int) // // RDI expects: // diff --git a/src/third_party/rad_lzb_simple/rad_lzb_simple.h b/src/third_party/rad_lzb_simple/rad_lzb_simple.h index 719639d4..062ddd8c 100644 --- a/src/third_party/rad_lzb_simple/rad_lzb_simple.h +++ b/src/third_party/rad_lzb_simple/rad_lzb_simple.h @@ -61,7 +61,7 @@ typedef S32 RAD_S32; #if defined(_MSC_VER) # define RADFORCEINLINE __forceinline #elif defined(__clang__) || defined(__GNUC__) -# define RADFORCEINLINE __attribute__((always_inline)) +# define RADFORCEINLINE inline __attribute__((always_inline)) #else # error need force inline for this compiler #endif diff --git a/src/third_party/radsort/radsort.h b/src/third_party/radsort/radsort.h index ee84f863..dbfbd11c 100644 --- a/src/third_party/radsort/radsort.h +++ b/src/third_party/radsort/radsort.h @@ -24,7 +24,7 @@ #define RSFORCEINLINE __forceinline __declspec(safebuffers) #define CompilerReset(ptr) __assume(ptr) #else -#define RSFORCEINLINE __attribute__((always_inline)) +#define RSFORCEINLINE inline __attribute__((always_inline)) #define CompilerReset(ptr) #endif @@ -137,7 +137,7 @@ radsortmovesize( sizeof( (start)[0] ) ), \ //=================================================================================================== // small heap sort - this sort is around 200 bytes compiled - can use directly when size is important -RSFORCEINLINE void radheapsortinteral( void * start, size_t len, size_t element_size, is_before_func * is_before, swap_func * swapper ) +internal RSFORCEINLINE void radheapsortinteral( void * start, size_t len, size_t element_size, is_before_func * is_before, swap_func * swapper ) { void * left; void * right; @@ -430,7 +430,7 @@ rs_es = element_size; #define RSS_MAX_RECURSE 128 -RSFORCEINLINE void radsortinternal( void * start, size_t len, size_t element_size, is_before_func * is_before, swap_func * swapper, move_func * mover, rs_small_sort_func * small_sort, size_t small_sort_thres, void * tmp ) +static RSFORCEINLINE void radsortinternal( void * start, size_t len, size_t element_size, is_before_func * is_before, swap_func * swapper, move_func * mover, rs_small_sort_func * small_sort, size_t small_sort_thres, void * tmp ) { void * left; size_t length; diff --git a/src/torture/torture.c b/src/torture/torture.c index bd33a8f7..c703c589 100644 --- a/src/torture/torture.c +++ b/src/torture/torture.c @@ -948,7 +948,7 @@ t_match_linef(String8 *output, char *fmt, ...) return is_match; } -force_inline int +internal force_inline int t_test_info_is_before(void *a_, void *b_) { TestInfo **a = a_;