aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure2
-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/stdarg.h4
-rw-r--r--runtime/include/stddef.h4
7 files changed, 17 insertions, 5 deletions
diff --git a/configure b/configure
index 84fed376..b906e38f 100755
--- a/configure
+++ b/configure
@@ -113,7 +113,7 @@ case "$target" in
struct_return="int1-8"
system="diab"
cc="${toolprefix}dcc"
- cprepro="${toolprefix}dcc -E"
+ cprepro="${toolprefix}dcc -E -D__GNUC__"
casm="${toolprefix}das"
asm_supports_cfi=false
clinker="${toolprefix}dcc"
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/stdarg.h b/runtime/include/stdarg.h
index b2e7eadd..272b6320 100644
--- a/runtime/include/stdarg.h
+++ b/runtime/include/stdarg.h
@@ -50,6 +50,10 @@ typedef __builtin_va_list __gnuc_va_list;
typedef __builtin_va_list va_list;
#endif
+#ifndef __VA_LIST
+#define __VA_LIST
+#endif
+
#define va_start(v,l) __builtin_va_start(v,l)
#define va_end(v) __builtin_va_end(v)
#define va_arg(v,l) __builtin_va_arg(v,l)
diff --git a/runtime/include/stddef.h b/runtime/include/stddef.h
index 290434f4..31edf4ef 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
@@ -98,7 +98,7 @@ typedef signed int wchar_t;
#endif
#if defined(_STDDEF_H) && !defined(offsetof)
-#define offsetof(ty,member) ((size_t) &(((ty)*) NULL)->member)
+#define offsetof(ty,member) ((size_t) &((ty*) NULL)->member)
#endif
#endif