From 85ee02158508c690862a65aa710f7cff66aa9a4f Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Fri, 24 Dec 2021 23:15:50 +0100 Subject: [PATCH] Adding missing symtab size option. --- src/build/build_options.c | 9 +++++++++ src/build/build_options.h | 1 + src/build/builder.c | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/build/build_options.c b/src/build/build_options.c index 26dd68f8c..9f202b082 100644 --- a/src/build/build_options.c +++ b/src/build/build_options.c @@ -420,6 +420,15 @@ static void parse_option(BuildOptions *options) error_exit("error: The TinyBackend is not supported on this platform."); #endif } + if (match_longopt("symtab")) + { + if (at_end() || next_is_opt()) error_exit("error: --symtab needs a valid integer."); + const char *symtab_string = next_arg(); + int symtab = atoi(symtab_string); + if (symtab < 1024) OUTPUT("Expected a valid positive integer >= 1024."); + options->symtab_size = next_highest_power_of_2(symtab); + return; + } if (match_longopt("version")) { print_version(); diff --git a/src/build/build_options.h b/src/build/build_options.h index d7d56ab42..8f35e80de 100644 --- a/src/build/build_options.h +++ b/src/build/build_options.h @@ -188,6 +188,7 @@ typedef struct BuildOptions_ const char* project_name; const char* target_select; const char* path; + uint32_t symtab_size; unsigned version; CompilerBackend backend; CompilerCommand command; diff --git a/src/build/builder.c b/src/build/builder.c index 3ed33ca0d..cf7d09e39 100644 --- a/src/build/builder.c +++ b/src/build/builder.c @@ -156,7 +156,7 @@ void init_default_build_target(BuildTarget *target, BuildOptions *options) .name = options->output_name, .optimization_level = OPTIMIZATION_DEFAULT, .size_optimization_level = SIZE_OPTIMIZATION_NONE, - .symtab_size = DEFAULT_SYMTAB_SIZE, + .symtab_size = options->symtab_size ? options->symtab_size : DEFAULT_SYMTAB_SIZE, .switchrange_max_size = DEFAULT_SWITCHRANGE_MAX_SIZE, .debug_info = DEBUG_INFO_NONE, .arch_os_target = ARCH_OS_TARGET_DEFAULT,