From fbc98f4dd543eabf990342fc121bd1cb0166a2dc Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Wed, 26 Aug 2020 18:04:11 -0700 Subject: [PATCH] bifcl: Postpone initialization of constants for subdir BIFs --- tools/bifcl/builtin-func.y | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/bifcl/builtin-func.y b/tools/bifcl/builtin-func.y index 0688f16611..da63657732 100644 --- a/tools/bifcl/builtin-func.y +++ b/tools/bifcl/builtin-func.y @@ -16,6 +16,7 @@ using namespace std; extern int line_number; extern char* input_filename; extern char* plugin; +extern int alternative_mode; #define print_line_directive(fp) fprintf(fp, "\n#line %d \"%s\"\n", line_number, input_filename) @@ -535,6 +536,9 @@ const_def: TOK_CONST opt_ws TOK_ID opt_ws ':' opt_ws TOK_ID opt_ws ';' builtin_types[typeidx].c_type, decl.bare_name.c_str(), decl.c_namespace_end.c_str()); + if ( alternative_mode && ! plugin ) + fprintf(fp_netvar_init, "\tzeek::detail::bif_initializers.emplace_back([]()\n"); + fprintf(fp_netvar_init, "\t{\n"); fprintf(fp_netvar_init, "\tconst auto& v = zeek::id::find_const%s(\"%s\");\n", builtin_types[typeidx].cast_smart, decl.bro_fullname.c_str()); @@ -544,6 +548,9 @@ const_def: TOK_CONST opt_ws TOK_ID opt_ws ':' opt_ws TOK_ID opt_ws ';' decl.c_fullname.c_str(), accessor); fprintf(fp_netvar_init, "\t}\n"); + if ( alternative_mode && ! plugin ) + fprintf(fp_netvar_init, "\t);\n"); + record_bif_item(decl.bro_fullname.c_str(), "CONSTANT"); }