mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Merge pull request #2380 from flysand7/master
Add -no-thread-local flag
This commit is contained in:
@@ -275,6 +275,7 @@ struct BuildContext {
|
|||||||
bool no_output_files;
|
bool no_output_files;
|
||||||
bool no_crt;
|
bool no_crt;
|
||||||
bool no_entry_point;
|
bool no_entry_point;
|
||||||
|
bool no_thread_local;
|
||||||
bool use_lld;
|
bool use_lld;
|
||||||
bool vet;
|
bool vet;
|
||||||
bool vet_extra;
|
bool vet_extra;
|
||||||
|
|||||||
+4
-1
@@ -1143,9 +1143,12 @@ gb_internal void check_global_variable_decl(CheckerContext *ctx, Entity *&e, Ast
|
|||||||
|
|
||||||
if (is_arch_wasm() && e->Variable.thread_local_model.len != 0) {
|
if (is_arch_wasm() && e->Variable.thread_local_model.len != 0) {
|
||||||
e->Variable.thread_local_model.len = 0;
|
e->Variable.thread_local_model.len = 0;
|
||||||
// NOTE(bill): ignore this message for the time begin
|
// NOTE(bill): ignore this message for the time being
|
||||||
// error(e->token, "@(thread_local) is not supported for this target platform");
|
// error(e->token, "@(thread_local) is not supported for this target platform");
|
||||||
}
|
}
|
||||||
|
if(build_context.no_thread_local) {
|
||||||
|
e->Variable.thread_local_model.len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
String context_name = str_lit("variable declaration");
|
String context_name = str_lit("variable declaration");
|
||||||
|
|
||||||
|
|||||||
@@ -634,6 +634,7 @@ enum BuildFlagKind {
|
|||||||
BuildFlag_Microarch,
|
BuildFlag_Microarch,
|
||||||
BuildFlag_TargetFeatures,
|
BuildFlag_TargetFeatures,
|
||||||
BuildFlag_MinimumOSVersion,
|
BuildFlag_MinimumOSVersion,
|
||||||
|
BuildFlag_NoThreadLocal,
|
||||||
|
|
||||||
BuildFlag_RelocMode,
|
BuildFlag_RelocMode,
|
||||||
BuildFlag_DisableRedZone,
|
BuildFlag_DisableRedZone,
|
||||||
@@ -794,6 +795,7 @@ gb_internal bool parse_build_flags(Array<String> args) {
|
|||||||
add_flag(&build_flags, BuildFlag_Debug, str_lit("debug"), BuildFlagParam_None, Command__does_check);
|
add_flag(&build_flags, BuildFlag_Debug, str_lit("debug"), BuildFlagParam_None, Command__does_check);
|
||||||
add_flag(&build_flags, BuildFlag_DisableAssert, str_lit("disable-assert"), BuildFlagParam_None, Command__does_check);
|
add_flag(&build_flags, BuildFlag_DisableAssert, str_lit("disable-assert"), BuildFlagParam_None, Command__does_check);
|
||||||
add_flag(&build_flags, BuildFlag_NoBoundsCheck, str_lit("no-bounds-check"), BuildFlagParam_None, Command__does_check);
|
add_flag(&build_flags, BuildFlag_NoBoundsCheck, str_lit("no-bounds-check"), BuildFlagParam_None, Command__does_check);
|
||||||
|
add_flag(&build_flags, BuildFlag_NoThreadLocal, str_lit("no-thread-local"), BuildFlagParam_None, Command__does_check);
|
||||||
add_flag(&build_flags, BuildFlag_NoDynamicLiterals, str_lit("no-dynamic-literals"), BuildFlagParam_None, Command__does_check);
|
add_flag(&build_flags, BuildFlag_NoDynamicLiterals, str_lit("no-dynamic-literals"), BuildFlagParam_None, Command__does_check);
|
||||||
add_flag(&build_flags, BuildFlag_NoCRT, str_lit("no-crt"), BuildFlagParam_None, Command__does_build);
|
add_flag(&build_flags, BuildFlag_NoCRT, str_lit("no-crt"), BuildFlagParam_None, Command__does_build);
|
||||||
add_flag(&build_flags, BuildFlag_NoEntryPoint, str_lit("no-entry-point"), BuildFlagParam_None, Command__does_check &~ Command_test);
|
add_flag(&build_flags, BuildFlag_NoEntryPoint, str_lit("no-entry-point"), BuildFlagParam_None, Command__does_check &~ Command_test);
|
||||||
@@ -1312,6 +1314,9 @@ gb_internal bool parse_build_flags(Array<String> args) {
|
|||||||
case BuildFlag_NoEntryPoint:
|
case BuildFlag_NoEntryPoint:
|
||||||
build_context.no_entry_point = true;
|
build_context.no_entry_point = true;
|
||||||
break;
|
break;
|
||||||
|
case BuildFlag_NoThreadLocal:
|
||||||
|
build_context.no_thread_local = true;
|
||||||
|
break;
|
||||||
case BuildFlag_UseLLD:
|
case BuildFlag_UseLLD:
|
||||||
build_context.use_lld = true;
|
build_context.use_lld = true;
|
||||||
break;
|
break;
|
||||||
@@ -2064,6 +2069,10 @@ gb_internal void print_show_help(String const arg0, String const &command) {
|
|||||||
print_usage_line(2, "Disables automatic linking with the C Run Time");
|
print_usage_line(2, "Disables automatic linking with the C Run Time");
|
||||||
print_usage_line(0, "");
|
print_usage_line(0, "");
|
||||||
|
|
||||||
|
print_usage_line(1, "-no-thread-local");
|
||||||
|
print_usage_line(2, "Ignore @thread_local attribute, effectively treating the program as if it is single-threaded");
|
||||||
|
print_usage_line(0, "");
|
||||||
|
|
||||||
print_usage_line(1, "-lld");
|
print_usage_line(1, "-lld");
|
||||||
print_usage_line(2, "Use the LLD linker rather than the default");
|
print_usage_line(2, "Use the LLD linker rather than the default");
|
||||||
print_usage_line(0, "");
|
print_usage_line(0, "");
|
||||||
|
|||||||
Reference in New Issue
Block a user