This commit is contained in:
uglyside
2024-12-22 10:35:36 +03:00
parent 49d2d05f71
commit d83de4b791
13 changed files with 44 additions and 7936 deletions
+27 -28
View File
@@ -2,44 +2,43 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Licensed under the GNU General Public License, version 3. # Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt # See the file https://www.gnu.org/licenses/gpl-3.0.txt
from pisi.actionsapi import shelltools
from pisi.actionsapi import autotools from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import get from pisi.actionsapi import get
import os
i = ''.join([
' -prefix /usr',
' -bindir /usr/bin',
' -libdir /usr/lib/ocaml',
' -mandir /usr/share/man',
' --disable-installing-bytecode-programs '
])
def setup(): def setup():
#shelltools.export("CFLAGS", get.CFLAGS().replace("-fomit-frame-pointer", "")) autotools.rawConfigure(i)
#shelltools.export("LDFLAGS", get.LDFLAGS())
autotools.rawConfigure("-prefix /usr \
-bindir /usr/bin \
-libdir /usr/lib/ocaml \
-mandir /usr/share/man \
--with-pthread")
def build(): def build():
autotools.make("-j1 world") autotools.make("world.opt")
autotools.make("-j1 opt")
autotools.make("-j1 opt.opt") def check():
#autotools.make("-C emacs ocamltags") autotools.make("ocamltest")
autotools.make("-C testsuite parallel")
def install(): def install():
autotools.rawInstall("DESTDIR=%s" % get.installDIR()) destdir = get.installDIR()
#autotools.rawInstall("BINDIR=%(install)s/usr/bin \ autotools.rawInstall("DESTDIR=%s" % destdir)
#LIBDIR=%(install)s/usr/lib/ocaml \
#MANDIR=%(install)s/usr/share/man" \
#% { "install": get.installDIR()})
pisitools.dodoc("Changes", "LICENSE", "README*") pisitools.remove("/usr/bin/ocamldoc")
pisitools.dosym("ocamldoc.opt", "/usr/bin/ocamldoc")
dir__t = "%s/usr/lib/ocaml" % destdir
for dir__t, dirs, files in os.walk(dir__t):
for l in files:
if l.endswith((".cmt", ".cmti", ".ml")):
shelltools.unlink(os.path.join(dir__t, l))
''' autotools.rawInstall("-C emacs \ pisitools.dodoc("LICENSE")
BINDIR=%(install)s/usr/bin \
EMACSDIR=%(install)s/usr/share/emacs/site-lisp"
% { "install": get.installDIR()})
'''
# Remove rpaths from stublibs .so files
shelltools.system("chrpath --delete %s/usr/lib/ocaml/stublibs/*.so"
% get.installDIR())
@@ -1,27 +0,0 @@
From d3bc916ff1bc467c503e21015db9c1e2a47a64f2 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 24 Jun 2014 10:00:15 +0100
Subject: [PATCH 1/5] Don't add rpaths to libraries.
---
tools/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/Makefile b/tools/Makefile
index ee0e0be4c..7c96b6405 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -153,8 +153,8 @@ $(call byte_and_opt,ocamlmklib,ocamlmklibconfig.cmo config.cmo \
ocamlmklibconfig.ml: $(ROOTDIR)/Makefile.config Makefile
(echo 'let bindir = "$(BINDIR)"'; \
echo 'let supports_shared_libraries = $(SUPPORTS_SHARED_LIBRARIES)';\
- echo 'let default_rpath = "$(RPATH)"'; \
- echo 'let mksharedlibrpath = "$(MKSHAREDLIBRPATH)"'; \
+ echo 'let default_rpath = ""'; \
+ echo 'let mksharedlibrpath = ""'; \
echo 'let toolpref = "$(TOOLPREF)"';) \
> ocamlmklibconfig.ml
--
2.22.0.rc3
@@ -1,240 +0,0 @@
From 118057a71576cb39d71633bf80a37815bf4ff932 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 29 May 2012 20:40:36 +0100
Subject: [PATCH 2/8] ocamlbyteinfo, ocamlplugininfo: Useful utilities from
Debian, sent upstream.
See:
http://git.debian.org/?p=pkg-ocaml-maint/packages/ocaml.git;a=tree;f=debian/ocamlbyteinfo;hb=HEAD
---
ocamlbyteinfo.ml | 101 +++++++++++++++++++++++++++++++++++++++++
ocamlplugininfo.ml | 109 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 210 insertions(+)
create mode 100644 ocamlbyteinfo.ml
create mode 100644 ocamlplugininfo.ml
diff --git a/ocamlbyteinfo.ml b/ocamlbyteinfo.ml
new file mode 100644
index 000000000..0a537e4d5
--- /dev/null
+++ b/ocamlbyteinfo.ml
@@ -0,0 +1,101 @@
+(***********************************************************************)
+(* *)
+(* Objective Caml *)
+(* *)
+(* Xavier Leroy, projet Gallium, INRIA Rocquencourt *)
+(* *)
+(* Copyright 2009 Institut National de Recherche en Informatique et *)
+(* en Automatique. All rights reserved. This file is distributed *)
+(* under the terms of the GNU Library General Public License, with *)
+(* the special exception on linking described in file ../../LICENSE. *)
+(* *)
+(***********************************************************************)
+
+(* $Id$ *)
+
+(* Dumps a bytecode binary file *)
+
+open Sys
+open Dynlinkaux
+
+let input_stringlist ic len =
+ let get_string_list sect len =
+ let rec fold s e acc =
+ if e != len then
+ if sect.[e] = '\000' then
+ fold (e+1) (e+1) (String.sub sect s (e-s) :: acc)
+ else fold s (e+1) acc
+ else acc
+ in fold 0 0 []
+ in
+ let sect = Bytes.create len in
+ let _ = really_input ic sect 0 len in
+ get_string_list (Bytes.to_string sect) len
+
+let print = Printf.printf
+let perr s =
+ Printf.eprintf "%s\n" s;
+ exit(1)
+let p_title title = print "%s:\n" title
+
+let p_section title format pdata = function
+ | [] -> ()
+ | l ->
+ p_title title;
+ List.iter
+ (fun (name, data) -> print format (pdata data) name)
+ l
+
+let p_list title format = function
+ | [] -> ()
+ | l ->
+ p_title title;
+ List.iter
+ (fun name -> print format name)
+ l
+
+let _ =
+ try
+ let input_name = Sys.argv.(1) in
+ let ic = open_in_bin input_name in
+ Bytesections.read_toc ic;
+ List.iter
+ (fun section ->
+ try
+ let len = Bytesections.seek_section ic section in
+ if len > 0 then match section with
+ | "CRCS" ->
+ p_section
+ "Imported Units"
+ "\t%s\t%s\n"
+ Digest.to_hex
+ (input_value ic : (string * Digest.t) list)
+ | "DLLS" ->
+ p_list
+ "Used Dlls" "\t%s\n"
+ (input_stringlist ic len)
+ | "DLPT" ->
+ p_list
+ "Additional Dll paths"
+ "\t%s\n"
+ (input_stringlist ic len)
+ | "PRIM" ->
+ let prims = (input_stringlist ic len) in
+ print "Uses unsafe features: ";
+ begin match prims with
+ [] -> print "no\n"
+ | l -> print "YES\n";
+ p_list "Primitives declared in this module"
+ "\t%s\n"
+ l
+ end
+ | _ -> ()
+ with Not_found | Failure _ | Invalid_argument _ -> ()
+ )
+ ["CRCS"; "DLLS"; "DLPT"; "PRIM"];
+ close_in ic
+ with
+ | Sys_error msg ->
+ perr msg
+ | Invalid_argument("index out of bounds") ->
+ perr (Printf.sprintf "Usage: %s filename" Sys.argv.(0))
diff --git a/ocamlplugininfo.ml b/ocamlplugininfo.ml
new file mode 100644
index 000000000..e28800f31
--- /dev/null
+++ b/ocamlplugininfo.ml
@@ -0,0 +1,109 @@
+(***********************************************************************)
+(* *)
+(* Objective Caml *)
+(* *)
+(* Xavier Leroy, projet Gallium, INRIA Rocquencourt *)
+(* *)
+(* Copyright 2009 Institut National de Recherche en Informatique et *)
+(* en Automatique. All rights reserved. This file is distributed *)
+(* under the terms of the GNU Library General Public License, with *)
+(* the special exception on linking described in file ../../LICENSE. *)
+(* *)
+(***********************************************************************)
+
+(* $Id$ *)
+
+(* Dumps a .cmxs file *)
+
+open Natdynlink
+open Format
+
+let file =
+ try
+ Sys.argv.(1)
+ with _ -> begin
+ Printf.eprintf "Usage: %s file.cmxs\n" Sys.argv.(0);
+ exit(1)
+ end
+
+exception Abnormal_exit
+
+let error s e =
+ let eprint = Printf.eprintf in
+ let print_exc s = function
+ | End_of_file ->
+ eprint "%s: %s\n" s file
+ | Abnormal_exit ->
+ eprint "%s\n" s
+ | e -> eprint "%s\n" (Printexc.to_string e)
+ in
+ print_exc s e;
+ exit(1)
+
+let read_in command =
+ let cmd = Printf.sprintf command file in
+ let ic = Unix.open_process_in cmd in
+ try
+ let line = input_line ic in
+ begin match (Unix.close_process_in ic) with
+ | Unix.WEXITED 0 -> Str.split (Str.regexp "[ ]+") line
+ | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ ->
+ error
+ (Printf.sprintf
+ "Command \"%s\" exited abnormally"
+ cmd
+ )
+ Abnormal_exit
+ end
+ with e -> error "File is empty" e
+
+let get_offset adr_off adr_sec =
+ try
+ let adr = List.nth adr_off 4 in
+ let off = List.nth adr_off 5 in
+ let sec = List.hd adr_sec in
+
+ let (!) x = Int64.of_string ("0x" ^ x) in
+ let (+) = Int64.add in
+ let (-) = Int64.sub in
+
+ Int64.to_int (!off + !sec - !adr)
+
+ with Failure _ | Invalid_argument _ ->
+ error
+ "Command output doesn't have the expected format"
+ Abnormal_exit
+
+let print_infos name crc defines cmi cmx =
+ let print_name_crc (name, crc) =
+ printf "@ %s (%s)" name (Digest.to_hex crc)
+ in
+ let pr_imports ppf imps = List.iter print_name_crc imps in
+ printf "Name: %s@." name;
+ printf "CRC of implementation: %s@." (Digest.to_hex crc);
+ printf "@[<hov 2>Globals defined:";
+ List.iter (fun s -> printf "@ %s" s) defines;
+ printf "@]@.";
+ printf "@[<v 2>Interfaces imported:%a@]@." pr_imports cmi;
+ printf "@[<v 2>Implementations imported:%a@]@." pr_imports cmx
+
+let _ =
+ let adr_off = read_in "objdump -h %s | grep ' .data '" in
+ let adr_sec = read_in "objdump -T %s | grep ' caml_plugin_header$'" in
+
+ let ic = open_in file in
+ let _ = seek_in ic (get_offset adr_off adr_sec) in
+ let header = (input_value ic : Natdynlink.dynheader) in
+ if header.magic <> Natdynlink.dyn_magic_number then
+ raise(Error(Natdynlink.Not_a_bytecode_file file))
+ else begin
+ List.iter
+ (fun ui ->
+ print_infos
+ ui.name
+ ui.crc
+ ui.defines
+ ui.imports_cmi
+ ui.imports_cmx)
+ header.units
+ end
--
2.17.1
@@ -1,27 +0,0 @@
From 8cc56a1515816c9cef84694e63eaed63a0474090 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 29 May 2012 20:44:18 +0100
Subject: [PATCH 2/5] configure: Allow user defined C compiler flags.
---
configure.ac | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/configure.ac b/configure.ac
index f5d8a2687..ad5b701bd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -553,6 +553,10 @@ AS_CASE([$host],
internal_cflags="$gcc_warnings"],
[common_cflags="-O"])])
+# Allow CFLAGS and LDFLAGS to be added.
+common_cflags="$common_cflags $CFLAGS"
+oc_ldflags="$oc_ldflags $LDFLAGS"
+
internal_cppflags="-DCAML_NAME_SPACE $internal_cppflags"
# Enable SSE2 on x86 mingw to avoid using 80-bit registers.
--
2.22.0.rc3
@@ -1,27 +0,0 @@
From 0204a1137a8e8058afd1665aa6112656bc7bf0be Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 26 Apr 2019 16:16:29 +0100
Subject: [PATCH 3/5] configure: Remove incorrect assumption about
cross-compiling.
See https://github.com/ocaml/ocaml/issues/8647#issuecomment-487094390
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index ad5b701bd..2227769e8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -959,7 +959,7 @@ AS_CASE([$host],
[*-*-mingw32|*-pc-windows], [asppprofflags=''],
[asppprofflags='-DPROFILING'])
-AS_IF([test -n "$host_alias"], [toolpref="${host_alias}-"], [toolpref=""])
+#AS_IF([test -n "$host_alias"], [toolpref="${host_alias}-"], [toolpref=""])
# We first compute default values for as and aspp
# If values have been given by the user then they take precedence over
--
2.22.0.rc3
File diff suppressed because it is too large Load Diff
@@ -1,28 +0,0 @@
From 01d8e3f82adb382fb90af15879f722e824834c84 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 18 Jan 2020 11:31:27 +0000
Subject: [PATCH 4/5] Remove configure from .gitattributes.
It's not a binary file.
---
.gitattributes | 4 ----
1 file changed, 4 deletions(-)
diff --git a/.gitattributes b/.gitattributes
index 200eb49c6..d871764de 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -29,10 +29,6 @@
/boot/menhir/parser.ml* -diff
-# configure is declared as binary so that it doesn't get included in diffs.
-# This also means it will have the correct Unix line-endings, even on Windows.
-/configure binary
-
# 'union' merge driver just unions textual content in case of conflict
# http://krlmlr.github.io/using-gitattributes-to-avoid-merge-conflicts/
/.mailmap merge=union
--
2.28.0.rc2
@@ -1,717 +0,0 @@
From 2e4038b6b8073f55012613f18cb19a4c99e8219d Mon Sep 17 00:00:00 2001
From: Nicolas Ojeda Bar <n.oje.bar@gmail.com>
Date: Fri, 1 Dec 2017 14:39:46 +0100
Subject: [PATCH 5/8] Copyright, untabify
---
asmrun/riscv.S | 608 ++++++++++++++++++++++++-------------------------
1 file changed, 304 insertions(+), 304 deletions(-)
diff --git a/asmrun/riscv.S b/asmrun/riscv.S
index a82048efc..88d7ab924 100644
--- a/asmrun/riscv.S
+++ b/asmrun/riscv.S
@@ -4,7 +4,7 @@
/* */
/* Nicolas Ojeda Bar <n.oje.bar@gmail.com> */
/* */
-/* Copyright 1996 Institut National de Recherche en Informatique et */
+/* Copyright 2017 Institut National de Recherche en Informatique et */
/* en Automatique. All rights reserved. This file is distributed */
/* under the terms of the GNU Library General Public License, with */
/* the special exception on linking described in file ../LICENSE. */
@@ -37,388 +37,388 @@
.option nopic
#endif
- .section .text
+ .section .text
/* Invoke the garbage collector. */
- .globl caml_system__code_begin
+ .globl caml_system__code_begin
caml_system__code_begin:
- .align 2
- .globl caml_call_gc
- .type caml_call_gc, @function
+ .align 2
+ .globl caml_call_gc
+ .type caml_call_gc, @function
caml_call_gc:
/* Record return address */
- store ra, caml_last_return_address, TMP0
+ store ra, caml_last_return_address, TMP0
/* Record lowest stack address */
- mv TMP1, sp
- store sp, caml_bottom_of_stack, TMP0
+ mv TMP1, sp
+ store sp, caml_bottom_of_stack, TMP0
.Lcaml_call_gc:
- /* Set up stack space, saving return address */
+ /* Set up stack space, saving return address */
/* (1 reg for RA, 1 reg for FP, 21 allocatable int regs, 20 caller-save float regs) * 8 */
/* + 1 for alignment */
- addi sp, sp, -0x160
- mv s0, sp
- store ra, 0x8(sp)
- store s0, 0x0(sp)
+ addi sp, sp, -0x160
+ mv s0, sp
+ store ra, 0x8(sp)
+ store s0, 0x0(sp)
/* Save allocatable integer registers on the stack,
in the order given in proc.ml */
- store a0, 0x10(sp)
- store a1, 0x18(sp)
- store a2, 0x20(sp)
- store a3, 0x28(sp)
- store a4, 0x30(sp)
- store a5, 0x38(sp)
- store a6, 0x40(sp)
- store a7, 0x48(sp)
- store s2, 0x50(sp)
- store s3, 0x58(sp)
- store s4, 0x60(sp)
- store s5, 0x68(sp)
- store s6, 0x70(sp)
- store s7, 0x78(sp)
- store s8, 0x80(sp)
- store s9, 0x88(sp)
- store t2, 0x90(sp)
- store t3, 0x98(sp)
- store t4, 0xa0(sp)
- store t5, 0xa8(sp)
- store t6, 0xb0(sp)
+ store a0, 0x10(sp)
+ store a1, 0x18(sp)
+ store a2, 0x20(sp)
+ store a3, 0x28(sp)
+ store a4, 0x30(sp)
+ store a5, 0x38(sp)
+ store a6, 0x40(sp)
+ store a7, 0x48(sp)
+ store s2, 0x50(sp)
+ store s3, 0x58(sp)
+ store s4, 0x60(sp)
+ store s5, 0x68(sp)
+ store s6, 0x70(sp)
+ store s7, 0x78(sp)
+ store s8, 0x80(sp)
+ store s9, 0x88(sp)
+ store t2, 0x90(sp)
+ store t3, 0x98(sp)
+ store t4, 0xa0(sp)
+ store t5, 0xa8(sp)
+ store t6, 0xb0(sp)
/* Save caller-save floating-point registers on the stack
(callee-saves are preserved by caml_garbage_collection) */
- fsd ft0, 0xb8(sp)
- fsd ft1, 0xc0(sp)
- fsd ft2, 0xc8(sp)
- fsd ft3, 0xd0(sp)
- fsd ft4, 0xd8(sp)
- fsd ft5, 0xe0(sp)
- fsd ft6, 0xe8(sp)
- fsd ft7, 0xf0(sp)
- fsd fa0, 0xf8(sp)
- fsd fa1, 0x100(sp)
- fsd fa2, 0x108(sp)
- fsd fa3, 0x110(sp)
- fsd fa4, 0x118(sp)
- fsd fa5, 0x120(sp)
- fsd fa6, 0x128(sp)
- fsd fa7, 0x130(sp)
- fsd ft8, 0x138(sp)
- fsd ft9, 0x140(sp)
- fsd ft9, 0x148(sp)
- fsd ft10, 0x150(sp)
- fsd ft11, 0x158(sp)
+ fsd ft0, 0xb8(sp)
+ fsd ft1, 0xc0(sp)
+ fsd ft2, 0xc8(sp)
+ fsd ft3, 0xd0(sp)
+ fsd ft4, 0xd8(sp)
+ fsd ft5, 0xe0(sp)
+ fsd ft6, 0xe8(sp)
+ fsd ft7, 0xf0(sp)
+ fsd fa0, 0xf8(sp)
+ fsd fa1, 0x100(sp)
+ fsd fa2, 0x108(sp)
+ fsd fa3, 0x110(sp)
+ fsd fa4, 0x118(sp)
+ fsd fa5, 0x120(sp)
+ fsd fa6, 0x128(sp)
+ fsd fa7, 0x130(sp)
+ fsd ft8, 0x138(sp)
+ fsd ft9, 0x140(sp)
+ fsd ft9, 0x148(sp)
+ fsd ft10, 0x150(sp)
+ fsd ft11, 0x158(sp)
/* Store pointer to saved integer registers in caml_gc_regs */
- addi TMP1, sp, 16
- store TMP1, caml_gc_regs, TMP0
+ addi TMP1, sp, 16
+ store TMP1, caml_gc_regs, TMP0
/* Save current allocation pointer for debugging purposes */
- store ALLOC_PTR, caml_young_ptr, TMP0
+ store ALLOC_PTR, caml_young_ptr, TMP0
/* Save trap pointer in case an exception is raised during GC */
- store TRAP_PTR, caml_exception_pointer, TMP0
+ store TRAP_PTR, caml_exception_pointer, TMP0
/* Call the garbage collector */
- call caml_garbage_collection
+ call caml_garbage_collection
/* Restore registers */
- load a0, 0x10(sp)
- load a1, 0x18(sp)
- load a2, 0x20(sp)
- load a3, 0x28(sp)
- load a4, 0x30(sp)
- load a5, 0x38(sp)
- load a6, 0x40(sp)
- load a7, 0x48(sp)
- load s2, 0x50(sp)
- load s3, 0x58(sp)
- load s4, 0x60(sp)
- load s5, 0x68(sp)
- load s6, 0x70(sp)
- load s7, 0x78(sp)
- load s8, 0x80(sp)
- load s9, 0x88(sp)
- load t2, 0x90(sp)
- load t3, 0x98(sp)
- load t4, 0xa0(sp)
- load t5, 0xa8(sp)
- load t6, 0xb0(sp)
- fld ft0, 0xb8(sp)
- fld ft1, 0xc0(sp)
- fld ft2, 0xc8(sp)
- fld ft3, 0xd0(sp)
- fld ft4, 0xd8(sp)
- fld ft5, 0xe0(sp)
- fld ft6, 0xe8(sp)
- fld ft7, 0xf0(sp)
- fld fa0, 0xf8(sp)
- fld fa1, 0x100(sp)
- fld fa2, 0x108(sp)
- fld fa3, 0x110(sp)
- fld fa4, 0x118(sp)
- fld fa5, 0x120(sp)
- fld fa6, 0x128(sp)
- fld fa7, 0x130(sp)
- fld ft8, 0x138(sp)
- fld ft9, 0x140(sp)
- fld ft9, 0x148(sp)
- fld ft10, 0x150(sp)
- fld ft11, 0x158(sp)
+ load a0, 0x10(sp)
+ load a1, 0x18(sp)
+ load a2, 0x20(sp)
+ load a3, 0x28(sp)
+ load a4, 0x30(sp)
+ load a5, 0x38(sp)
+ load a6, 0x40(sp)
+ load a7, 0x48(sp)
+ load s2, 0x50(sp)
+ load s3, 0x58(sp)
+ load s4, 0x60(sp)
+ load s5, 0x68(sp)
+ load s6, 0x70(sp)
+ load s7, 0x78(sp)
+ load s8, 0x80(sp)
+ load s9, 0x88(sp)
+ load t2, 0x90(sp)
+ load t3, 0x98(sp)
+ load t4, 0xa0(sp)
+ load t5, 0xa8(sp)
+ load t6, 0xb0(sp)
+ fld ft0, 0xb8(sp)
+ fld ft1, 0xc0(sp)
+ fld ft2, 0xc8(sp)
+ fld ft3, 0xd0(sp)
+ fld ft4, 0xd8(sp)
+ fld ft5, 0xe0(sp)
+ fld ft6, 0xe8(sp)
+ fld ft7, 0xf0(sp)
+ fld fa0, 0xf8(sp)
+ fld fa1, 0x100(sp)
+ fld fa2, 0x108(sp)
+ fld fa3, 0x110(sp)
+ fld fa4, 0x118(sp)
+ fld fa5, 0x120(sp)
+ fld fa6, 0x128(sp)
+ fld fa7, 0x130(sp)
+ fld ft8, 0x138(sp)
+ fld ft9, 0x140(sp)
+ fld ft9, 0x148(sp)
+ fld ft10, 0x150(sp)
+ fld ft11, 0x158(sp)
/* Reload new allocation pointer and allocation limit */
- load ALLOC_PTR, caml_young_ptr
- load ALLOC_LIMIT, caml_young_limit
+ load ALLOC_PTR, caml_young_ptr
+ load ALLOC_LIMIT, caml_young_limit
/* Free stack space and return to caller */
- load ra, 0x8(sp)
- load s0, 0x0(sp)
- addi sp, sp, 0x160
+ load ra, 0x8(sp)
+ load s0, 0x0(sp)
+ addi sp, sp, 0x160
ret
- .size caml_call_gc, .-caml_call_gc
+ .size caml_call_gc, .-caml_call_gc
/* Call a C function from OCaml */
/* Function to call is in ARG */
- .align 2
- .globl caml_c_call
- .type caml_c_call, @function
+ .align 2
+ .globl caml_c_call
+ .type caml_c_call, @function
caml_c_call:
/* Preserve return address in callee-save register s2 */
- mv s2, ra
+ mv s2, ra
/* Record lowest stack address and return address */
- store ra, caml_last_return_address, TMP0
- store sp, caml_bottom_of_stack, TMP0
+ store ra, caml_last_return_address, TMP0
+ store sp, caml_bottom_of_stack, TMP0
/* Make the exception handler alloc ptr available to the C code */
- store ALLOC_PTR, caml_young_ptr, TMP0
- store TRAP_PTR, caml_exception_pointer, TMP0
+ store ALLOC_PTR, caml_young_ptr, TMP0
+ store TRAP_PTR, caml_exception_pointer, TMP0
/* Call the function */
- jalr ARG
+ jalr ARG
/* Reload alloc ptr and alloc limit */
- load ALLOC_PTR, caml_young_ptr
- load TRAP_PTR, caml_exception_pointer
+ load ALLOC_PTR, caml_young_ptr
+ load TRAP_PTR, caml_exception_pointer
/* Return */
- jr s2
- .size caml_c_call, .-caml_c_call
+ jr s2
+ .size caml_c_call, .-caml_c_call
/* Raise an exception from OCaml */
- .align 2
- .globl caml_raise_exn
- .type caml_raise_exn, @function
+ .align 2
+ .globl caml_raise_exn
+ .type caml_raise_exn, @function
caml_raise_exn:
/* Test if backtrace is active */
- load TMP1, caml_backtrace_active
- bnez TMP1, 2f
+ load TMP1, caml_backtrace_active
+ bnez TMP1, 2f
1: /* Cut stack at current trap handler */
- mv sp, TRAP_PTR
+ mv sp, TRAP_PTR
/* Pop previous handler and jump to it */
- load TMP1, 8(sp)
- load TRAP_PTR, 0(sp)
- addi sp, sp, 16
- jr TMP1
+ load TMP1, 8(sp)
+ load TRAP_PTR, 0(sp)
+ addi sp, sp, 16
+ jr TMP1
2: /* Preserve exception bucket in callee-save register s2 */
- mv s2, a0
+ mv s2, a0
/* Stash the backtrace */
- mv a1, ra
- mv a2, sp
- mv a3, TRAP_PTR
- call caml_stash_backtrace
+ mv a1, ra
+ mv a2, sp
+ mv a3, TRAP_PTR
+ call caml_stash_backtrace
/* Restore exception bucket and raise */
- mv a0, s2
- j 1b
- .size caml_raise_exn, .-caml_raise_exn
+ mv a0, s2
+ j 1b
+ .size caml_raise_exn, .-caml_raise_exn
- .globl caml_reraise_exn
- .type caml_reraise_exn, @function
+ .globl caml_reraise_exn
+ .type caml_reraise_exn, @function
/* Raise an exception from C */
- .align 2
- .globl caml_raise_exception
- .type caml_raise_exception, @function
+ .align 2
+ .globl caml_raise_exception
+ .type caml_raise_exception, @function
caml_raise_exception:
- load TRAP_PTR, caml_exception_pointer
- load ALLOC_PTR, caml_young_ptr
- load ALLOC_LIMIT, caml_young_limit
- load TMP1, caml_backtrace_active
- bnez TMP1, 2f
+ load TRAP_PTR, caml_exception_pointer
+ load ALLOC_PTR, caml_young_ptr
+ load ALLOC_LIMIT, caml_young_limit
+ load TMP1, caml_backtrace_active
+ bnez TMP1, 2f
1: /* Cut stack at current trap handler */
- mv sp, TRAP_PTR
- load TMP1, 8(sp)
- load TRAP_PTR, 0(sp)
- addi sp, sp, 16
- jr TMP1
+ mv sp, TRAP_PTR
+ load TMP1, 8(sp)
+ load TRAP_PTR, 0(sp)
+ addi sp, sp, 16
+ jr TMP1
2: /* Preserve exception bucket in callee-save register s2 */
- mv s2, a0
- load a1, caml_last_return_address
- load a2, caml_bottom_of_stack
- mv a3, TRAP_PTR
- call caml_stash_backtrace
- mv a0, s2
- j 1b
- .size caml_raise_exception, .-caml_raise_exception
+ mv s2, a0
+ load a1, caml_last_return_address
+ load a2, caml_bottom_of_stack
+ mv a3, TRAP_PTR
+ call caml_stash_backtrace
+ mv a0, s2
+ j 1b
+ .size caml_raise_exception, .-caml_raise_exception
/* Start the OCaml program */
- .align 2
- .globl caml_start_program
- .type caml_start_program, @function
+ .align 2
+ .globl caml_start_program
+ .type caml_start_program, @function
caml_start_program:
- la ARG, caml_program
+ la ARG, caml_program
/* Code shared with caml_callback* */
/* Address of OCaml code to call is in ARG */
/* Arguments to the OCaml code are in a0 ... a7 */
.Ljump_to_caml:
- /* Set up stack frame and save callee-save registers */
- addi sp, sp, -0xd0
- store ra, 0xc0(sp)
- store s0, 0x0(sp)
- store s1, 0x8(sp)
- store s2, 0x10(sp)
- store s3, 0x18(sp)
- store s4, 0x20(sp)
- store s5, 0x28(sp)
- store s6, 0x30(sp)
- store s7, 0x38(sp)
- store s8, 0x40(sp)
- store s9, 0x48(sp)
- store s10, 0x50(sp)
- store s11, 0x58(sp)
- fsd fs0, 0x60(sp)
- fsd fs1, 0x68(sp)
- fsd fs2, 0x70(sp)
- fsd fs3, 0x78(sp)
- fsd fs4, 0x80(sp)
- fsd fs5, 0x88(sp)
- fsd fs6, 0x90(sp)
- fsd fs7, 0x98(sp)
- fsd fs8, 0xa0(sp)
- fsd fs9, 0xa8(sp)
- fsd fs10, 0xb0(sp)
- fsd fs11, 0xb8(sp)
- addi sp, sp, -32
+ /* Set up stack frame and save callee-save registers */
+ addi sp, sp, -0xd0
+ store ra, 0xc0(sp)
+ store s0, 0x0(sp)
+ store s1, 0x8(sp)
+ store s2, 0x10(sp)
+ store s3, 0x18(sp)
+ store s4, 0x20(sp)
+ store s5, 0x28(sp)
+ store s6, 0x30(sp)
+ store s7, 0x38(sp)
+ store s8, 0x40(sp)
+ store s9, 0x48(sp)
+ store s10, 0x50(sp)
+ store s11, 0x58(sp)
+ fsd fs0, 0x60(sp)
+ fsd fs1, 0x68(sp)
+ fsd fs2, 0x70(sp)
+ fsd fs3, 0x78(sp)
+ fsd fs4, 0x80(sp)
+ fsd fs5, 0x88(sp)
+ fsd fs6, 0x90(sp)
+ fsd fs7, 0x98(sp)
+ fsd fs8, 0xa0(sp)
+ fsd fs9, 0xa8(sp)
+ fsd fs10, 0xb0(sp)
+ fsd fs11, 0xb8(sp)
+ addi sp, sp, -32
/* Setup a callback link on the stack */
- load TMP1, caml_bottom_of_stack
- store TMP1, 0(sp)
- load TMP1, caml_last_return_address
- store TMP1, 8(sp)
- load TMP1, caml_gc_regs
- store TMP1, 16(sp)
- /* set up a trap frame */
- addi sp, sp, -16
- load TMP1, caml_exception_pointer
- store TMP1, 0(sp)
- lla TMP0, .Ltrap_handler
- store TMP0, 8(sp)
- mv TRAP_PTR, sp
- load ALLOC_PTR, caml_young_ptr
- load ALLOC_LIMIT, caml_young_limit
- store x0, caml_last_return_address, TMP0
- jalr ARG
-.Lcaml_retaddr: /* pop trap frame, restoring caml_exception_pointer */
- load TMP1, 0(sp)
- store TMP1, caml_exception_pointer, TMP0
- addi sp, sp, 16
-.Lreturn_result: /* pop callback link, restoring global variables */
- load TMP1, 0(sp)
- store TMP1, caml_bottom_of_stack, TMP0
- load TMP1, 8(sp)
- store TMP1, caml_last_return_address, TMP0
- load TMP1, 16(sp)
- store TMP1, caml_gc_regs, TMP0
- addi sp, sp, 32
- /* Update allocation pointer */
- store ALLOC_PTR, caml_young_ptr, TMP0
- /* reload callee-save registers and return */
- load ra, 0xc0(sp)
- load s0, 0x0(sp)
- load s1, 0x8(sp)
- load s2, 0x10(sp)
- load s3, 0x18(sp)
- load s4, 0x20(sp)
- load s5, 0x28(sp)
- load s6, 0x30(sp)
- load s7, 0x38(sp)
- load s8, 0x40(sp)
- load s9, 0x48(sp)
- load s10, 0x50(sp)
- load s11, 0x58(sp)
- fld fs0, 0x60(sp)
- fld fs1, 0x68(sp)
- fld fs2, 0x70(sp)
- fld fs3, 0x78(sp)
- fld fs4, 0x80(sp)
- fld fs5, 0x88(sp)
- fld fs6, 0x90(sp)
- fld fs7, 0x98(sp)
- fld fs8, 0xa0(sp)
- fld fs9, 0xa8(sp)
- fld fs10, 0xb0(sp)
- fld fs11, 0xb8(sp)
- addi sp, sp, 0xd0
- ret
+ load TMP1, caml_bottom_of_stack
+ store TMP1, 0(sp)
+ load TMP1, caml_last_return_address
+ store TMP1, 8(sp)
+ load TMP1, caml_gc_regs
+ store TMP1, 16(sp)
+ /* set up a trap frame */
+ addi sp, sp, -16
+ load TMP1, caml_exception_pointer
+ store TMP1, 0(sp)
+ lla TMP0, .Ltrap_handler
+ store TMP0, 8(sp)
+ mv TRAP_PTR, sp
+ load ALLOC_PTR, caml_young_ptr
+ load ALLOC_LIMIT, caml_young_limit
+ store x0, caml_last_return_address, TMP0
+ jalr ARG
+.Lcaml_retaddr: /* pop trap frame, restoring caml_exception_pointer */
+ load TMP1, 0(sp)
+ store TMP1, caml_exception_pointer, TMP0
+ addi sp, sp, 16
+.Lreturn_result: /* pop callback link, restoring global variables */
+ load TMP1, 0(sp)
+ store TMP1, caml_bottom_of_stack, TMP0
+ load TMP1, 8(sp)
+ store TMP1, caml_last_return_address, TMP0
+ load TMP1, 16(sp)
+ store TMP1, caml_gc_regs, TMP0
+ addi sp, sp, 32
+ /* Update allocation pointer */
+ store ALLOC_PTR, caml_young_ptr, TMP0
+ /* reload callee-save registers and return */
+ load ra, 0xc0(sp)
+ load s0, 0x0(sp)
+ load s1, 0x8(sp)
+ load s2, 0x10(sp)
+ load s3, 0x18(sp)
+ load s4, 0x20(sp)
+ load s5, 0x28(sp)
+ load s6, 0x30(sp)
+ load s7, 0x38(sp)
+ load s8, 0x40(sp)
+ load s9, 0x48(sp)
+ load s10, 0x50(sp)
+ load s11, 0x58(sp)
+ fld fs0, 0x60(sp)
+ fld fs1, 0x68(sp)
+ fld fs2, 0x70(sp)
+ fld fs3, 0x78(sp)
+ fld fs4, 0x80(sp)
+ fld fs5, 0x88(sp)
+ fld fs6, 0x90(sp)
+ fld fs7, 0x98(sp)
+ fld fs8, 0xa0(sp)
+ fld fs9, 0xa8(sp)
+ fld fs10, 0xb0(sp)
+ fld fs11, 0xb8(sp)
+ addi sp, sp, 0xd0
+ ret
.Ltrap_handler:
- store TRAP_PTR, caml_exception_pointer, TMP0
- ori a0, a0, 2
- j .Lreturn_result
- .size caml_start_program, .-caml_start_program
+ store TRAP_PTR, caml_exception_pointer, TMP0
+ ori a0, a0, 2
+ j .Lreturn_result
+ .size caml_start_program, .-caml_start_program
/* Callback from C to OCaml */
- .align 2
- .globl caml_callback_exn
- .type caml_callback_exn, @function
+ .align 2
+ .globl caml_callback_exn
+ .type caml_callback_exn, @function
caml_callback_exn:
/* Initial shuffling of arguments (a0 = closure, a1 = first arg) */
- mv TMP1, a0
- mv a0, a1 /* a0 = first arg */
- mv a1, TMP1 /* a1 = closure environment */
- load ARG, 0(TMP1) /* code pointer */
- j .Ljump_to_caml
- .size caml_callback_exn, .-caml_callback_exn
+ mv TMP1, a0
+ mv a0, a1 /* a0 = first arg */
+ mv a1, TMP1 /* a1 = closure environment */
+ load ARG, 0(TMP1) /* code pointer */
+ j .Ljump_to_caml
+ .size caml_callback_exn, .-caml_callback_exn
- .align 2
- .globl caml_callback2_exn
- .type caml_callback2_exn, @function
+ .align 2
+ .globl caml_callback2_exn
+ .type caml_callback2_exn, @function
caml_callback2_exn:
/* Initial shuffling of arguments (a0 = closure, a1 = arg1, a2 = arg2) */
- mv TMP1, a0
- mv a0, a1
- mv a1, a2
- mv a2, TMP1
- la ARG, caml_apply2
- j .Ljump_to_caml
- .size caml_callback2_exn, .-caml_callback2_exn
+ mv TMP1, a0
+ mv a0, a1
+ mv a1, a2
+ mv a2, TMP1
+ la ARG, caml_apply2
+ j .Ljump_to_caml
+ .size caml_callback2_exn, .-caml_callback2_exn
- .align 2
- .globl caml_callback3_exn
- .type caml_callback3_exn, @function
+ .align 2
+ .globl caml_callback3_exn
+ .type caml_callback3_exn, @function
caml_callback3_exn:
/* Initial shuffling of argumnets */
/* (a0 = closure, a1 = arg1, a2 = arg2, a3 = arg3) */
- mv TMP1, a0
- mv a0, a1
- mv a1, a2
- mv a2, a3
- mv a3, TMP1
- la ARG, caml_apply3
- j .Ljump_to_caml
- .size caml_callback3_exn, .-caml_callback3_exn
+ mv TMP1, a0
+ mv a0, a1
+ mv a1, a2
+ mv a2, a3
+ mv a3, TMP1
+ la ARG, caml_apply3
+ j .Ljump_to_caml
+ .size caml_callback3_exn, .-caml_callback3_exn
- .align 2
- .globl caml_ml_array_bound_error
- .type caml_ml_array_bound_error, @function
+ .align 2
+ .globl caml_ml_array_bound_error
+ .type caml_ml_array_bound_error, @function
caml_ml_array_bound_error:
/* Load address of [caml_array_bound_error] in ARG */
- la ARG, caml_array_bound_error
+ la ARG, caml_array_bound_error
/* Call that function */
- j caml_c_call
+ j caml_c_call
- .globl caml_system__code_end
+ .globl caml_system__code_end
caml_system__code_end:
/* GC roots for callback */
- .section .data
- .align 3
- .globl caml_system__frametable
- .type caml_system__frametable, @object
+ .section .data
+ .align 3
+ .globl caml_system__frametable
+ .type caml_system__frametable, @object
caml_system__frametable:
- .quad 1 /* one descriptor */
- .quad .Lcaml_retaddr /* return address into callback */
- .short -1 /* negative frame size => use callback link */
- .short 0 /* no roots */
- .align 3
- .size caml_system__frametable, .-caml_system__frametable
+ .quad 1 /* one descriptor */
+ .quad .Lcaml_retaddr /* return address into callback */
+ .short -1 /* negative frame size => use callback link */
+ .short 0 /* no roots */
+ .align 3
+ .size caml_system__frametable, .-caml_system__frametable
--
2.17.1
@@ -1,69 +0,0 @@
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/5] 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.28.0.rc2
@@ -1,25 +0,0 @@
From 207fbbc2616ee44e048dd5bb133e52f252cd1caf Mon Sep 17 00:00:00 2001
From: Nicolas Ojeda Bar <n.oje.bar@gmail.com>
Date: Sat, 2 Dec 2017 10:44:41 +0100
Subject: [PATCH 6/8] fix caml_c_call: reload caml_young_limit
---
asmrun/riscv.S | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/asmrun/riscv.S b/asmrun/riscv.S
index 88d7ab924..121f8ba71 100644
--- a/asmrun/riscv.S
+++ b/asmrun/riscv.S
@@ -187,7 +187,7 @@ caml_c_call:
jalr ARG
/* Reload alloc ptr and alloc limit */
load ALLOC_PTR, caml_young_ptr
- load TRAP_PTR, caml_exception_pointer
+ load ALLOC_LIMIT, caml_young_limit
/* Return */
jr s2
.size caml_c_call, .-caml_c_call
--
2.17.1
@@ -1,67 +0,0 @@
From a89427d52a20633be40056fe008b7eeec5ded7dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Ojeda=20B=C3=A4r?= <n.oje.bar@gmail.com>
Date: Tue, 15 May 2018 07:17:06 +0000
Subject: [PATCH 7/8] Adapt to 4.07
---
asmcomp/riscv/emit.mlp | 28 +++++++++++++++++-----------
asmcomp/riscv/selection.ml | 2 +-
2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp
index 51165d0f1..718dca080 100644
--- a/asmcomp/riscv/emit.mlp
+++ b/asmcomp/riscv/emit.mlp
@@ -461,19 +461,25 @@ let emit_instr i =
` {emit_string name} {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}, {emit_label lbl}\n`
| Iinttest_imm _ ->
fatal_error "Emit.emit_instr (Iinttest_imm _)"
- | Ifloattest(cmp, neg) ->
- let neg = match cmp with
- | Ceq -> ` feq.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
- | Cne -> ` feq.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; not neg
- | Clt -> ` flt.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
- | Cgt -> ` flt.d {emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`; neg
- | Cle -> ` fle.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`; neg
- | Cge -> ` fle.d {emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`; neg
- in
- if neg then
+ | Ifloattest cmp ->
+ begin match cmp with
+ | CFeq | CFneq ->
+ ` feq.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
+ | CFlt | CFnlt ->
+ ` flt.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
+ | CFgt | CFngt ->
+ ` flt.d {emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
+ | CFle | CFnle ->
+ ` fle.d {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, {emit_reg i.arg.(1)}\n`
+ | CFge | CFnge ->
+ ` fle.d {emit_reg reg_tmp1}, {emit_reg i.arg.(1)}, {emit_reg i.arg.(0)}\n`
+ end;
+ begin match cmp with
+ | CFneq | CFnlt | CFngt | CFnle | CFnge ->
` beqz {emit_reg reg_tmp1}, {emit_label lbl}\n`
- else
+ | CFeq | CFlt | CFgt | CFle | CFge ->
` bnez {emit_reg reg_tmp1}, {emit_label lbl}\n`
+ end
| Ioddtest ->
` andi {emit_reg reg_tmp1}, {emit_reg i.arg.(0)}, 1\n`;
` bnez {emit_reg reg_tmp1}, {emit_label lbl}\n`
diff --git a/asmcomp/riscv/selection.ml b/asmcomp/riscv/selection.ml
index 092ca88aa..1f0af6abc 100644
--- a/asmcomp/riscv/selection.ml
+++ b/asmcomp/riscv/selection.ml
@@ -61,7 +61,7 @@ method! select_condition = function
| Cop(Ccmpa cmp, args, _) ->
(Iinttest(Iunsigned cmp), Ctuple args)
| Cop(Ccmpf cmp, args, _) ->
- (Ifloattest(cmp, false), Ctuple args)
+ (Ifloattest cmp, Ctuple args)
| Cop(Cand, [arg; Cconst_int 1], _) ->
(Ioddtest, arg)
| arg ->
--
2.17.1
@@ -1,40 +0,0 @@
From 2f23a53b4aa1b672b3919cc021b83548f713b90a Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 5 Jun 2018 19:48:08 +0000
Subject: [PATCH 5/5] riscv: Emit debug info.
---
asmcomp/riscv/emit.mlp | 3 +++
1 file changed, 3 insertions(+)
diff --git a/asmcomp/riscv/emit.mlp b/asmcomp/riscv/emit.mlp
index 88ea9f884..cc05aefe4 100644
--- a/asmcomp/riscv/emit.mlp
+++ b/asmcomp/riscv/emit.mlp
@@ -261,6 +261,7 @@ let tailrec_entry_point = ref 0
(* Output the assembly code for an instruction *)
let emit_instr i =
+ emit_debug_info i.dbg;
match i.desc with
Lend -> ()
| Lprologue ->
@@ -556,6 +557,7 @@ let fundecl fundecl =
` {emit_string code_space}\n`;
` .align 2\n`;
`{emit_symbol fundecl.fun_name}:\n`;
+ emit_debug_info fundecl.fun_dbg;
emit_all fundecl.fun_body;
List.iter emit_call_gc !call_gc_sites;
List.iter emit_call_bound_error !bound_error_sites;
@@ -615,6 +617,7 @@ let data l =
let begin_assembly() =
` .file \"\"\n`; (* PR#7073 *)
+ reset_debug_info ();
(* Emit the beginning of the segments *)
let lbl_begin = Compilenv.make_symbol (Some "data_begin") in
` {emit_string data_space}\n`;
--
2.22.0.rc3
+17 -43
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" ?> <?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd"> <!DOCTYPE PISI SYSTEM "https://pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI> <PISI>
<Source> <Source>
<Name>ocaml</Name> <Name>ocaml</Name>
@@ -9,32 +9,19 @@
<Email>kaptan@pisilinux.org</Email> <Email>kaptan@pisilinux.org</Email>
</Packager> </Packager>
<License>OPL</License> <License>OPL</License>
<License>LGPLv2.1</License>
<IsA>app:console</IsA> <IsA>app:console</IsA>
<Summary>Fast modern type-inferring functional programming language</Summary> <Summary>Fast modern type-inferring functional programming language</Summary>
<Description>A fast modern type-inferring functional programming language descended from the ML (Meta Language) family.</Description> <Description>A fast modern type-inferring functional programming language descended from the ML (Meta Language) family.</Description>
<!-- Caution! Updating this package to a new version, may break ocaml modules like facile. Modules need to be recompiled to resolve this. Also, errors like below are indications of this situation: <Archive sha1sum="f2ea89957729a54c773bdff0ffd0444644927292" type="tarxz">https://caml.inria.fr/distrib/ocaml-4.14/ocaml-4.14.2.tar.xz</Archive>
File "_none_", line 1, characters 0-1:
Error: Files /usr/lib/ocaml/facile/facile.cmxa and /usr/lib/ocaml/stdlib.cmxa
make inconsistent assumptions over implementation Printf
-->
<Archive sha1sum="8f8083caa0b56bc9f6809f9f2a7996d2b84e768e" type="tarxz">https://caml.inria.fr/distrib/ocaml-4.14/ocaml-4.14.0.tar.xz</Archive>
<BuildDependencies> <BuildDependencies>
<Dependency>parallel</Dependency>
<Dependency>zlib-devel</Dependency> <Dependency>zlib-devel</Dependency>
<Dependency>gdbm-devel</Dependency>
<Dependency>ncurses-devel</Dependency> <Dependency>ncurses-devel</Dependency>
<Dependency>libX11-devel</Dependency>
<Dependency>chrpath</Dependency>
</BuildDependencies> </BuildDependencies>
<Patches> <Patches>
<!-- <Patch level="1">fedora/0012-Stop-calling-ranlib-on-created-installed-libraries-1.patch</Patch> --> <!-- <Patch level="1"></Patch> -->
<!-- <Patch level="1">fedora/0001-Don-t-add-rpaths-to-libraries.patch</Patch> -->
<Patch level="1">fedora/0003-configure-Allow-user-defined-C-compiler-flags.patch</Patch>
<!-- <Patch level="1">fedora/0003-configure-Remove-incorrect-assumption-about-cross-co.patch</Patch> -->
<!-- <Patch level="1">fedora/0004-Remove-configure-from-.gitattributes.patch</Patch> -->
<!-- <Patch level="1">fedora/0005-Fix-type-mismatches-between-definition-and-declarati.patch</Patch> -->
<!-- <Patch level="1">fedora/0006-fix-caml_c_call-reload-caml_young_limit.patch</Patch> -->
<!-- <Patch level="1">fedora/0007-Adapt-to-4.07.patch</Patch> -->
<!-- <Patch level="1">fedora/0008-riscv-Emit-debug-info.patch</Patch> -->
</Patches> </Patches>
</Source> </Source>
@@ -43,36 +30,23 @@
<RuntimeDependencies> <RuntimeDependencies>
<Dependency>zlib</Dependency> <Dependency>zlib</Dependency>
<Dependency>ncurses</Dependency> <Dependency>ncurses</Dependency>
<Dependency>libX11</Dependency>
</RuntimeDependencies> </RuntimeDependencies>
<Files> <Files>
<Path fileType="executable">/usr/bin/</Path> <Path fileType="executable">/usr/bin</Path>
<Path fileType="library">/usr/lib/</Path> <Path fileType="library">/usr/lib</Path>
<Path fileType="doc">/usr/share/doc/</Path> <Path fileType="doc">/usr/share/doc</Path>
<Path fileType="man">/usr/share/man/</Path> <Path fileType="man">/usr/share/man</Path>
</Files>
</Package>
<Package>
<Name>ocaml-compiler-libs</Name>
<RuntimeDependencies>
<Dependency>ocaml</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.mli</Path>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.cmi</Path>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.cmo</Path>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.cma</Path>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.a</Path>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.cmxa</Path>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.cmx</Path>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.o</Path>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.cmt</Path>
<Path fileType="library">/usr/lib/ocaml/compiler-libs/*.cmti</Path>
</Files> </Files>
</Package> </Package>
<History> <History>
<Update release="11">
<Date>2024-12-22</Date>
<Version>4.14.2</Version>
<Comment>Safety bugfix update.</Comment>
<Name>Abdallah Abdallah</Name>
<Email>pisiqueek@gmail.com</Email>
</Update>
<Update release="10"> <Update release="10">
<Date>2022-09-23</Date> <Date>2022-09-23</Date>
<Version>4.14.0</Version> <Version>4.14.0</Version>