diff options
| author | Alex Richardson | 2020-05-15 13:43:07 +0100 |
|---|---|---|
| committer | Alex Richardson | 2020-05-15 13:44:00 +0100 |
| commit | 363cf77a75cb8237fb13b028c0046b7817dbe734 (patch) | |
| tree | 2f998c634e73ec2074bc0e07705a7b6f1ddc3705 /src | |
| parent | e6354d8ceea7217e1544606c3c2b79bca4e582fe (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.ml | 8 |
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);"; |
