From 363cf77a75cb8237fb13b028c0046b7817dbe734 Mon Sep 17 00:00:00 2001 From: Alex Richardson Date: Fri, 15 May 2020 13:43:07 +0100 Subject: Also allow adding static to model_{init,fini,main}() Without this I get the following linker error when trying to include both 64 and 128 bit sail-riscv code in the same binary: duplicate symbol '_model_init' in: libsail_wrapper128.a(sail_wrapper_128.c.o) libsail_wrapper128.a(sail_wrapper_64.c.o) duplicate symbol '_model_main' in: libsail_wrapper128.a(sail_wrapper_128.c.o) libsail_wrapper128.a(sail_wrapper_64.c.o) duplicate symbol '_model_fini' in: libsail_wrapper128.a(sail_wrapper_128.c.o) libsail_wrapper128.a(sail_wrapper_64.c.o) # Conflicts: # src/jib/c_backend.ml --- src/jib/c_backend.ml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/jib/c_backend.ml b/src/jib/c_backend.ml index e5486645..e6610e93 100644 --- a/src/jib/c_backend.ml +++ b/src/jib/c_backend.ml @@ -2291,7 +2291,7 @@ let compile_ast env output_chan c_includes ast = in let model_init = separate hardline (List.map string - ( [ "void model_init(void)"; + ( [ "static void model_init(void)"; "{"; " setup_rts();" ] @ fst exn_boilerplate @@ -2303,7 +2303,7 @@ let compile_ast env output_chan c_includes ast = in let model_fini = separate hardline (List.map string - ( [ "void model_fini(void)"; + ( [ "static void model_fini(void)"; "{" ] @ letbind_finalizers @ List.concat (List.map (fun r -> snd (register_init_clear r)) regs) @@ -2313,8 +2313,8 @@ let compile_ast env output_chan c_includes ast = @ [ "}" ] )) in - let model_default_main = - ([ "int model_main(int argc, char *argv[])"; + let model_default_main = + ([ Printf.sprintf "%sint model_main(int argc, char *argv[])" (if !opt_static then "static " else ""); "{"; " model_init();"; " if (process_arguments(argc, argv)) exit(EXIT_FAILURE);"; -- cgit v1.2.3