From b316595e40110750db5f496c08dba574ff29acf1 Mon Sep 17 00:00:00 2001 From: Stephane Glondu Date: Wed, 10 Jul 2019 15:32:42 +0200 Subject: [PATCH] Update patches Deleted patches: - Pass-no-relax-to-ld-on-alpha (broken) - Call-ld-with-proper-flags (broken) - Avoid-multiple-declarations-in-generated-.c-files-in (broken) - Embed-bytecode-in-C-object-when-using-custom (broken) - Native-backtraces-don-t-work-on-powerpc-and-sparc (broken) - XL-001-tests.asmcomp (upstream) - arm64-hide-symbols-for-stricter-binutils (upstream) - Integer-overflows-when-unmarshaling-a-bigarray (upstream) - Use-CCLINKFLAGS-for-linking-all-executables-and-shar (broken) - Compute-a-stable-name-for-preprocessed-files (broken) --- .../0001-Pass-no-relax-to-ld-on-alpha.patch | 32 --- .../0002-Call-ld-with-proper-flags.patch | 24 -- debian/patches/0003-Don-t-use-rpath.patch | 4 +- ...-manpages-in-section-3o-instead-of-3.patch | 18 +- ...eclarations-in-generated-.c-files-in.patch | 101 -------- ...tecode-in-C-object-when-using-custom.patch | 222 ------------------ ...aces-don-t-work-on-powerpc-and-sparc.patch | 24 -- .../patches/0010-XL-001-tests.asmcomp.patch | 24 -- ...4-hide-symbols-for-stricter-binutils.patch | 95 -------- ...erflows-when-unmarshaling-a-bigarray.patch | 67 ------ ...for-linking-all-executables-and-shar.patch | 44 ---- ...a-stable-name-for-preprocessed-files.patch | 33 --- debian/patches/series | 10 - 13 files changed, 11 insertions(+), 687 deletions(-) delete mode 100644 debian/patches/0001-Pass-no-relax-to-ld-on-alpha.patch delete mode 100644 debian/patches/0002-Call-ld-with-proper-flags.patch delete mode 100644 debian/patches/0005-Avoid-multiple-declarations-in-generated-.c-files-in.patch delete mode 100644 debian/patches/0006-Embed-bytecode-in-C-object-when-using-custom.patch delete mode 100644 debian/patches/0008-Native-backtraces-don-t-work-on-powerpc-and-sparc.patch delete mode 100644 debian/patches/0010-XL-001-tests.asmcomp.patch delete mode 100644 debian/patches/0011-arm64-hide-symbols-for-stricter-binutils.patch delete mode 100644 debian/patches/0012-Integer-overflows-when-unmarshaling-a-bigarray.patch delete mode 100644 debian/patches/0013-Use-CCLINKFLAGS-for-linking-all-executables-and-shar.patch delete mode 100644 debian/patches/0014-Compute-a-stable-name-for-preprocessed-files.patch diff --git a/debian/patches/0001-Pass-no-relax-to-ld-on-alpha.patch b/debian/patches/0001-Pass-no-relax-to-ld-on-alpha.patch deleted file mode 100644 index e2e28b87..00000000 --- a/debian/patches/0001-Pass-no-relax-to-ld-on-alpha.patch +++ /dev/null @@ -1,32 +0,0 @@ -From: Stefano Zacchiroli -Date: Tue, 19 May 2009 17:22:39 +0200 -Subject: Pass --no-relax to ld on alpha - -Pass the --no-relax option to ld to fix a segfault in initialization -code (bug#338437) ---- - configure | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/configure b/configure -index e796599..d67672e 100755 ---- a/configure -+++ b/configure -@@ -448,7 +448,8 @@ case "$bytecc,$target" in - *gcc*,alpha*-*-linux*) - if cc="$bytecc" sh ./hasgot -mieee; then - bytecccompopts="-mieee $bytecccompopts"; -- fi;; -+ fi -+ bytecclinkopts="-Wl,--no-relax";; - *,mips-*-irix6*) - # Turn off warning "unused library" - bytecclinkopts="-n32 -Wl,-woff,84";; -@@ -982,6 +983,7 @@ nativeccrpath="$byteccrpath" - case "$arch,$nativecc,$system,$model" in - *,*,nextstep,*) nativecclinkopts="-posix";; - *,*,rhapsody,*) if $arch64; then partialld="ld -r -arch ppc64"; fi;; -+ alpha,gcc*,linux*,*) nativecclinkopts="-Wl,--no-relax";; - amd64,gcc*,macosx,*) partialld="ld -r -arch x86_64";; - amd64,gcc*,solaris,*) partialld="ld -r -m elf_x86_64";; - power,gcc*,elf,ppc) partialld="ld -r -m elf32ppclinux";; diff --git a/debian/patches/0002-Call-ld-with-proper-flags.patch b/debian/patches/0002-Call-ld-with-proper-flags.patch deleted file mode 100644 index fb74f759..00000000 --- a/debian/patches/0002-Call-ld-with-proper-flags.patch +++ /dev/null @@ -1,24 +0,0 @@ -From: Stefano Zacchiroli -Date: Tue, 19 May 2009 17:23:34 +0200 -Subject: Call ld with proper flags - -Filter linkflags passed to ld by ocamlopt -pack and -output-obj -to remove the "-Wl," parts, which are only used when ocamlopt calls -gcc. ---- - configure | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure b/configure -index d67672e..c0024a9 100755 ---- a/configure -+++ b/configure -@@ -2049,7 +2049,7 @@ echo "DYNLINKOPTS=$dllib" >> Makefile - echo "OTHERLIBRARIES=$otherlibraries" >> Makefile - echo "CC_PROFILE=$cc_profile" >> Makefile - echo "SYSTHREAD_SUPPORT=$systhread_support" >> Makefile --echo "PACKLD=$partialld $nativecclinkopts -o\\ " >> Makefile -+echo "PACKLD=$partialld $(echo $nativecclinkopts|sed s/-Wl,//g) -o\\ " >> Makefile - echo "IFLEXDIR=$iflexdir" >> Makefile - echo "O=o" >> Makefile - echo "A=a" >> Makefile diff --git a/debian/patches/0003-Don-t-use-rpath.patch b/debian/patches/0003-Don-t-use-rpath.patch index f1742fcd..1f547354 100644 --- a/debian/patches/0003-Don-t-use-rpath.patch +++ b/debian/patches/0003-Don-t-use-rpath.patch @@ -7,10 +7,10 @@ Subject: Don't use rpath 1 file changed, 5 insertions(+) diff --git a/tools/ocamlmklib.ml b/tools/ocamlmklib.ml -index e5dda65..cb9daca 100644 +index b5c0aee..b4e45d1 100644 --- a/tools/ocamlmklib.ml +++ b/tools/ocamlmklib.ml -@@ -43,6 +43,11 @@ and rpath = ref [] (* rpath options *) +@@ -58,6 +58,11 @@ and rpath = ref [] (* rpath options *) and debug = ref false (* -g option *) and verbose = ref false diff --git a/debian/patches/0004-Put-manpages-in-section-3o-instead-of-3.patch b/debian/patches/0004-Put-manpages-in-section-3o-instead-of-3.patch index 3a29c6db..6cc46b28 100644 --- a/debian/patches/0004-Put-manpages-in-section-3o-instead-of-3.patch +++ b/debian/patches/0004-Put-manpages-in-section-3o-instead-of-3.patch @@ -7,15 +7,15 @@ Subject: Put manpages in section 3o instead of 3 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ocamldoc/Makefile b/ocamldoc/Makefile -index f69b874..374d063 100644 +index f8b8cf6..d2cdcab 100644 --- a/ocamldoc/Makefile +++ b/ocamldoc/Makefile -@@ -387,7 +387,7 @@ test_texi: - stdlib_man/Pervasives.3o: $(OCAMLDOC) $(STDLIB_MLIS) - $(MKDIR) stdlib_man - $(OCAMLDOC_RUN) -man -d stdlib_man $(INCLUDES) \ -- -t "OCaml library" -man-mini $(STDLIB_MLIS) -+ -t "OCaml library" -man-mini -man-section 3o $(STDLIB_MLIS) +@@ -407,7 +407,7 @@ stdlib_man/Stdlib.3o: $(OCAMLDOC) $(DOC_ALL) + $(OCAMLDOC_RUN) -man -d stdlib_man -nostdlib \ + -hide Stdlib -lib Stdlib $(DOC_ALL_INCLUDES) \ + -pp "$(AWK) -v ocamldoc=true -f $(SRC)/stdlib/expand_module_aliases.awk" \ +- -t "OCaml library" -man-mini \ ++ -t "OCaml library" -man-mini -man-section 3o \ + $(DOC_ALL_TEXT:%=-text %) \ + $(DOC_ALL_MLIS) - stdlib_html/Pervasives.html: $(STDLIB_MLIS) - $(MKDIR) stdlib_html diff --git a/debian/patches/0005-Avoid-multiple-declarations-in-generated-.c-files-in.patch b/debian/patches/0005-Avoid-multiple-declarations-in-generated-.c-files-in.patch deleted file mode 100644 index fe9811a2..00000000 --- a/debian/patches/0005-Avoid-multiple-declarations-in-generated-.c-files-in.patch +++ /dev/null @@ -1,101 +0,0 @@ -From: Stephane Glondu -Date: Thu, 21 Apr 2011 18:39:31 +0200 -Subject: Avoid multiple declarations in generated .c files in -output-obj - -In -output-obj mode, (which contains some -primitives) is included in the generated .c file, leading to errors -when compiling with g++ (multiple declarations). - -There are probably better implementations (in particular, in this one, -care must be taken when changing the list of primitives available in -mlvalues.h), but this is a small and (not too) intrusive patch. - -Bug: http://caml.inria.fr/mantis/view.php?id=5254 -Signed-off-by: Stephane Glondu ---- - bytecomp/bytelink.ml | 18 ++++++++++++++++-- - bytecomp/symtable.ml | 8 +++++--- - bytecomp/symtable.mli | 2 +- - 3 files changed, 22 insertions(+), 6 deletions(-) - -diff --git a/bytecomp/bytelink.ml b/bytecomp/bytelink.ml -index 8f82fc9..40a3351 100644 ---- a/bytecomp/bytelink.ml -+++ b/bytecomp/bytelink.ml -@@ -449,6 +449,20 @@ let output_cds_file outfile = - remove_file outfile; - raise x - -+(* List of primitives declared in caml/mlvalues.h, to avoid duplicate -+ declarations in generated .c files *) -+ -+let mlvalues_primitives = [ -+ "caml_get_public_method"; -+ "caml_hash_variant"; -+ "caml_string_length"; -+ "caml_Double_val"; -+ "caml_Store_double_val"; -+ "caml_Int64_val"; -+ "caml_atom_table"; -+ "caml_set_oo_id"; -+] -+ - (* Output a bytecode executable as a C file *) - - let link_bytecode_as_c ppf tolink outfile = -@@ -491,7 +505,7 @@ let link_bytecode_as_c ppf tolink outfile = - (Marshal.to_string sections []); - output_string outchan "\n};\n\n"; - (* The table of primitives *) -- Symtable.output_primitive_table outchan; -+ Symtable.output_primitive_table outchan mlvalues_primitives; - (* The entry point *) - output_string outchan "\ - \nvoid caml_startup(char ** argv)\ -@@ -587,7 +601,7 @@ let link ppf objfiles output_name = - #else\n\ - typedef long value;\n\ - #endif\n"; -- Symtable.output_primitive_table poc; -+ Symtable.output_primitive_table poc []; - output_string poc "\ - #ifdef __cplusplus\n\ - }\n\ -diff --git a/bytecomp/symtable.ml b/bytecomp/symtable.ml -index d2936f4..d81ed51 100644 ---- a/bytecomp/symtable.ml -+++ b/bytecomp/symtable.ml -@@ -112,15 +112,17 @@ let output_primitive_names outchan = - - open Printf - --let output_primitive_table outchan = -+let output_primitive_table outchan blacklist = - let prim = all_primitives() in - for i = 0 to Array.length prim - 1 do -- fprintf outchan "extern value %s();\n" prim.(i) -+ let p = prim.(i) in -+ if not (List.mem p blacklist) then -+ fprintf outchan "extern value %s();\n" p - done; - fprintf outchan "typedef value (*primitive)();\n"; - fprintf outchan "primitive caml_builtin_cprim[] = {\n"; - for i = 0 to Array.length prim - 1 do -- fprintf outchan " %s,\n" prim.(i) -+ fprintf outchan " (primitive)%s,\n" prim.(i) - done; - fprintf outchan " (primitive) 0 };\n"; - fprintf outchan "const char * caml_names_of_builtin_cprim[] = {\n"; -diff --git a/bytecomp/symtable.mli b/bytecomp/symtable.mli -index 22dec58..a621ebe 100644 ---- a/bytecomp/symtable.mli -+++ b/bytecomp/symtable.mli -@@ -26,7 +26,7 @@ val require_primitive: string -> unit - val initial_global_table: unit -> Obj.t array - val output_global_map: out_channel -> unit - val output_primitive_names: out_channel -> unit --val output_primitive_table: out_channel -> unit -+val output_primitive_table: out_channel -> string list -> unit - val data_global_map: unit -> Obj.t - val data_primitive_names: unit -> string - val transl_const: Lambda.structured_constant -> Obj.t diff --git a/debian/patches/0006-Embed-bytecode-in-C-object-when-using-custom.patch b/debian/patches/0006-Embed-bytecode-in-C-object-when-using-custom.patch deleted file mode 100644 index 1441bccb..00000000 --- a/debian/patches/0006-Embed-bytecode-in-C-object-when-using-custom.patch +++ /dev/null @@ -1,222 +0,0 @@ -From: Stephane Glondu -Date: Tue, 11 Jul 2017 13:27:34 +0200 -Subject: Embed bytecode in C object when using -custom - -This patch fixes non-strippability of bytecode executables linked with -custom runtime. The new behaviour is enabled when OCAML_CUSTOM_EMBED -is set to "y", or when DEB_HOST_ARCH is non-empty. - -Forwarded: not-needed -Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=256900 -Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=627761 -Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=678577 -Signed-off-by: Stephane Glondu ---- - bytecomp/bytelink.ml | 42 ++++++++++++++++++++++++--- - testsuite/tests/basic-manyargs/Makefile | 3 ++ - testsuite/tests/callback/Makefile | 3 ++ - testsuite/tests/embedded/Makefile | 4 +++ - testsuite/tests/gc-roots/Makefile | 3 ++ - testsuite/tests/lib-dynlink-bytecode/Makefile | 3 ++ - testsuite/tests/lib-marshal/Makefile | 3 ++ - testsuite/tests/regression/pr3612/Makefile | 3 ++ - testsuite/tests/runtime-C-exceptions/Makefile | 3 ++ - 9 files changed, 63 insertions(+), 4 deletions(-) - -diff --git a/bytecomp/bytelink.ml b/bytecomp/bytelink.ml -index 40a3351..ae887c3 100644 ---- a/bytecomp/bytelink.ml -+++ b/bytecomp/bytelink.ml -@@ -465,7 +465,7 @@ let mlvalues_primitives = [ - - (* Output a bytecode executable as a C file *) - --let link_bytecode_as_c ppf tolink outfile = -+let link_bytecode_as_c ppf tolink outfile with_main = - let outchan = open_out outfile in - begin try - (* The bytecode *) -@@ -507,7 +507,18 @@ let link_bytecode_as_c ppf tolink outfile = - (* The table of primitives *) - Symtable.output_primitive_table outchan mlvalues_primitives; - (* The entry point *) -- output_string outchan "\ -+ if with_main then begin -+ output_string outchan "\ -+\nint main(int argc, char **argv)\ -+\n{\ -+\n caml_startup_code(caml_code, sizeof(caml_code),\ -+\n caml_data, sizeof(caml_data),\ -+\n caml_sections, sizeof(caml_sections),\ -+\n argv);\ -+\n return 0; /* not reached */\ -+\n}\n" -+ end else begin -+ output_string outchan "\ - \nvoid caml_startup(char ** argv)\ - \n{\ - \n caml_startup_code(caml_code, sizeof(caml_code),\ -@@ -521,7 +532,9 @@ let link_bytecode_as_c ppf tolink outfile = - \n caml_data, sizeof(caml_data),\ - \n caml_sections, sizeof(caml_sections),\ - \n argv);\ --\n}\ -+\n}\n" -+ end; -+ output_string outchan "\ - \n#ifdef __cplusplus\ - \n}\ - \n#endif\n"; -@@ -560,6 +573,17 @@ let fix_exec_name name = - if String.contains name '.' then name else name ^ ".exe" - | _ -> name - -+(* Debian-specific -custom behaviour: -+ - if DEB_HOST_ARCH is non-empty, it is activated by default -+ - can be enabled/disabled by setting OCAML_CUSTOM_EMBED to y/n -+*) -+ -+let custom_embed = -+ try Sys.getenv "OCAML_CUSTOM_EMBED" = "y" -+ with Not_found -> -+ try Sys.getenv "DEB_HOST_ARCH" <> "" -+ with Not_found -> false -+ - (* Main entry point (build a custom runtime if needed) *) - - let link ppf objfiles output_name = -@@ -582,6 +606,16 @@ let link ppf objfiles output_name = - Clflags.dllibs := !lib_dllibs @ !Clflags.dllibs; (* put user's DLLs first *) - if not !Clflags.custom_runtime then - link_bytecode ppf tolink output_name true -+ else if custom_embed && not !Clflags.output_c_object && not !Clflags.make_runtime then -+ let c_file = Filename.temp_file "camlobj" ".c" in -+ try -+ link_bytecode_as_c ppf tolink c_file true; -+ let exec_name = fix_exec_name output_name in -+ if not (build_custom_runtime c_file exec_name) -+ then raise(Error Custom_runtime); -+ with x -> -+ remove_file c_file; -+ raise x - else if not !Clflags.output_c_object then begin - let bytecode_name = Filename.temp_file "camlcode" "" in - let prim_name = Filename.temp_file "camlprim" ".c" in -@@ -631,7 +665,7 @@ let link ppf objfiles output_name = - if Sys.file_exists c_file then raise(Error(File_exists c_file)); - let temps = ref [] in - try -- link_bytecode_as_c ppf tolink c_file; -+ link_bytecode_as_c ppf tolink c_file false; - if not (Filename.check_suffix output_name ".c") then begin - temps := c_file :: !temps; - if Ccomp.compile_file c_file <> 0 then -diff --git a/testsuite/tests/basic-manyargs/Makefile b/testsuite/tests/basic-manyargs/Makefile -index b387d6e..e75ba7d 100644 ---- a/testsuite/tests/basic-manyargs/Makefile -+++ b/testsuite/tests/basic-manyargs/Makefile -@@ -18,5 +18,8 @@ BASEDIR=../.. - MAIN_MODULE=manyargs - C_FILES=manyargsprim - -+# This test relies on the upstream behaviour of -custom -+export OCAML_CUSTOM_EMBED=n -+ - include $(BASEDIR)/makefiles/Makefile.one - include $(BASEDIR)/makefiles/Makefile.common -diff --git a/testsuite/tests/callback/Makefile b/testsuite/tests/callback/Makefile -index d6615a1..8e1b4cb 100644 ---- a/testsuite/tests/callback/Makefile -+++ b/testsuite/tests/callback/Makefile -@@ -19,6 +19,9 @@ CC=$(NATIVECC) -I $(CTOPDIR)/byterun - COMPFLAGS=-I $(OTOPDIR)/otherlibs/unix - LD_PATH=$(TOPDIR)/otherlibs/unix - -+# This test relies on the upstream behaviour of -custom -+export OCAML_CUSTOM_EMBED=n -+ - .PHONY: default - default: - @case " $(OTHERLIBRARIES) " in \ -diff --git a/testsuite/tests/embedded/Makefile b/testsuite/tests/embedded/Makefile -index 679c5b9..4d38cd8 100644 ---- a/testsuite/tests/embedded/Makefile -+++ b/testsuite/tests/embedded/Makefile -@@ -16,6 +16,10 @@ - BASEDIR=../.. - - .PHONY: default -+ -+# This test relies on the upstream behaviour of -custom -+export OCAML_CUSTOM_EMBED=n -+ - default: - @$(MAKE) compile - @$(MAKE) run -diff --git a/testsuite/tests/gc-roots/Makefile b/testsuite/tests/gc-roots/Makefile -index c8e24cc..7057e12 100644 ---- a/testsuite/tests/gc-roots/Makefile -+++ b/testsuite/tests/gc-roots/Makefile -@@ -19,5 +19,8 @@ MAIN_MODULE=globroots - C_FILES=globrootsprim - ADD_COMPFLAGS=-w a - -+# This test relies on the upstream behaviour of -custom -+export OCAML_CUSTOM_EMBED=n -+ - include $(BASEDIR)/makefiles/Makefile.one - include $(BASEDIR)/makefiles/Makefile.common -diff --git a/testsuite/tests/lib-dynlink-bytecode/Makefile b/testsuite/tests/lib-dynlink-bytecode/Makefile -index 1e56b16..62a0034 100644 ---- a/testsuite/tests/lib-dynlink-bytecode/Makefile -+++ b/testsuite/tests/lib-dynlink-bytecode/Makefile -@@ -18,6 +18,9 @@ BASEDIR=../.. - COMPFLAGS=-I $(OTOPDIR)/otherlibs/dynlink - LD_PATH=.:$(TOPDIR)/otherlibs/dynlink - -+# This test relies on the upstream behaviour of -custom -+export OCAML_CUSTOM_EMBED=n -+ - .PHONY: default - default: - @if ! $(SUPPORTS_SHARED_LIBRARIES); then \ -diff --git a/testsuite/tests/lib-marshal/Makefile b/testsuite/tests/lib-marshal/Makefile -index a79f6bd..d30d409 100644 ---- a/testsuite/tests/lib-marshal/Makefile -+++ b/testsuite/tests/lib-marshal/Makefile -@@ -18,5 +18,8 @@ BASEDIR=../.. - MAIN_MODULE=intext - C_FILES=intextaux - -+# This test relies on the upstream behaviour of -custom -+export OCAML_CUSTOM_EMBED=n -+ - include $(BASEDIR)/makefiles/Makefile.one - include $(BASEDIR)/makefiles/Makefile.common -diff --git a/testsuite/tests/regression/pr3612/Makefile b/testsuite/tests/regression/pr3612/Makefile -index 866927b..6d0b361 100644 ---- a/testsuite/tests/regression/pr3612/Makefile -+++ b/testsuite/tests/regression/pr3612/Makefile -@@ -16,6 +16,9 @@ - MAIN_MODULE=pr3612 - C_FILES=custom_finalize - -+# This test relies on the upstream behaviour of -custom -+export OCAML_CUSTOM_EMBED=n -+ - BASEDIR=../../.. - include $(BASEDIR)/makefiles/Makefile.one - include $(BASEDIR)/makefiles/Makefile.common -diff --git a/testsuite/tests/runtime-C-exceptions/Makefile b/testsuite/tests/runtime-C-exceptions/Makefile -index da534b7..e9598df 100644 ---- a/testsuite/tests/runtime-C-exceptions/Makefile -+++ b/testsuite/tests/runtime-C-exceptions/Makefile -@@ -3,5 +3,8 @@ BASEDIR=../.. - MAIN_MODULE=test - C_FILES=stub_test - -+# This test relies on the upstream behaviour of -custom -+export OCAML_CUSTOM_EMBED=n -+ - include $(BASEDIR)/makefiles/Makefile.one - include $(BASEDIR)/makefiles/Makefile.common diff --git a/debian/patches/0008-Native-backtraces-don-t-work-on-powerpc-and-sparc.patch b/debian/patches/0008-Native-backtraces-don-t-work-on-powerpc-and-sparc.patch deleted file mode 100644 index c75d88fd..00000000 --- a/debian/patches/0008-Native-backtraces-don-t-work-on-powerpc-and-sparc.patch +++ /dev/null @@ -1,24 +0,0 @@ -From: Stephane Glondu -Date: Wed, 13 Nov 2013 14:28:16 +0100 -Subject: Native backtraces don't work on powerpc and sparc - ---- - testsuite/tests/backtrace/Makefile | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/testsuite/tests/backtrace/Makefile b/testsuite/tests/backtrace/Makefile -index 5df19fc..9ad93c3 100644 ---- a/testsuite/tests/backtrace/Makefile -+++ b/testsuite/tests/backtrace/Makefile -@@ -29,7 +29,10 @@ LOCATIONFILTER=grep -oE \ - - default: - @$(MAKE) byte -- @if $(BYTECODE_ONLY); then $(MAKE) skip ; else $(MAKE) native; fi -+ @case `dpkg-architecture -qDEB_BUILD_ARCH` in \ -+ sparc|powerpc*) : ;; \ -+ *) if $(BYTECODE_ONLY); then $(MAKE) skip ; else $(MAKE) native; fi ;; \ -+ esac - - .PHONY: byte - byte: diff --git a/debian/patches/0010-XL-001-tests.asmcomp.patch b/debian/patches/0010-XL-001-tests.asmcomp.patch deleted file mode 100644 index cefb1a85..00000000 --- a/debian/patches/0010-XL-001-tests.asmcomp.patch +++ /dev/null @@ -1,24 +0,0 @@ -From: Xavier Leroy -Date: Fri, 25 Jan 2019 13:47:44 +0100 -Subject: Drop a test-suite experiment committed by mistake - -This was failing on armhf because Debian GCC now enables PIE by default. - -Bug: https://caml.inria.fr/mantis/view.php?id=7642 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=837359#80 ---- - testsuite/tests/asmcomp/main.ml | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/testsuite/tests/asmcomp/main.ml b/testsuite/tests/asmcomp/main.ml -index 284f7fb..6457ad2 100644 ---- a/testsuite/tests/asmcomp/main.ml -+++ b/testsuite/tests/asmcomp/main.ml -@@ -6,7 +6,6 @@ let compile_file filename = - let out_name = Filename.chop_extension filename ^ ".s" in - Emitaux.output_channel := open_out out_name - end; (* otherwise, stdout *) -- Clflags.dlcode := false; - Compilenv.reset ~source_provenance:(Timings.File filename) "test"; - Emit.begin_assembly(); - let ic = open_in filename in diff --git a/debian/patches/0011-arm64-hide-symbols-for-stricter-binutils.patch b/debian/patches/0011-arm64-hide-symbols-for-stricter-binutils.patch deleted file mode 100644 index 52fa6b72..00000000 --- a/debian/patches/0011-arm64-hide-symbols-for-stricter-binutils.patch +++ /dev/null @@ -1,95 +0,0 @@ -From: Mark Shinwell -Date: Wed, 13 Sep 2017 10:23:16 +0100 -Subject: arm64-hide-symbols-for-stricter-binutils - - AArch64 GOT fixed ---- - Changes | 4 ++++ - asmcomp/arm64/emit.mlp | 15 +++++++++++++-- - asmcomp/arm64/selection.ml | 4 ++-- - 3 files changed, 19 insertions(+), 4 deletions(-) - -diff --git a/Changes b/Changes -index cc59f63..4c0eac7 100644 ---- a/Changes -+++ b/Changes -@@ -135,6 +135,10 @@ OCaml 4.05.0 (13 Jul 2017): - (Hannes Mehnert, Guillaume Bury, - review by Daniel Bünzli, Gabriel Scherer, Damien Doligez) - -+- GPR#1330: when generating dynamically-linkable code on AArch64, always -+ reference symbols (even locally-defined ones) through the GOT. -+ (Mark Shinwell, review by Xavier Leroy) -+ - ### Standard library: - - - MPR#6975, GPR#902: Truncate function added to stdlib Buffer module -diff --git a/asmcomp/arm64/emit.mlp b/asmcomp/arm64/emit.mlp -index f75646e..729096c 100644 ---- a/asmcomp/arm64/emit.mlp -+++ b/asmcomp/arm64/emit.mlp -@@ -114,6 +114,7 @@ let emit_addressing addr r = - | Iindexed ofs -> - `[{emit_reg r}, #{emit_int ofs}]` - | Ibased(s, ofs) -> -+ assert (not !Clflags.dlcode); (* see selection.ml *) - `[{emit_reg r}, #:lo12:{emit_symbol_offset s ofs}]` - - (* Record live pointers at call points *) -@@ -323,7 +324,7 @@ let emit_literals() = - (* Emit code to load the address of a symbol *) - - let emit_load_symbol_addr dst s = -- if (not !Clflags.dlcode) || Compilenv.symbol_in_current_unit s then begin -+ if not !Clflags.dlcode then begin - ` adrp {emit_reg dst}, {emit_symbol s}\n`; - ` add {emit_reg dst}, {emit_reg dst}, #:lo12:{emit_symbol s}\n` - end else begin -@@ -609,6 +610,7 @@ let emit_instr i = - match addr with - | Iindexed _ -> i.arg.(0) - | Ibased(s, ofs) -> -+ assert (not !Clflags.dlcode); (* see selection.ml *) - ` adrp {emit_reg reg_tmp1}, {emit_symbol_offset s ofs}\n`; - reg_tmp1 in - begin match size with -@@ -636,6 +638,7 @@ let emit_instr i = - match addr with - | Iindexed _ -> i.arg.(1) - | Ibased(s, ofs) -> -+ assert (not !Clflags.dlcode); - ` adrp {emit_reg reg_tmp1}, {emit_symbol_offset s ofs}\n`; - reg_tmp1 in - begin match size with -@@ -924,7 +927,15 @@ let fundecl fundecl = - - let emit_item = function - | Cglobal_symbol s -> ` .globl {emit_symbol s}\n`; -- | Cdefine_symbol s -> `{emit_symbol s}:\n` -+ | Cdefine_symbol s -> -+ if !Clflags.dlcode then begin -+ (* GOT relocations against non-global symbols don't seem to work -+ properly: GOT entries are not created for the symbols and the -+ relocations evaluate to random other GOT entries. For the moment -+ force all symbols to be global. *) -+ ` .globl {emit_symbol s}\n`; -+ end; -+ `{emit_symbol s}:\n` - | Cint8 n -> ` .byte {emit_int n}\n` - | Cint16 n -> ` .short {emit_int n}\n` - | Cint32 n -> ` .long {emit_nativeint n}\n` -diff --git a/asmcomp/arm64/selection.ml b/asmcomp/arm64/selection.ml -index d8ea7f8..b714d00 100644 ---- a/asmcomp/arm64/selection.ml -+++ b/asmcomp/arm64/selection.ml -@@ -82,8 +82,8 @@ let inline_ops = - [ "sqrt"; "caml_bswap16_direct"; "caml_int32_direct_bswap"; - "caml_int64_direct_bswap"; "caml_nativeint_direct_bswap" ] - --let use_direct_addressing symb = -- (not !Clflags.dlcode) || Compilenv.symbol_in_current_unit symb -+let use_direct_addressing _symb = -+ not !Clflags.dlcode - - (* Instruction selection *) - diff --git a/debian/patches/0012-Integer-overflows-when-unmarshaling-a-bigarray.patch b/debian/patches/0012-Integer-overflows-when-unmarshaling-a-bigarray.patch deleted file mode 100644 index d982b190..00000000 --- a/debian/patches/0012-Integer-overflows-when-unmarshaling-a-bigarray.patch +++ /dev/null @@ -1,67 +0,0 @@ -From: Stephane Glondu -Date: Fri, 25 Jan 2019 14:34:23 +0100 -Subject: Integer overflows when unmarshaling a bigarray - -Malicious or corrupted marshaled data can result in a bigarray -with impossibly large dimensions that cause overflow when computing -the in-memory size of the bigarray. Disaster ensues when the data -is read in a too small memory area. This commit checks for overflows -when computing the in-memory size of the bigarray. - -This patch has been modified from upstream one to use caml_ba_multov -instead of caml_umul_overflow which is unavailable in OCaml 4.05.0. - -Origin: https://github.com/ocaml/ocaml/pull/1718 -Bug: https://caml.inria.fr/mantis/view.php?id=7765 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895472 -Bug-CVE: CVE-2018-9838 ---- - otherlibs/bigarray/bigarray_stubs.c | 26 +++++++++++++++++++------- - 1 file changed, 19 insertions(+), 7 deletions(-) - -diff --git a/otherlibs/bigarray/bigarray_stubs.c b/otherlibs/bigarray/bigarray_stubs.c -index cb38bef..995739d 100644 ---- a/otherlibs/bigarray/bigarray_stubs.c -+++ b/otherlibs/bigarray/bigarray_stubs.c -@@ -966,22 +966,34 @@ static void caml_ba_deserialize_longarray(void * dest, intnat num_elts) - uintnat caml_ba_deserialize(void * dst) - { - struct caml_ba_array * b = dst; -- int i, elt_size; -- uintnat num_elts; -+ int i; -+ uintnat num_elts, size; -+ int overflow; - - /* Read back header information */ - b->num_dims = caml_deserialize_uint_4(); -+ if (b->num_dims < 0 || b->num_dims > CAML_BA_MAX_NUM_DIMS) -+ caml_deserialize_error("input_value: wrong number of bigarray dimensions"); - b->flags = caml_deserialize_uint_4() | CAML_BA_MANAGED; - b->proxy = NULL; - for (i = 0; i < b->num_dims; i++) b->dim[i] = caml_deserialize_uint_4(); -- /* Compute total number of elements */ -- num_elts = caml_ba_num_elts(b); -- /* Determine element size in bytes */ -+ /* Compute total number of elements. Watch out for overflows (MPR#7765). */ -+ num_elts = 1; -+ for (i = 0; i < b->num_dims; i++) { -+ overflow = 0; -+ num_elts = caml_ba_multov(num_elts, b->dim[i], &overflow); -+ if (overflow) -+ caml_deserialize_error("input_value: size overflow for bigarray"); -+ } -+ /* Determine array size in bytes. Watch out for overflows (MPR#7765). */ - if ((b->flags & CAML_BA_KIND_MASK) > CAML_BA_CHAR) - caml_deserialize_error("input_value: bad bigarray kind"); -- elt_size = caml_ba_element_size[b->flags & CAML_BA_KIND_MASK]; -+ overflow = 0; -+ size = caml_ba_multov(num_elts, caml_ba_element_size[b->flags & CAML_BA_KIND_MASK], &overflow); -+ if (overflow) -+ caml_deserialize_error("input_value: size overflow for bigarray"); - /* Allocate room for data */ -- b->data = malloc(elt_size * num_elts); -+ b->data = malloc(size); - if (b->data == NULL) - caml_deserialize_error("input_value: out of memory for bigarray"); - /* Read data */ diff --git a/debian/patches/0013-Use-CCLINKFLAGS-for-linking-all-executables-and-shar.patch b/debian/patches/0013-Use-CCLINKFLAGS-for-linking-all-executables-and-shar.patch deleted file mode 100644 index cae92118..00000000 --- a/debian/patches/0013-Use-CCLINKFLAGS-for-linking-all-executables-and-shar.patch +++ /dev/null @@ -1,44 +0,0 @@ -From: Torok Edwin -Date: Wed, 15 Jul 2015 16:33:23 +0300 -Subject: Use CCLINKFLAGS for linking all executables and shared libraries - -This allows packagers to set additional linker flags for executables and shared -libraries created by OCaml, and for the OCaml tools themselves. -OCaml code can be linked with various C stubs and C libraries that would -benefit from using hardening link flags, such as -Wl,-z,relro. - -Origin: other -Bug-Debian: https://bugs.debian.org/702349 -Forwarded: no -Last-Update: <2015-07-15> ---- - configure | 2 ++ - tools/Makefile | 2 +- - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/configure b/configure -index c0024a9..b8e0bcf 100755 ---- a/configure -+++ b/configure -@@ -815,6 +815,8 @@ if test $with_sharedlibs = "yes"; then - shared_libraries_supported=true;; - esac - fi -+mksharedlib="$mksharedlib $CCLINKFLAGS" -+mkexe="$mkexe $CCLINKFLAGS" - - if test -z "$mkmaindll"; then - mkmaindll=$mksharedlib -diff --git a/tools/Makefile b/tools/Makefile -index 9a8cf65..2d19c65 100644 ---- a/tools/Makefile -+++ b/tools/Makefile -@@ -316,7 +316,7 @@ endif - - objinfo_helper$(EXE): objinfo_helper.c ../config/s.h - $(BYTECC) $(CCOUT)objinfo_helper$(EXE) $(BYTECCCOMPOPTS) \ -- $(DEF_SYMBOL_PREFIX) $(LIBBFD_INCLUDE) objinfo_helper.c $(LIBBFD_LINK) -+ $(DEF_SYMBOL_PREFIX) $(LIBBFD_INCLUDE) objinfo_helper.c $(LIBBFD_LINK) $(CCLINKFLAGS) - - OBJINFO=../compilerlibs/ocamlcommon.cma \ - ../compilerlibs/ocamlbytecomp.cma \ diff --git a/debian/patches/0014-Compute-a-stable-name-for-preprocessed-files.patch b/debian/patches/0014-Compute-a-stable-name-for-preprocessed-files.patch deleted file mode 100644 index 40daf9c7..00000000 --- a/debian/patches/0014-Compute-a-stable-name-for-preprocessed-files.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Johannes Schauer -Date: Thu, 22 Dec 2016 00:36:14 +0100 -Subject: Compute a stable name for preprocessed files - ---- - driver/pparse.ml | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/driver/pparse.ml b/driver/pparse.ml -index b00ded4..13d76bc 100644 ---- a/driver/pparse.ml -+++ b/driver/pparse.ml -@@ -21,10 +21,19 @@ type error = - - exception Error of error - -+external open_desc: string -> open_flag list -> int -> int = "caml_sys_open" -+external close_desc: int -> unit = "caml_sys_close" -+ - (* Optionally preprocess a source file *) - - let call_external_preprocessor sourcefile pp = -- let tmpfile = Filename.temp_file "ocamlpp" "" in -+ (* do not use Filename.temp_file as the resulting temporary file name will be -+ * recorded in the debug output of the resulting binary and thus make the -+ * output random and unreproducible *) -+ let temp_dir = Filename.get_temp_dir_name () in -+ let hash = Digest.to_hex (Digest.string (sourcefile^pp)) in -+ let tmpfile = Filename.concat temp_dir ("ocamlpp"^hash) in -+ close_desc(open_desc tmpfile [Open_wronly; Open_creat; Open_excl] 0o600); - let comm = Printf.sprintf "%s %s > %s" - pp (Filename.quote sourcefile) tmpfile - in diff --git a/debian/patches/series b/debian/patches/series index b64e943a..5638c3d0 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,12 +1,2 @@ -0001-Pass-no-relax-to-ld-on-alpha.patch -0002-Call-ld-with-proper-flags.patch 0003-Don-t-use-rpath.patch 0004-Put-manpages-in-section-3o-instead-of-3.patch -0005-Avoid-multiple-declarations-in-generated-.c-files-in.patch -0006-Embed-bytecode-in-C-object-when-using-custom.patch -0008-Native-backtraces-don-t-work-on-powerpc-and-sparc.patch -0010-XL-001-tests.asmcomp.patch -0011-arm64-hide-symbols-for-stricter-binutils.patch -0013-Use-CCLINKFLAGS-for-linking-all-executables-and-shar.patch -0014-Compute-a-stable-name-for-preprocessed-files.patch -0012-Integer-overflows-when-unmarshaling-a-bigarray.patch -- 2.30.2