diff options
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | cparser/Cutil.ml | 3 | ||||
-rw-r--r-- | cparser/Machine.ml | 4 | ||||
-rw-r--r-- | cparser/Machine.mli | 1 | ||||
-rw-r--r-- | driver/Driver.ml | 4 | ||||
-rw-r--r-- | runtime/include/stdarg.h | 4 | ||||
-rw-r--r-- | runtime/include/stddef.h | 4 |
7 files changed, 17 insertions, 5 deletions
@@ -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 |