aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cparser/Cutil.ml3
-rw-r--r--cparser/Machine.ml4
-rw-r--r--cparser/Machine.mli1
-rw-r--r--driver/Driver.ml4
-rw-r--r--runtime/include/stddef.h2
5 files changed, 11 insertions, 3 deletions
diff --git a/cparser/Cutil.ml b/cparser/Cutil.ml
index 221bd7cc..a3c05c34 100644
--- a/cparser/Cutil.ml
+++ b/cparser/Cutil.ml
@@ -721,7 +721,8 @@ let type_of_member env fld =
let find_matching_unsigned_ikind sz =
assert (sz > 0);
- if sz = !config.sizeof_int then IUInt
+ if sz = !config.sizeof_short then IUShort
+ else if sz = !config.sizeof_int then IUInt
else if sz = !config.sizeof_long then IULong
else if sz = !config.sizeof_longlong then IULongLong
else assert false
diff --git a/cparser/Machine.ml b/cparser/Machine.ml
index bd6489fd..7a12c649 100644
--- a/cparser/Machine.ml
+++ b/cparser/Machine.ml
@@ -170,6 +170,10 @@ let ppc_32_bigendian =
bitfields_msb_first = true;
supports_unaligned_accesses = true }
+let ppc_32_diab_bigendian =
+ { ppc_32_bigendian with sizeof_wchar = 2; wchar_signed = false }
+
+
let arm_littleendian =
{ ilp32ll64 with name = "arm" }
diff --git a/cparser/Machine.mli b/cparser/Machine.mli
index fb7321f9..277ac3fb 100644
--- a/cparser/Machine.mli
+++ b/cparser/Machine.mli
@@ -62,6 +62,7 @@ val x86_64 : t
val win32 : t
val win64 : t
val ppc_32_bigendian : t
+val ppc_32_diab_bigendian : t
val arm_littleendian : t
val gcc_extensions : t -> t
diff --git a/driver/Driver.ml b/driver/Driver.ml
index 1b58fe61..1dce08ac 100644
--- a/driver/Driver.ml
+++ b/driver/Driver.ml
@@ -661,7 +661,9 @@ let _ =
Printexc.record_backtrace true;
Machine.config :=
begin match Configuration.arch with
- | "powerpc" -> Machine.ppc_32_bigendian
+ | "powerpc" -> if Configuration.system = "linux"
+ then Machine.ppc_32_bigendian
+ else Machine.ppc_32_diab_bigendian
| "arm" -> Machine.arm_littleendian
| "ia32" -> if Configuration.abi = "macosx"
then Machine.x86_32_macosx
diff --git a/runtime/include/stddef.h b/runtime/include/stddef.h
index 290434f4..46643e31 100644
--- a/runtime/include/stddef.h
+++ b/runtime/include/stddef.h
@@ -71,7 +71,7 @@ typedef signed long ptrdiff_t;
#ifdef _TYPE_wchar_t
_TYPE_wchar_t;
#else
-typedef signed int wchar_t;
+typedef unsigned short wchar_t;
#endif
#endif
#undef __need_wchar_t