From 13dd6fd10348112ddb35b66701169483a71b55db Mon Sep 17 00:00:00 2001 From: David Allsopp Date: Tue, 27 Sep 2022 14:42:04 +0100 Subject: [PATCH 1/2] Correct macros in lf_skiplist test CAMLextern used on declarations instead of CAMLprim --- testsuite/tests/lf_skiplist/stubs.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/testsuite/tests/lf_skiplist/stubs.c b/testsuite/tests/lf_skiplist/stubs.c index 5a20d6d99c6..991483e4082 100644 --- a/testsuite/tests/lf_skiplist/stubs.c +++ b/testsuite/tests/lf_skiplist/stubs.c @@ -5,7 +5,7 @@ #include #define FMT ARCH_INTNAT_PRINTF_FORMAT -CAMLextern value test_skiplist_serial(value val) { +CAMLprim value test_skiplist_serial(value val) { CAMLparam0(); struct lf_skiplist list; @@ -39,7 +39,7 @@ CAMLextern value test_skiplist_serial(value val) { static struct lf_skiplist the_list; -CAMLextern value init_skiplist(value val) { +CAMLprim value init_skiplist(value val) { CAMLparam0(); caml_lf_skiplist_init(&the_list); @@ -47,7 +47,7 @@ CAMLextern value init_skiplist(value val) { CAMLreturn(Val_unit); } -CAMLextern value cardinal_skiplist(value val) { +CAMLprim value cardinal_skiplist(value val) { CAMLparam0(); uintnat r = 0; FOREACH_LF_SKIPLIST_ELEMENT(p,&the_list,r++); @@ -77,7 +77,7 @@ static uintnat count_marks(struct lf_skiplist *sk) { return r; } -CAMLextern value clean_skiplist(value val) { +CAMLprim value clean_skiplist(value val) { CAMLparam1(val); intnat v = Long_val(val) ; @@ -96,7 +96,7 @@ CAMLextern value clean_skiplist(value val) { CAMLreturn(Val_unit); } -CAMLextern value hammer_skiplist(value domain_id_val) { +CAMLprim value hammer_skiplist(value domain_id_val) { CAMLparam1(domain_id_val); uintnat domain_id = Long_val(domain_id_val); @@ -132,7 +132,7 @@ inline static uintnat calc_value(uintnat id) { return id; } inline static uintnat calc_key(uintnat id,uintnat turn) { return 1024*id+turn+1; } inline static uintnat calc_right(uintnat id,uintnat turn,uintnat ndoms) { return (id+turn) % ndoms; } -CAMLextern value insert_skiplist(value turn_val,value ndoms_val,value domain_id_val) { +CAMLprim value insert_skiplist(value turn_val,value ndoms_val,value domain_id_val) { CAMLparam3(turn_val,ndoms_val,domain_id_val); uintnat domain_id = Long_val(domain_id_val); uintnat ndoms = Long_val(ndoms_val); @@ -145,7 +145,7 @@ CAMLextern value insert_skiplist(value turn_val,value ndoms_val,value domain_id_ CAMLreturn(Val_unit); } -CAMLextern value find_skiplist(value turn_val,value ndoms_val,value domain_id_val) { +CAMLprim value find_skiplist(value turn_val,value ndoms_val,value domain_id_val) { CAMLparam3(turn_val,ndoms_val,domain_id_val); uintnat domain_id = Long_val(domain_id_val); uintnat ndoms = Long_val(ndoms_val); From 6533b48e5a17e61599ede42652612bdce7a877b0 Mon Sep 17 00:00:00 2001 From: David Allsopp Date: Tue, 27 Sep 2022 19:58:20 +0100 Subject: [PATCH 2/2] Symbols requiring CAMLextern for Windows --- runtime/caml/backtrace_prim.h | 2 +- runtime/caml/fiber.h | 2 +- runtime/caml/signals.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/caml/backtrace_prim.h b/runtime/caml/backtrace_prim.h index 91d8ca937e6..14cd0d93641 100644 --- a/runtime/caml/backtrace_prim.h +++ b/runtime/caml/backtrace_prim.h @@ -81,7 +81,7 @@ void caml_debuginfo_location(debuginfo dbg, /*out*/ struct caml_loc_info * li); /* Allocate Caml_state->backtrace_buffer. Returns 0 on success, -1 otherwise */ int caml_alloc_backtrace_buffer(void); -void caml_free_backtrace_buffer(backtrace_slot *backtrace_buffer); +CAMLextern void caml_free_backtrace_buffer(backtrace_slot *backtrace_buffer); #ifndef NATIVE_CODE /* These two functions are used by the bytecode runtime when loading diff --git a/runtime/caml/fiber.h b/runtime/caml/fiber.h index 07c8f17ff9e..133a3ba0df1 100644 --- a/runtime/caml/fiber.h +++ b/runtime/caml/fiber.h @@ -248,7 +248,7 @@ void caml_maybe_expand_stack(void); CAMLextern void caml_free_stack(struct stack_info* stk); /* gc_regs_buckets is allocated on-demand by [maybe_expand_stack]. */ -void caml_free_gc_regs_buckets(value *gc_regs_buckets); +CAMLextern void caml_free_gc_regs_buckets(value *gc_regs_buckets); #ifdef NATIVE_CODE void caml_get_stack_sp_pc (struct stack_info* stack, diff --git a/runtime/caml/signals.h b/runtime/caml/signals.h index 14d2bbbd5fa..490446e7698 100644 --- a/runtime/caml/signals.h +++ b/runtime/caml/signals.h @@ -76,8 +76,8 @@ value caml_process_pending_actions_with_root_exn (value extra_root); void caml_init_signal_handling(void); void caml_init_signals(); void caml_terminate_signals(); -void * caml_init_signal_stack(void); -void caml_free_signal_stack(void *); +CAMLextern void * caml_init_signal_stack(void); +CAMLextern void caml_free_signal_stack(void *); /* These hooks are not modified after other threads are spawned. */ CAMLextern void (*caml_enter_blocking_section_hook)(void);