3237fd89d4
resolves: rhbz#1975167
70 lines
2.4 KiB
Diff
70 lines
2.4 KiB
Diff
From 122db7141d292d63cfbe2c7d7a4280cc73194ece Mon Sep 17 00:00:00 2001
|
|
From: Xavier Leroy <xavierleroy@users.noreply.github.com>
|
|
Date: Wed, 5 Aug 2020 11:17:52 +0200
|
|
Subject: [PATCH 5/6] Fix type mismatches between definition and declaration
|
|
(#9830)
|
|
|
|
The C global variable caml_fl_merge and the C function
|
|
caml_spacetime_my_profinfo (bytecode version) were declared and
|
|
defined with different types. This is undefined behavior and
|
|
can cause link-time errors with link-time optimization (LTO).
|
|
|
|
Closes: #9825
|
|
---
|
|
runtime/major_gc.c | 4 ++--
|
|
runtime/spacetime_byt.c | 7 ++++++-
|
|
2 files changed, 8 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/runtime/major_gc.c b/runtime/major_gc.c
|
|
index 5e4f06bce..c8f5a3281 100644
|
|
--- a/runtime/major_gc.c
|
|
+++ b/runtime/major_gc.c
|
|
@@ -63,7 +63,7 @@ uintnat caml_dependent_size, caml_dependent_allocated;
|
|
double caml_extra_heap_resources;
|
|
uintnat caml_fl_wsz_at_phase_change = 0;
|
|
|
|
-extern char *caml_fl_merge; /* Defined in freelist.c. */
|
|
+extern value caml_fl_merge; /* Defined in freelist.c. */
|
|
|
|
static char *markhp, *chunk, *limit;
|
|
static double p_backlog = 0.0; /* backlog for the gc speedup parameter */
|
|
@@ -570,7 +570,7 @@ static void sweep_slice (intnat work)
|
|
break;
|
|
case Caml_blue:
|
|
/* Only the blocks of the free-list are blue. See [freelist.c]. */
|
|
- caml_fl_merge = Bp_hp (hp);
|
|
+ caml_fl_merge = (value) Bp_hp (hp);
|
|
break;
|
|
default: /* gray or black */
|
|
CAMLassert (Color_hd (hd) == Caml_black);
|
|
diff --git a/runtime/spacetime_byt.c b/runtime/spacetime_byt.c
|
|
index 2b0bf1dc2..b75fb0980 100644
|
|
--- a/runtime/spacetime_byt.c
|
|
+++ b/runtime/spacetime_byt.c
|
|
@@ -12,8 +12,12 @@
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
+#define CAML_INTERNALS
|
|
+
|
|
#include "caml/fail.h"
|
|
#include "caml/mlvalues.h"
|
|
+#include "caml/io.h"
|
|
+#include "caml/spacetime.h"
|
|
|
|
int caml_ensure_spacetime_dot_o_is_included = 42;
|
|
|
|
@@ -22,7 +26,8 @@ CAMLprim value caml_spacetime_only_works_for_native_code(value foo, ...)
|
|
caml_failwith("Spacetime profiling only works for native code");
|
|
}
|
|
|
|
-uintnat caml_spacetime_my_profinfo (void)
|
|
+uintnat caml_spacetime_my_profinfo (spacetime_unwind_info_cache * cached,
|
|
+ uintnat wosize)
|
|
{
|
|
return 0;
|
|
}
|
|
--
|
|
2.32.0
|
|
|