summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlex Richardson2020-05-15 13:43:07 +0100
committerAlex Richardson2020-05-15 13:44:00 +0100
commit363cf77a75cb8237fb13b028c0046b7817dbe734 (patch)
tree2f998c634e73ec2074bc0e07705a7b6f1ddc3705 /src
parente6354d8ceea7217e1544606c3c2b79bca4e582fe (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/jib/c_backend.ml8
1 files changed, 4 insertions, 4 deletions
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);";