Hello community, here is the log from the commit of package ocaml for openSUSE:Leap:15.2 checked in at 2020-03-13 10:55:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/ocaml (Old) and /work/SRC/openSUSE:Leap:15.2/.ocaml.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocaml" Fri Mar 13 10:55:44 2020 rev:23 rq:783330 version:4.05.0 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/ocaml/ocaml.changes 2020-01-15 15:34:18.386896844 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.ocaml.new.3160/ocaml.changes 2020-03-13 10:55:47.308366800 +0100 @@ -1,0 +2,51 @@ +Thu Feb 20 20:20:20 UTC 2020 - [email protected] + +- Require current ocaml-rpm-macros +- Update options for ocaml() Provides/Requires to specify also + OCAMLLIB, which is required for ocamlobjinfo and cmx (bsc#1154874) +- Remove disabling of _lto_cflags, RPM_OPT_FLAGS are not used +- Use ocaml_standard_library macro instead of _libdir/ocaml +- Actually make use of ocaml-configure-Allow-user-defined-C-compiler-flags.patch + and use '-Werror=implicit-function-declaration -Werror=return-type' + in built-in CFLAGS for libraries and applications. +- Add ocaml-assert.patch, backport from 4.06, found by new CFLAGS +- Add a few desirable patches from 4.05 branch: + ocaml-Fixes-for-out-of-range-Ialloc.patch + ocaml-In-caml_executable_name-wrong-test-on-the-return-cod.patch + ocaml-MPR-7591-frametable-not-8-aligned-on-x86-64-port.patch + ocaml-byterun-do-not-alias-function-arguments-to-sigprocma.patch +- Remove backup files from ocaml-fix_aarch64_build.patch +- Record absolute path to gcc, cmdline is part of ocamlx() hash +- Package a few more directories which belong only to this variant of OCaml + +------------------------------------------------------------------- +Mon Nov 25 12:34:56 UTC 2019 - [email protected] + +- move topdirs.cmi/cmt/cmti from runtime to compiler-libs-devel + so that runtime does not depend on a devel pkg (bsc#1156934) +- split place for META files, some go to ocaml, some to compiler-libs-devel +- move ncurses-devel requires to ocaml, it is used by BYTECCLIBS +- initialize bcond ocaml_make_testsuite + +------------------------------------------------------------------- +Fri Nov 1 12:34:56 UTC 2019 - [email protected] + +- Use ocaml-rpm-macros to decide about native or bytecode build +- Move ocaml-findlib.rpm.prov_req.attr.sh to ocaml-rpm-macros +- Provide META files for ocamlfind() provides, which are now + created via ocaml-rpm-macros +- Provide baseversion in ocaml(compiler)/ocaml(ocaml.opt) +- Preserve fomit-frame-pointer again on ix86 +- Remove usage of USE_INTERP_RESULT, nothing seems to check for it +- Use results from pkgconfig(x11) for CFLAGS/LDFLAGS +- Use make_build/make_install, no parallel build yet +- Remove BYTECCRPATH, NATIVECCRPATH and MKSHAREDLIBRPATH +- Remove dead code which checked for libasmrun_pic.a (#7595) +- Remove code that populated compiler-libs + +------------------------------------------------------------------- +Mon Sep 30 12:34:56 UTC 2019 - [email protected] + +- moved ocaml-rpm-macros from ocaml.spec to separate pkg + +------------------------------------------------------------------- @@ -9,0 +61,18 @@ + +------------------------------------------------------------------- +Fri Aug 30 14:37:07 UTC 2019 - Stefan BrĂ¼ns <[email protected]> + +- Use separate package for emacs mode files, following upstreams + move of the files to a separate repository + (https://github.com/ocaml/ocaml/pull/2182). This reduces the + build dependency chain of OCaml significantly, and in turn of + every package depending on OCaml. +- Move caml-mode specific patches to new package: + * ocaml-3.00-camldebug_el.patch + * ocaml-3.04-ocamltags--no-site-start.patch + * ocaml-3.09-emacs_localcompile.patch + +------------------------------------------------------------------- +Thu Aug 22 11:16:03 UTC 2019 - [email protected] + +- Move /etc/rpm/macros.ocaml to /usr/lib/rpm/macros.d/macros.ocaml Old: ---- ocaml-3.00-camldebug_el.patch ocaml-3.04-ocamltags--no-site-start.patch ocaml-3.09-emacs_localcompile.patch ocaml-findlib.rpm.prov_req.attr.sh New: ---- ocaml-Fixes-for-out-of-range-Ialloc.patch ocaml-In-caml_executable_name-wrong-test-on-the-return-cod.patch ocaml-MPR-7591-frametable-not-8-aligned-on-x86-64-port.patch ocaml-assert.patch ocaml-byterun-do-not-alias-function-arguments-to-sigprocma.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ocaml.spec ++++++ ++++ 770 lines (skipped) ++++ between /work/SRC/openSUSE:Leap:15.2/ocaml/ocaml.spec ++++ and /work/SRC/openSUSE:Leap:15.2/.ocaml.new.3160/ocaml.spec ++++++ ocaml-Fixes-for-out-of-range-Ialloc.patch ++++++ >From 664f0763d37f85e2ec53d6394251b5948dcfa727 Mon Sep 17 00:00:00 2001 From: Mark Shinwell <[email protected]> Date: Mon, 31 Jul 2017 14:37:47 +0100 Subject: Fixes for out-of-range Ialloc Cherry-pick of GPR#1271 which was merged on trunk. Fixes for Ialloc instructions allocating more than Max_young_wosize words in the minor heap Out-of-range Ialloc instructions cause various problems, see in particular GPR #1250. --- Changes | 5 + asmcomp/cmmgen.ml | 38 ++-- asmcomp/selectgen.ml | 3 +- testsuite/tests/basic-more/pr1271.ml | 288 ++++++++++++++++++++++++++++ testsuite/tests/basic-more/pr1271.reference | 2 + 5 files changed, 317 insertions(+), 19 deletions(-) create mode 100644 testsuite/tests/basic-more/pr1271.ml create mode 100644 testsuite/tests/basic-more/pr1271.reference diff --git a/asmcomp/cmmgen.ml b/asmcomp/cmmgen.ml index 4ac4b40c6..2120d3985 100644 --- a/asmcomp/cmmgen.ml +++ b/asmcomp/cmmgen.ml @@ -1641,29 +1641,31 @@ let rec transl env e = List.iter (fun f -> Queue.add f functions) fundecls; Cconst_symbol lbl | Uclosure(fundecls, clos_vars) -> - let block_size = - fundecls_size fundecls + List.length clos_vars in let rec transl_fundecls pos = function [] -> List.map (transl env) clos_vars | f :: rem -> Queue.add f functions; - let header = - if pos = 0 - then alloc_closure_header block_size f.dbg - else alloc_infix_header pos f.dbg in - if f.arity = 1 || f.arity = 0 then - header :: - Cconst_symbol f.label :: - int_const f.arity :: - transl_fundecls (pos + 3) rem - else - header :: - Cconst_symbol(curry_function f.arity) :: - int_const f.arity :: - Cconst_symbol f.label :: - transl_fundecls (pos + 4) rem in - Cop(Calloc, transl_fundecls 0 fundecls, Debuginfo.none) + let without_header = + if f.arity = 1 || f.arity = 0 then + Cconst_symbol f.label :: + int_const f.arity :: + transl_fundecls (pos + 3) rem + else + Cconst_symbol(curry_function f.arity) :: + int_const f.arity :: + Cconst_symbol f.label :: + transl_fundecls (pos + 4) rem + in + if pos = 0 then without_header + else (alloc_infix_header pos f.dbg) :: without_header + in + let dbg = + match fundecls with + | [] -> Debuginfo.none + | fundecl::_ -> fundecl.dbg + in + make_alloc dbg Obj.closure_tag (transl_fundecls 0 fundecls) | Uoffset(arg, offset) -> (* produces a valid Caml value, pointing just after an infix header *) let ptr = transl env arg in diff --git a/asmcomp/selectgen.ml b/asmcomp/selectgen.ml index 7cd8cd5c3..1158fc0d0 100644 --- a/asmcomp/selectgen.ml +++ b/asmcomp/selectgen.ml @@ -738,7 +738,8 @@ method emit_expr (env:environment) exp = loc_arg (Proc.loc_external_results rd) in self#insert_move_results loc_res rd stack_ofs; Some rd - | Ialloc { words = _; spacetime_index; label_after_call_gc; } -> + | Ialloc { words; spacetime_index; label_after_call_gc; } -> + assert (words <= Config.max_young_wosize); let rd = self#regs_for typ_val in let size = size_expr env (Ctuple new_args) in let op = ++++++ ocaml-In-caml_executable_name-wrong-test-on-the-return-cod.patch ++++++ >From 44c67eb438b5dabbc4caa130303d1bcda6488b00 Mon Sep 17 00:00:00 2001 From: Xavier Leroy <[email protected]> Date: Fri, 25 Aug 2017 17:56:45 +0200 Subject: In caml_executable_name(), wrong test on the return code of readlink() Follow-up to PR#795 "More robust determination of full path to current executable" --- byterun/unix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/byterun/unix.c b/byterun/unix.c index a5c5ed457..9aa89c96f 100644 --- a/byterun/unix.c +++ b/byterun/unix.c @@ -374,7 +374,7 @@ char * caml_executable_name(void) name = caml_stat_alloc(namelen + 1); retcode = readlink("/proc/self/exe", name, namelen); if (retcode == -1) { caml_stat_free(name); return NULL; } - if (retcode <= namelen) break; + if (retcode < namelen) break; caml_stat_free(name); if (namelen >= 1024*1024) return NULL; /* avoid runaway and overflow */ namelen *= 2; ++++++ ocaml-MPR-7591-frametable-not-8-aligned-on-x86-64-port.patch ++++++ >From 22dbcdfb921b19d171134de90984805622877e55 Mon Sep 17 00:00:00 2001 From: Xavier Leroy <[email protected]> Date: Sat, 22 Jul 2017 16:32:23 -0400 Subject: MPR#7591: frametable not 8-aligned on x86-64 port Cherry-pick of 7077b60 from trunk. --- Changes | 7 +++++++ asmcomp/amd64/emit.mlp | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp index c3f8692a8..75a785f74 100644 --- a/asmcomp/amd64/emit.mlp +++ b/asmcomp/amd64/emit.mlp @@ -1065,8 +1065,9 @@ let end_assembly() = D.data (); emit_global_label "data_end"; - D.long (const 0); + D.qword (const 0); + D.align 8; (* PR#7591 *) emit_global_label "frametable"; let setcnt = ref 0 in ++++++ ocaml-assert.patch ++++++ part of commit adcb4497968dbdc1b0db97998488ad20c02fe225 from 4.06 --- a/byterun/caml/minor_gc.h +++ b/byterun/caml/minor_gc.h @@ -99,7 +99,7 @@ static inline void add_to_ephe_ref_table ephe_ref = tbl->ptr++; ephe_ref->ephe = ar; ephe_ref->offset = offset; - Assert(ephe_ref->offset < Wosize_val(ephe_ref->ephe)); + CAMLassert(ephe_ref->offset < Wosize_val(ephe_ref->ephe)); } static inline void add_to_custom_table (struct caml_custom_table *tbl, value v, ++++++ ocaml-byterun-do-not-alias-function-arguments-to-sigprocma.patch ++++++ >From b35e3d48bc392f764e1edc99ce6a1b1a68358ed4 Mon Sep 17 00:00:00 2001 From: Anil Madhavapeddy <[email protected]> Date: Wed, 2 May 2018 09:44:10 +0100 Subject: byterun: do not alias function arguments to sigprocmask Recent gcc versions (e.g. as found in Fedora 28) check that restrict-qualified parameters do not alias each other in function calls. One such example that triggers a compile error is sigprocmask in the bytecode runtime. The error this changeset fixes is: ``` signals.c: In function 'caml_execute_signal': signals.c:152:33: error: passing argument 3 to restrict-qualified parameter aliases with argument 2 [-Werror=restrict] sigprocmask(SIG_BLOCK, &sigs, &sigs); ``` (cherry picked from commit ebcc2f8594138a5ba6b020083fc42d57a914433f) --- Changes | 2 ++ byterun/signals.c | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/byterun/signals.c b/byterun/signals.c index 6f1811f26..3dc36e494 100644 --- a/byterun/signals.c +++ b/byterun/signals.c @@ -144,12 +144,12 @@ void caml_execute_signal(int signal_number, int in_signal_handler) void* saved_spacetime_trie_node_ptr; #endif #ifdef POSIX_SIGNALS - sigset_t sigs; + sigset_t nsigs, sigs; /* Block the signal before executing the handler, and record in sigs the original signal mask */ - sigemptyset(&sigs); - sigaddset(&sigs, signal_number); - sigprocmask(SIG_BLOCK, &sigs, &sigs); + sigemptyset(&nsigs); + sigaddset(&nsigs, signal_number); + sigprocmask(SIG_BLOCK, &nsigs, &sigs); #endif #if defined(NATIVE_CODE) && defined(WITH_SPACETIME) /* We record the signal handler's execution separately, in the same
