aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
Diffstat (limited to 'driver')
-rw-r--r--driver/Configuration.ml2
-rw-r--r--driver/Driver.ml9
-rw-r--r--driver/Interp.ml14
3 files changed, 14 insertions, 11 deletions
diff --git a/driver/Configuration.ml b/driver/Configuration.ml
index 87e29e0f..85a163bf 100644
--- a/driver/Configuration.ml
+++ b/driver/Configuration.ml
@@ -117,7 +117,7 @@ let linker =
let arch =
match get_config_string "arch" with
- | "powerpc"|"arm"|"ia32" as a -> a
+ | "powerpc"|"arm"|"ia32"|"x86_64"|"x86" as a -> a
| v -> bad_config "arch" [v]
let model = get_config_string "model"
let abi = get_config_string "abi"
diff --git a/driver/Driver.ml b/driver/Driver.ml
index a273a91a..145de6c5 100644
--- a/driver/Driver.ml
+++ b/driver/Driver.ml
@@ -511,9 +511,12 @@ let _ =
| "arm" -> if Configuration.is_big_endian
then Machine.arm_bigendian
else Machine.arm_littleendian
- | "ia32" -> if Configuration.abi = "macosx"
- then Machine.x86_32_macosx
- else Machine.x86_32
+ | "x86" -> if Configuration.model = "64" then
+ Machine.x86_64
+ else
+ if Configuration.abi = "macosx"
+ then Machine.x86_32_macosx
+ else Machine.x86_32
| _ -> assert false
end;
Builtins.set C2C.builtins;
diff --git a/driver/Interp.ml b/driver/Interp.ml
index d7e0b1bc..1e328a70 100644
--- a/driver/Interp.ml
+++ b/driver/Interp.ml
@@ -366,14 +366,14 @@ let (>>=) opt f = match opt with None -> None | Some arg -> f arg
(* Like eventval_of_val, but accepts static globals as well *)
let convert_external_arg ge v t =
- match v, t with
- | Vint i, AST.Tint -> Some (EVint i)
- | Vfloat f, AST.Tfloat -> Some (EVfloat f)
- | Vsingle f, AST.Tsingle -> Some (EVsingle f)
- | Vlong n, AST.Tlong -> Some (EVlong n)
- | Vptr(b, ofs), AST.Tint ->
+ match v with
+ | Vint i -> Some (EVint i)
+ | Vfloat f -> Some (EVfloat f)
+ | Vsingle f -> Some (EVsingle f)
+ | Vlong n -> Some (EVlong n)
+ | Vptr(b, ofs) ->
Senv.invert_symbol ge b >>= fun id -> Some (EVptr_global(id, ofs))
- | _, _ -> None
+ | _ -> None
let rec convert_external_args ge vl tl =
match vl, tl with