Frama-C-discuss mailing list archives
This page gathers the archives of the old Frama-C-discuss archives, that was hosted by Inria's gforge before its demise at the end of 2020. To search for mails newer than September 2020, please visit the page of the new mailing list on Renater.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Frama-c-discuss] Patch for OCaml 4.00.0
- Subject: [Frama-c-discuss] Patch for OCaml 4.00.0
- From: loganjerry at gmail.com (Jerry James)
- Date: Tue, 11 Sep 2012 14:09:25 -0600
Hello,
I am the current maintainer of the Frama-C package in the Fedora Linux
distribution. Our development branch recently updated to OCaml
4.00.0. I encountered two problems when trying to build frama-c with
OCaml 4.00.0, and would like someone to look at my proposed solutions
to see if they appear to be correct. First, the Hashtbl signature
changed. I patched cil/ocamlutils/inthash.ml(i) to add reset and
stats functions. Second, frama-c would segfault on startup. The
backtrace looked like this:
src/kernel/journal.ml, line 222:
let add ty v var =
Type.Obj_tbl.add bindings ty v var (* eta-expansion required *)
src/type/type.ml, line 486:
O.replace tytbl (Obj.repr k) v
OCaml sources: Hashtbl.replace
OCaml sources: Hashtbl.replace_bucket
Unfortunately, there is no debug information available for Hashtbl,
due to the way the ocaml package is built in Fedora. Debugging
pointed to this code in src/type/type.ml, module Obj_tbl:
module O =
Hashtbl.Make(struct
type t = Obj.t
let equal = (==)
let hash x =
if !use_obj then
(* 0 is correct; trying to do a bit better... *)
let tag = Obj.tag x in
if tag = 0 then
0
else if tag = Obj.closure_tag then
(* assumes that the first word of a closure does not change in
any way (even by Gc.compact invokation). *)
Obj.magic (Obj.field x 0)
else
Hashtbl.hash x
else
0
end)
In particular, lines 463-6 appear to be the problem. This is the part
that operates on closures. If I remove that part, frama-c "works", in
the sense that it doesn't segfault on startup anymore. But is that
correct? If not, what should be done here?
I have attached the patch I am currently experimenting with for
comment. A small change to configure.in to accept OCaml 4 is also
necessary. Thanks and regards,
--
Jerry James
http://www.jamezone.org/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: frama-c-ocaml4.patch
Type: application/octet-stream
Size: 3129 bytes
Desc: not available
URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20120911/eb6bb60f/attachment.obj>
- Follow-Ups:
- [Frama-c-discuss] Patch for OCaml 4.00.0
- From: Julien.Signoles at cea.fr (Julien Signoles)
- [Frama-c-discuss] Patch for OCaml 4.00.0
- From: boris at yakobowski.org (Boris Yakobowski)
- [Frama-c-discuss] Patch for OCaml 4.00.0
- Prev by Date: [Frama-c-discuss] the meaning of a curve or arc in PDG.
- Next by Date: [Frama-c-discuss] Patch for OCaml 4.00.0
- Previous by thread: [Frama-c-discuss] the meaning of a curve or arc in PDG.
- Next by thread: [Frama-c-discuss] Patch for OCaml 4.00.0
- Index(es):
