The following commit has been merged in the master branch:
commit decd56b430b648f3a8db8a8cefc40c9e7a7498c4
Author: Mehdi Dogguy <me...@debian.org>
Date:   Tue Jun 25 22:04:38 2013 +0200

    Update patches.
    
      - Disable 0001-Add-ocamlgraph-to-DYN_-O-B-LINKFLAGS.patch
      - Remove 0002-Accept-ocamlgraph-1.8.patch, fixed upstream
      - Remove 0006-Patchlevel2-for-Nitrogen-20111001.patch, integrated

diff --git a/debian/changelog b/debian/changelog
index b11834f..4803605 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,10 @@
 frama-c (20130601+fluorine3+dfsg-1) UNRELEASED; urgency=low
 
   * New upstream release
+    - Remove 0001-Add-ocamlgraph-to-DYN_-O-B-LINKFLAGS.patch, fixed
+      upstream
+    - Remove 0002-Accept-ocamlgraph-1.8.patch, fixed upstream
+    - Remove 0006-Patchlevel2-for-Nitrogen-20111001.patch, integrated
 
  -- Mehdi Dogguy <me...@debian.org>  Tue, 25 Jun 2013 21:51:45 +0200
 
diff --git a/debian/patches/0001-Add-ocamlgraph-to-DYN_-O-B-LINKFLAGS.patch 
b/debian/patches/0001-Add-ocamlgraph-to-DYN_-O-B-LINKFLAGS.patch
deleted file mode 100644
index adaf32d..0000000
--- a/debian/patches/0001-Add-ocamlgraph-to-DYN_-O-B-LINKFLAGS.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Mehdi Dogguy <me...@debian.org>
-Date: Mon, 25 Apr 2011 12:01:09 +0200
-Subject: Add +ocamlgraph to DYN_{O,B}LINKFLAGS
-
----
- Makefile |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index b70d794..6432662 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1324,11 +1324,11 @@ share/Makefile.kernel: Makefile share/Makefile.config 
share/Makefile.common
-       $(ECHO) "DYN_OPT_LIBS=$(filter-out $(GEN_OPT_LIBS), $(OPT_LIBS))" >> $@
-       $(ECHO) "DYN_ALL_BATCH_CMX=$(addprefix $(FRAMAC_TOP_SRCDIR)/, 
$(ALL_BATCH_CMX))" >> $@
-       $(ECHO) "else" >> $@
--      $(ECHO) "DYN_BLINKFLAGS=$(filter-out $(INCLUDES), $(BLINKFLAGS))" >> $@
-+      $(ECHO) "DYN_BLINKFLAGS=$(filter-out $(INCLUDES), $(BLINKFLAGS)) -I 
+ocamlgraph" >> $@
-       $(ECHO) "DYN_GEN_BYTE_LIBS=$(addprefix $(FRAMAC_LIBDIR)/, $(notdir 
$(GEN_BYTE_LIBS)))" >> $@
-       $(ECHO) "DYN_BYTE_LIBS=$(filter-out $(GEN_BYTE_LIBS), $(BYTE_LIBS))" >> 
$@
-       $(ECHO) "DYN_ALL_BATCH_CMO=$(addprefix $(FRAMAC_LIBDIR)/, $(notdir 
$(ALL_BATCH_CMO)))" >> $@
--      $(ECHO) "DYN_OLINKFLAGS=$(filter-out $(INCLUDES), $(OLINKFLAGS))" >> $@
-+      $(ECHO) "DYN_OLINKFLAGS=$(filter-out $(INCLUDES), $(OLINKFLAGS)) -I 
+ocamlgraph" >> $@
-       $(ECHO) "DYN_GEN_OPT_LIBS=$(addprefix $(FRAMAC_LIBDIR)/, $(notdir 
$(GEN_OPT_LIBS)))" >> $@
-       $(ECHO) "DYN_OPT_LIBS=$(filter-out $(GEN_OPT_LIBS), $(OPT_LIBS))" >> $@
-       $(ECHO) "DYN_ALL_BATCH_CMX=$(addprefix $(FRAMAC_LIBDIR)/, $(notdir 
$(ALL_BATCH_CMX)))" >> $@
--- 
diff --git a/debian/patches/0001-Fix-spelling-error-in-binary.patch 
b/debian/patches/0001-Fix-spelling-error-in-binary.patch
new file mode 100644
index 0000000..d635ea1
--- /dev/null
+++ b/debian/patches/0001-Fix-spelling-error-in-binary.patch
@@ -0,0 +1,68 @@
+From: Mehdi Dogguy <me...@debian.org>
+Date: Mon, 2 Jan 2012 14:36:52 +0100
+Subject: Fix spelling-error-in-binary
+
+---
+ Changelog                  |    4 ++--
+ cil/src/frontc/cabs2cil.ml |    4 ++--
+ man/frama-c.1              |    2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/Changelog b/Changelog
+index aaae442..5f972ef 100644
+--- a/Changelog
++++ b/Changelog
+@@ -219,7 +219,7 @@ o! Kernel     [2012/11/24] Various types whose names 
started by t_ in
+ o  Rte        [2012/11/23] Export function "exp_annotations" to get RTEs of a 
C
+             expression as annotations.
+ o*!Kernel     [2012/11/23] Added TLogic_coerce constructor to mark
+-            explicitely a conversion from a C type to a logical one
++            explicitly a conversion from a C type to a logical one
+             (in particular floating point -> real and integral -> integer).
+             Fixes issue #1309.
+ o! Kernel     [2012/11/22] Remove unintuitive ?prj argument from Cil visitors,
+@@ -1237,7 +1237,7 @@ o* Cil         [2010/12/20] Fixed bug #645. 
Ast_info.constant_expr,
+             mkAddrOrStartOf,mkString,parseInt,sizeOf] no longer use
+             an optional argument ?loc. It is now a non optional labeled
+             argument. Previous default value of loc was
+-            ~loc:Cil_datatype.Location.unkown which is most of the time
++            ~loc:Cil_datatype.Location.unknown which is most of the time
+             not accurate.
+ 
+ ###################################
+diff --git a/cil/src/frontc/cabs2cil.ml b/cil/src/frontc/cabs2cil.ml
+index 8351fc2..23d7769 100644
+--- a/cil/src/frontc/cabs2cil.ml
++++ b/cil/src/frontc/cabs2cil.ml
+@@ -2233,7 +2233,7 @@ let makeGlobalVarinfo (isadef: bool) (vi: varinfo) : 
varinfo * bool =
+        * local. This can happen when we declare an extern variable with
+        * global scope but we are in a local scope. *)
+ 
+-    (* We lookup in the environement. If this is extern inline then the name
++    (* We lookup in the environment. If this is extern inline then the name
+      * was already changed to foo__extinline. We lookup with the old name *)
+     let lookupname =
+       if vi.vstorage = Static then
+@@ -3427,7 +3427,7 @@ let default_argument_promotion idx exp =
+             "implicit prototype cannot have variadic arguments"
+       | TNamed _ -> assert false (* unrollType *)
+   in
+-  (* if we make a promotion, take it explicitely 
++  (* if we make a promotion, take it explicitly 
+      into account in the argument itself *)
+   let (_,e) = castTo arg_type typ exp in
+   (name,typ,[]), e
+diff --git a/man/frama-c.1 b/man/frama-c.1
+index 667f6a3..e2a1a70 100644
+--- a/man/frama-c.1
++++ b/man/frama-c.1
+@@ -395,7 +395,7 @@ removes break, continue and switch statement before 
analyses. Defaults to
+ no.
+ .TP
+ .B -then
+-allows to compose analyzes: a first run of Frama-C will occur with the 
++allows one to compose analyzes: a first run of Frama-C will occur with the 
+ options before
+ .B -then
+ and a second run will be done with the options after 
+-- 
diff --git a/debian/patches/0002-Accept-ocamlgraph-1.8.patch 
b/debian/patches/0002-Accept-ocamlgraph-1.8.patch
deleted file mode 100644
index 6f2f4e8..0000000
--- a/debian/patches/0002-Accept-ocamlgraph-1.8.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From: Stephane Glondu <st...@glondu.net>
-Date: Sat, 3 Dec 2011 17:58:39 +0100
-Subject: Accept ocamlgraph 1.8*
-
----
- configure    |    2 +-
- configure.in |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure b/configure
-index aecf0e1..9b31779 100755
---- a/configure
-+++ b/configure
-@@ -3122,7 +3122,7 @@ if test "$OCAMLGRAPH_EXISTS" = "yes"; then
-   then
-     OCAMLGRAPH_VERSION=`./test_ocamlgraph`
-     case $OCAMLGRAPH_VERSION in
--    1.8) { $as_echo "$as_me:${as_lineno-$LINENO}: OcamlGraph 
$OCAMLGRAPH_VERSION found: great!" >&5
-+    1.8*) { $as_echo "$as_me:${as_lineno-$LINENO}: OcamlGraph 
$OCAMLGRAPH_VERSION found: great!" >&5
- $as_echo "$as_me: OcamlGraph $OCAMLGRAPH_VERSION found: great!" >&6;};;
-     *)   { $as_echo "$as_me:${as_lineno-$LINENO}: OcamlGraph 
$OCAMLGRAPH_VERSION is incompatible with Frama-C." >&5
- $as_echo "$as_me: OcamlGraph $OCAMLGRAPH_VERSION is incompatible with 
Frama-C." >&6;}
-diff --git a/configure.in b/configure.in
-index e2ecfe0..abb6c11 100644
---- a/configure.in
-+++ b/configure.in
-@@ -240,7 +240,7 @@ if test "$OCAMLGRAPH_EXISTS" = "yes"; then
-   then
-     OCAMLGRAPH_VERSION=`./test_ocamlgraph`
-     case $OCAMLGRAPH_VERSION in
--    1.8) AC_MSG_NOTICE([OcamlGraph $OCAMLGRAPH_VERSION found: great!]);;
-+    1.8*) AC_MSG_NOTICE([OcamlGraph $OCAMLGRAPH_VERSION found: great!]);;
-     *)   AC_MSG_NOTICE([OcamlGraph $OCAMLGRAPH_VERSION is incompatible with 
Frama-C.])
-          OCAMLGRAPH_EXISTS=no
-        OCAMLGRAPH_INCLUDE=;;
--- 
diff --git a/debian/patches/0004-Use-bin-cp-instead-of-usr-bin-install.patch 
b/debian/patches/0002-Use-bin-cp-instead-of-usr-bin-install.patch
similarity index 71%
rename from debian/patches/0004-Use-bin-cp-instead-of-usr-bin-install.patch
rename to debian/patches/0002-Use-bin-cp-instead-of-usr-bin-install.patch
index df3cf91..0ea4a21 100644
--- a/debian/patches/0004-Use-bin-cp-instead-of-usr-bin-install.patch
+++ b/debian/patches/0002-Use-bin-cp-instead-of-usr-bin-install.patch
@@ -4,18 +4,18 @@ Subject: Use /bin/cp instead of /usr/bin/install
 
 ---
  share/Makefile.common |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/share/Makefile.common b/share/Makefile.common
-index c9e8727..ce1a699 100644
+index 90c877e..4441720 100644
 --- a/share/Makefile.common
 +++ b/share/Makefile.common
-@@ -138,7 +138,7 @@ CHMOD_RW= sh -c \
+@@ -157,7 +157,7 @@ CHMOD_RW= sh -c \
  'for f in "$$@"; do \
    if test -e $$f; then chmod u+w $$f; fi \
  done' chmod_rw
--CP      = /usr/bin/install
-+CP      = /bin/cp
+-CP      = install
++CP      = cp
  ECHO  = echo
  MKDIR   = mkdir -p
  MV    = mv
diff --git a/debian/patches/0005-Disable-CHMOD_RO-invocations.patch 
b/debian/patches/0003-Disable-CHMOD_RO-invocations.patch
similarity index 78%
rename from debian/patches/0005-Disable-CHMOD_RO-invocations.patch
rename to debian/patches/0003-Disable-CHMOD_RO-invocations.patch
index 10e610b..5cfbd65 100644
--- a/debian/patches/0005-Disable-CHMOD_RO-invocations.patch
+++ b/debian/patches/0003-Disable-CHMOD_RO-invocations.patch
@@ -4,13 +4,13 @@ Subject: Disable CHMOD_RO invocations
 
 ---
  share/Makefile.common |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/share/Makefile.common b/share/Makefile.common
-index ce1a699..1993cf1 100644
+index 4441720..16a6f61 100644
 --- a/share/Makefile.common
 +++ b/share/Makefile.common
-@@ -133,7 +133,7 @@ external_make = \
+@@ -152,7 +152,7 @@ external_make = \
  
  CAT   = cat
  CHMOD = chmod
diff --git a/debian/patches/0003-Fix-spelling-error-in-binary.patch 
b/debian/patches/0003-Fix-spelling-error-in-binary.patch
deleted file mode 100644
index 3e439ef..0000000
--- a/debian/patches/0003-Fix-spelling-error-in-binary.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-From: Mehdi Dogguy <me...@debian.org>
-Date: Mon, 2 Jan 2012 14:36:52 +0100
-Subject: Fix spelling-error-in-binary
-
----
- Changelog                     |    8 ++++----
- cil/src/cil.ml                |    2 +-
- cil/src/ext/cfg.mli           |    2 +-
- cil/src/frontc/cabs2cil.ml    |    2 +-
- cil/src/logic/logic_typing.ml |    6 +++---
- man/frama-c.1                 |    2 +-
- src/impact/register.ml        |    4 ++--
- src/kernel/cmdline.mli        |    2 +-
- 8 files changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/Changelog b/Changelog
-index e527189..909b359 100644
---- a/Changelog
-+++ b/Changelog
-@@ -576,7 +576,7 @@ o* Cil           [2010/12/20] Fixed bug #645. 
Ast_info.constant_expr,
-             mkAddrOrStartOf,mkString,parseInt,sizeOf] no longer use
-             an optional argument ?loc. It is now a non optional labeled
-             argument. Previous default value of loc was
--            ~loc:Cil_datatype.Location.unkown which is most of the time
-+            ~loc:Cil_datatype.Location.unknown which is most of the time
-             not accurate.
- 
- ###################################
-@@ -729,7 +729,7 @@ o  Cil        [2010/06/04] Support for custom extension in 
grammar of behaviors.
- -* Cil        [2010/05/31] Extended grammar of pragma lines.
- o* Cil        [2010/05/28] Fix bug #489: constant literal present in original
-             source are preserved in the AST. NB: this implies that they might
--            be explicitely cast when an integer conversion occur.
-+            be explicitly cast when an integer conversion occur.
- -* Kernel     [2010/05/28] Fixed bug in handling of -cpp-command
- o! Cil        [2010/05/21] Remove deprecated annotation_status of AAssert
-             in the AST
-@@ -908,7 +908,7 @@ o! Kernel     [2009/11/24] Use of global logic constants 
is now a
- -  Value      [2009/11/24] Handling of behavior-specific assertions now
-             correct (albeit imprecise).
- -! Kernel     [2009/11/19] The journal is generated only if the GUI is
--            crashing, or if the option -journal-enable is explicitely
-+            crashing, or if the option -journal-enable is explicitly
-             set (fixed issue #!330).
- +-  Value      [2009/11/19] New option -slevel-exclude f for fine-tuning
-             semantic unrolling.
-@@ -1206,7 +1206,7 @@ o! Kernel     [2009/01/23] File.pretty does not take 
anymore a formatter
- -* Journal    [2009/01/19] Fixed bug with -disable-journal and type with
-             no pretty-printer.
- -  Configure  [2009/01/19] New option -with-all-static in order to
--            statically link all plug-ins, except those explicitely
-+            statically link all plug-ins, except those explicitly
-             specified as dynamic (bts #?430).
- -* Journal    [2009/01/19] Fixed bug in journalisation of non-functional 
values.
- -* Makefile   [2009/01/19] Fixed bug whenever all plug-ins should be static.
-diff --git a/cil/src/cil.ml b/cil/src/cil.ml
-index 8fb03a2..ea04622 100644
---- a/cil/src/cil.ml
-+++ b/cil/src/cil.ml
-@@ -8880,7 +8880,7 @@ let rec mkCastT ~(e: exp) ~(oldt: typ) ~(newt: typ) =
-     (* Watch out for constants *)
-     match newt, e.enode with
-         (* In the case were we have a representation for the literal,
--           add explicitely the cast. *)
-+           add explicitly the cast. *)
-       TInt(newik, []), Const(CInt64(i, _, None)) -> kinteger64 ~loc newik i
-     | _ ->
-         new_exp
-diff --git a/cil/src/ext/cfg.mli b/cil/src/ext/cfg.mli
-index 1467255..f40ad47 100644
---- a/cil/src/ext/cfg.mli
-+++ b/cil/src/ext/cfg.mli
-@@ -51,7 +51,7 @@ open Cil_types
- (** Compute the CFG for an entire file, by calling cfgFun on each function. *)
- val computeFileCFG: file -> unit
- 
--(** clear the sid (except when clear_id is explicitely set to false),
-+(** clear the sid (except when clear_id is explicitly set to false),
-     succs, and preds fields of each statement. *)
- val clearFileCFG: ?clear_id:bool -> file -> unit
- 
-diff --git a/cil/src/frontc/cabs2cil.ml b/cil/src/frontc/cabs2cil.ml
-index fabb198..a69c921 100644
---- a/cil/src/frontc/cabs2cil.ml
-+++ b/cil/src/frontc/cabs2cil.ml
-@@ -2257,7 +2257,7 @@ let makeGlobalVarinfo (isadef: bool) (vi: varinfo) : 
varinfo * bool =
-        * local. This can happen when we declare an extern variable with
-        * global scope but we are in a local scope. *)
- 
--    (* We lookup in the environement. If this is extern inline then the name
-+    (* We lookup in the environment. If this is extern inline then the name
-      * was already changed to foo__extinline. We lookup with the old name *)
-     let lookupname =
-       if vi.vstorage = Static then
-diff --git a/cil/src/logic/logic_typing.ml b/cil/src/logic/logic_typing.ml
-index 88d686f..8f76da6 100644
---- a/cil/src/logic/logic_typing.ml
-+++ b/cil/src/logic/logic_typing.ml
-@@ -1803,7 +1803,7 @@ struct
-                             info.ctor_name
-                   with Not_found ->
-                     (* We have a global logic variable. It may depend on
--                       a single state (multiple labels need to be explicitely
-+                       a single state (multiple labels need to be explicitly
-                        instantiated and are treated as PLapp below).
-                        NB: for now, if we have a real function (with 
parameters
-                        other than labels) and a label,
-@@ -1832,7 +1832,7 @@ struct
-                             Tapp(f,[l,curr],[]), typ
-                         | _ ->
-                             error loc
--                              "%s labels must be explicitely instantiated" x
-+                              "%s labels must be explicitly instantiated" x
-                     in
-                     match C.find_all_logic_functions x with
- 
-@@ -2581,7 +2581,7 @@ struct
-                    | [l] -> [l,find_current_label loc env]
-                    | _ ->
-                      error loc
--                       "%s labels must be explicitely instantiated" x
-+                       "%s labels must be explicitly instantiated" x
-                  in
-                  papp ~loc (info,labels,[])
-                | Some _ -> boolean_to_predicate env p0
-diff --git a/man/frama-c.1 b/man/frama-c.1
-index 4c90286..7bfb92d 100644
---- a/man/frama-c.1
-+++ b/man/frama-c.1
-@@ -356,7 +356,7 @@ removes break, continue and switch statement before 
analyses. Defaults to
- no.
- .TP
- .B -then
--allows to compose analyzes: a first run of Frama-C will occur with the 
-+allows one to compose analyzes: a first run of Frama-C will occur with the 
- options before
- .B -then
- and a second run will be done with the options after 
-diff --git a/src/impact/register.ml b/src/impact/register.ml
-index 42778b7..6b160a4 100644
---- a/src/impact/register.ml
-+++ b/src/impact/register.ml
-@@ -41,12 +41,12 @@ let from_stmt s =
-   with
-   | Dynamic.Incompatible_type _ ->
-     error "versions of plug-ins `impact' and `Security_slicing' seem \
--incompatible.\nCheck the environement variable FRAMAC_PLUGIN.\n\
-+incompatible.\nCheck the environment variable FRAMAC_PLUGIN.\n\
- Analysis discarded.";
-     []
-   | Dynamic.Unbound_value _ ->
-     error "cannot access to plug-in `Security_slicing'.\n\
--Are you sure that it is loaded? Check the environement variable \
-+Are you sure that it is loaded? Check the environment variable \
- FRAMAC_PLUGIN.\n\
- Analysis discarded.";
-     []
-diff --git a/src/kernel/cmdline.mli b/src/kernel/cmdline.mli
-index 7bf4673..cb5cdb7 100644
---- a/src/kernel/cmdline.mli
-+++ b/src/kernel/cmdline.mli
-@@ -274,7 +274,7 @@ val journal_enable: bool
-   (** @since Beryllium-20090601-beta1 *)
- 
- val journal_isset: bool
--  (** -journal-enable/disable explicitely set on the command line.
-+  (** -journal-enable/disable explicitly set on the command line.
-       @since Boron-20100401 *)
- 
- val journal_name: string
--- 
diff --git a/debian/patches/0006-Patchlevel2-for-Nitrogen-20111001.patch 
b/debian/patches/0006-Patchlevel2-for-Nitrogen-20111001.patch
deleted file mode 100644
index c1f224a..0000000
--- a/debian/patches/0006-Patchlevel2-for-Nitrogen-20111001.patch
+++ /dev/null
@@ -1,323 +0,0 @@
-From: Mehdi Dogguy <me...@debian.org>
-Date: Fri, 6 Jan 2012 09:30:22 +0100
-Subject: Patchlevel2 for Nitrogen 20111001
-
----
- Changelog                 |   21 ++++++++++++
- src/ai/base.ml            |    6 ++-
- src/from/from_register.ml |    3 +-
- src/lib/rangemap.ml       |    4 +-
- src/memory_state/lmap.ml  |    2 +-
- src/value/eval_exprs.ml   |   81 +++++++++++++++++++++++---------------------
- src/value/eval_exprs.mli  |    1 +
- src/value/eval_funs.ml    |    4 ++-
- src/value/eval_logic.ml   |   11 +++++-
- src/value/eval_stmts.ml   |   15 +++++---
- 10 files changed, 95 insertions(+), 53 deletions(-)
-
-diff --git a/Changelog b/Changelog
-index 909b359..e60a3ba 100644
---- a/Changelog
-+++ b/Changelog
-@@ -12,6 +12,27 @@
- # '#?nnn'  : OLD-BTS entry #nnn                                               
#
- 
###############################################################################
- 
-+-* Value      [2011/12/05] An alarm could be omitted on *p = lval;
-+            when p could point into a read-only location such as a string
-+            constant. Fixed.
-+o* Value      [2011/12/05] Fix option -absolute-valid-range being reset by
-+            project copies.
-+-* Value      [2011/12/05] Fix wrong hash function, which could cause
-+            memory overuse and worse.
-+-  Value      [2011/10/25] Improve interpretation of ACSL annotations in
-+            presence of typedefs.
-+-* From       [2011/10/21] The interpretation of explicit assigns clauses for
-+            library function "assigns *p \from x;" was wrong: every possible
-+            location was assumed to have been overwritten.
-+-  Value      [2011/10/18] Improve evaluation of logic when option
-+               -val-signed-overflow-alarms is active.
-+-* Value      [2011/10/17] Fixed crash when a library function is called in
-+              a state where the function's precondition cannot be true.
-+-* Value      [2011/10/10] Fixed spurious alarm \valid(p) in *p = e; when e is
-+              completely invalid. Soundness was not affected (the
-+              alarm for whatever made e invalid was present).
-+
-+
- #####################################
- Open Source Release Nitrogen_20111001
- #####################################
-diff --git a/src/ai/base.ml b/src/ai/base.ml
-index 5669a8c..45659d0 100644
---- a/src/ai/base.ml
-+++ b/src/ai/base.ml
-@@ -117,12 +117,14 @@ let bits_sizeof v =
-     | Var (v,_) | Initialized_Var (v,_) ->
-         Bit_utils.sizeof_vid v
- 
-+let dep_absolute = [Kernel.AbsoluteValidRange.self]
-+
- module MinValidAbsoluteAddress =
-   State_builder.Ref
-     (Abstract_interp.Int)
-     (struct
-        let name = "MinValidAbsoluteAddress"
--       let dependencies = []
-+       let dependencies = dep_absolute
-        let kind = `Internal
-        let default () = Abstract_interp.Int.zero
-      end)
-@@ -132,7 +134,7 @@ module MaxValidAbsoluteAddress =
-     (Abstract_interp.Int)
-     (struct
-        let name = "MaxValidAbsoluteAddress"
--       let dependencies = []
-+       let dependencies = dep_absolute
-        let kind = `Internal
-        let default () = Abstract_interp.Int.minus_one
-      end)
-diff --git a/src/from/from_register.ml b/src/from/from_register.ml
-index ca13011..deae68a 100644
---- a/src/from/from_register.ml
-+++ b/src/from/from_register.ml
-@@ -716,11 +716,12 @@ let compute_using_prototype_for_state state kf =
-                   !Properties.Interp.loc_to_loc ~result:None state
-                     out.it_content
-                 in
-+              let exact = Locations.Location_Bits.cardinal_zero_or_one 
output_loc.loc in
-                 let output_zone =
-                   Locations.valid_enumerate_bits ~for_writing:true
-                     output_loc
-                 in
--                Lmap_bitwise.From_Model.add_binding ~exact:true
-+                Lmap_bitwise.From_Model.add_binding ~exact
-                   acc output_zone (input_zone ins)
-               with Invalid_argument "not an lvalue" ->
-                  From_parameters.result
-diff --git a/src/lib/rangemap.ml b/src/lib/rangemap.ml
-index 67a58cd..a93953e 100644
---- a/src/lib/rangemap.ml
-+++ b/src/lib/rangemap.ml
-@@ -88,7 +88,7 @@ module Make(Ord: Datatype.S)(Value: Datatype.S) = struct
-     | Node(_,_,_,_,h,_) -> h
- 
-   let hash = function
--    | Empty -> 13
-+    | Empty -> 0
-     | Node(_,_,_,_,_,h) -> h
- 
- 
-@@ -126,7 +126,7 @@ module Make(Ord: Datatype.S)(Value: Datatype.S) = struct
-       let hl = height l and hr = height r in
-       let hashl = hash l and hashr = hash r in
-       let hashbinding = Hashtbl.hash (x_h, d_h) in
--      let hashtree = 289 (* =17*17 *) * hashl + 17 * hashbinding + hashr in
-+      let hashtree = hashl lxor hashbinding lxor hashr in
-       Node(l, x, d, r, (if hl >= hr then hl + 1 else hr + 1), hashtree)
- 
-    let bal l x d r =
-diff --git a/src/memory_state/lmap.ml b/src/memory_state/lmap.ml
-index 9867584..8786e5b 100644
---- a/src/memory_state/lmap.ml
-+++ b/src/memory_state/lmap.ml
-@@ -943,7 +943,7 @@ let is_included =
-       let plevel = Kernel.ArrayPrecisionLevel.get() in
-         let treat_dst k_dst i_dst (acc_lmap : LBase.t) =
-           if Base.is_read_only k_dst
--          then acc_lmap
-+          then (CilE.warn_mem_write with_alarms; acc_lmap)
-           else
-             let validity = Base.validity k_dst in
-             let offsetmap_dst = LBase.find_or_default k_dst m in
-diff --git a/src/value/eval_exprs.ml b/src/value/eval_exprs.ml
-index 543bc91..73b5349 100644
---- a/src/value/eval_exprs.ml
-+++ b/src/value/eval_exprs.ml
-@@ -960,7 +960,7 @@ and eval_expr_with_deps_state ~with_alarms deps state e =
-               (* Can raise a pointer comparison. CilE needs a binop there *)
-         in
-         CilE.set_syntactic_context syntactic_context;
--        let result = eval_unop ~with_alarms expr t op in
-+        let result = eval_unop ~check_overflow:true ~with_alarms expr t op in
-         state, deps, result
-   in
-   let r =
-@@ -979,46 +979,49 @@ and eval_expr_with_deps_state ~with_alarms deps state e =
-   | _ -> ()); *)
-   state, deps, rr
- 
--and eval_unop ~with_alarms expr t op =
-+(* This function evaluates a unary minus, but does _not_ check for overflows.
-+   This is left to the caller *)
-+and eval_uneg_exp ~with_alarms expr t =
-+  match unrollType t with
-+    | TFloat _ ->
-+        (try
-+           let v = V.project_ival expr in
-+           let f = Ival.project_float v in
-+           V.inject_ival
-+             (Ival.inject_float (Ival.Float_abstract.neg_float f))
-+         with
-+             V.Not_based_on_null ->
-+               begin match with_alarms.CilE.others with
-+                 | CilE.Aignore -> ()
-+                 | CilE.Acall f -> f()
-+                 | CilE.Alog _ ->
-+                     warning_once_current
-+                       "converting address to float: assert(TODO)"
-+               end;
-+               V.topify_arith_origin expr
-+       | Ival.Float_abstract.Nan_or_infinite ->
-+            begin match with_alarms.CilE.others with
-+              | CilE.Aignore -> ()
-+              | CilE.Acall f -> f()
-+              | CilE.Alog _ ->
-+                  warning_once_current
-+                    "converting value to float: assert (TODO)"
-+            end;
-+            V.top_float
-+     )
-+     | _ ->
-+         try
-+           let v = V.project_ival expr in
-+           V.inject_ival (Ival.neg v)
-+         with V.Not_based_on_null -> V.topify_arith_origin expr
-+
-+and eval_unop ~check_overflow ~with_alarms expr t op =
-   match op with
-     | Neg ->
--        let t = unrollType t in
--        (match t with TFloat _ ->
--           (try
--              let v = V.project_ival expr in
--              let f = Ival.project_float v in
--              V.inject_ival
--                (Ival.inject_float (Ival.Float_abstract.neg_float f))
--            with
--              V.Not_based_on_null ->
--                begin match with_alarms.CilE.others with
--                  CilE.Aignore -> ()
--                | CilE.Acall f -> f()
--                | CilE.Alog _ ->
--                    warning_once_current
--                      "converting address to float: assert(TODO)"
--                end;
--                V.topify_arith_origin expr
--            | Ival.Float_abstract.Nan_or_infinite ->
--                begin match with_alarms.CilE.others with
--                  CilE.Aignore -> ()
--                | CilE.Acall f -> f()
--                | CilE.Alog _ ->
--                    warning_once_current
--                      "converting value to float: assert (TODO)"
--                end;
--                V.top_float
--           )
--        | _ ->
--            let result =
--              try
--                let v = V.project_ival expr in
--                V.inject_ival (Ival.neg v)
--              with V.Not_based_on_null -> V.topify_arith_origin expr
--            in
--            handle_signed_overflow ~with_alarms t result
--        )
--
-+        let r = eval_uneg_exp ~with_alarms expr t in
-+        if check_overflow
-+        then handle_signed_overflow ~with_alarms t r
-+        else r
-     | BNot ->
-         (try
-            let v = V.project_ival expr in
-diff --git a/src/value/eval_exprs.mli b/src/value/eval_exprs.mli
-index 3914cb8..4f76da5 100644
---- a/src/value/eval_exprs.mli
-+++ b/src/value/eval_exprs.mli
-@@ -50,6 +50,7 @@ val eval_binop_int :
-   Cvalue.V.t -> binop -> Cvalue.V.t -> Cvalue.V.t
- 
- val eval_unop:
-+  check_overflow:bool ->
-   with_alarms:CilE.warn_mode ->
-   Cvalue.V.t ->
-   typ (** Type of the expression under the unop *) ->
-diff --git a/src/value/eval_funs.ml b/src/value/eval_funs.ml
-index 5db6453..4d1c0f4 100644
---- a/src/value/eval_funs.ml
-+++ b/src/value/eval_funs.ml
-@@ -166,7 +166,9 @@ let compute_using_prototype kf ~active_behaviors 
~state_with_formals =
-       (Kernel_function.get_name kf)
-       Cvalue.Model.pretty state_with_formals; *)
-   let vi = Kernel_function.get_vi kf in
--  if Cil.hasAttribute "noreturn" vi.vattr then
-+  if (not (Cvalue.Model.is_reachable state_with_formals)) ||
-+    Cil.hasAttribute "noreturn" vi.vattr
-+  then
-     None, Cvalue.Model.bottom, Location_Bits.Top_Param.bottom
-   else
-       let return_type,_formals_type,_inline,_attr =
-diff --git a/src/value/eval_logic.ml b/src/value/eval_logic.ml
-index 52d5276..4be53b6 100644
---- a/src/value/eval_logic.ml
-+++ b/src/value/eval_logic.ml
-@@ -255,7 +255,9 @@ let rec eval_term env result t =
-           | BNot -> t (* can only be used on an integer type *)
-           | LNot -> intType
-         in
--        let eval typ v = eval_unop ~with_alarms v typ op in
-+        let eval typ v =
-+          eval_unop ~check_overflow:false ~with_alarms v typ op
-+        in
-         List.map (fun (typ, v) -> typ' typ, eval typ v) l
- 
-     | Trange (otlow, othigh) ->
-@@ -405,6 +407,11 @@ let eval_term_as_exact_loc env result t =
-         )
-     | _ -> raise Not_an_exact_loc
- 
-+let isPointerCType ct =
-+  match unrollType ct with
-+    TPtr _ -> true
-+  | _ -> false
-+
- let rec reduce_by_predicate ~result env positive p =
-   let result =
-     match positive,p.content with
-@@ -459,7 +466,7 @@ let rec reduce_by_predicate ~result env positive p =
-             | t when isLogicRealOrFloatType t ->
-                 eval_float (Value_parameters.AllRoundingModes.get ())
-             | t when isLogicIntegralType t -> eval_int
--            | Ctype (TPtr _) -> eval_int
-+            | Ctype (ct) when isPointerCType ct -> eval_int
-             | _ -> raise Predicate_alarm
-           in
-           reduce_by_relation eval ~result env positive t1 op t2
-diff --git a/src/value/eval_stmts.ml b/src/value/eval_stmts.ml
-index ca95ff7..64f2415 100644
---- a/src/value/eval_stmts.ml
-+++ b/src/value/eval_stmts.ml
-@@ -562,12 +562,17 @@ struct
-               mem_e
-               reduced_state
-           in
--          if not (Cvalue.Model.is_reachable new_reduced_state)
-+          if (Cvalue.Model.is_reachable reduced_state) &&
-+          not (Cvalue.Model.is_reachable new_reduced_state)
-           then begin
--            CilE.set_syntactic_context (CilE.SyMem lv);
--            CilE.warn_mem_write with_alarms ;
--            Value_parameters.result ~current:true
--              "all target addresses were invalid. This path is assumed to be 
dead.";
-+(*          Value_parameters.result ~current:true
-+              "REDUCED:@.%a@.TO:@.%a@."
-+              Cvalue.Model.pretty reduced_state
-+              Cvalue.Model.pretty new_reduced_state; *)
-+              CilE.set_syntactic_context (CilE.SyMem lv);
-+              CilE.warn_mem_write with_alarms ;
-+              Value_parameters.result ~current:true
-+        "all target addresses were invalid. This path is assumed to be dead.";
-           end;
-           new_reduced_state
-             (*      | Var _ , Index _ -> assert false
--- 
diff --git a/debian/patches/series b/debian/patches/series
index c2fedb3..06464b6 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,6 +1,3 @@
-0001-Add-ocamlgraph-to-DYN_-O-B-LINKFLAGS.patch
-0002-Accept-ocamlgraph-1.8.patch
-0003-Fix-spelling-error-in-binary.patch
-0004-Use-bin-cp-instead-of-usr-bin-install.patch
-0005-Disable-CHMOD_RO-invocations.patch
-0006-Patchlevel2-for-Nitrogen-20111001.patch
+0001-Fix-spelling-error-in-binary.patch
+0002-Use-bin-cp-instead-of-usr-bin-install.patch
+0003-Disable-CHMOD_RO-invocations.patch

-- 
frama-c packaging

_______________________________________________
Pkg-ocaml-maint-commits mailing list
Pkg-ocaml-maint-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-ocaml-maint-commits

Reply via email to