gcc.h revision b42eee475ac7b569ed5700d72b7d4d2e8db42a9c
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/** @file
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * innotek Portable Runtime / No-CRT - GCC specifics.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync *
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * A quick hack for freebsd where there are no separate location
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * for compiler specific headers like on linux, mingw, os2, ++.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * This file will be cleaned up later...
df2a53dee17325742e7464e7f53d3f99dc500f3avboxsync */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/*
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * Copyright (C) 2006-2007 innotek GmbH
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync *
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * available from http://www.virtualbox.org. This file is free software;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * you can redistribute it and/or modify it under the terms of the GNU
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * General Public License as published by the Free Software Foundation,
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync *
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * If you received this file as part of a commercial VirtualBox
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * distribution, then only the terms of your commercial VirtualBox
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync * license agreement apply instead of the previous paragraph.
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync *
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#ifndef ___iprt_nocrt_compiler_gcc_h
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define ___iprt_nocrt_compiler_gcc_h
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync/* stddef.h */
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#ifdef __PTRDIFF_TYPE__
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsynctypedef __PTRDIFF_TYPE__ ptrdiff_t;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#elif ARCH_BITS == 32
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsynctypedef int32_t ptrdiff_t;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#elif ARCH_BITS == 64
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsynctypedef int64_t ptrdiff_t;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#else
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync# error "ARCH_BITS is undefined or incorrect."
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#endif
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define _PTRDIFF_T_DECLARED
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#ifdef __SIZE_TYPE__
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsynctypedef __SIZE_TYPE__ size_t;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#elif ARCH_BITS == 32
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsynctypedef uint32_t size_t;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#elif ARCH_BITS == 64
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef uint64_t size_t;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#else
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync# error "ARCH_BITS is undefined or incorrect."
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#define _SIZE_T_DECLARED
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#ifndef __cplusplus
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync# ifdef __WCHAR_TYPE__
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsynctypedef __WCHAR_TYPE__ wchar_t;
6febf3149010855617e4a37e2c49f93d68930d44vboxsync# elif defined(RT_OS_OS2) || defined(RT_OS_WINDOWS)
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef uint16_t wchar_t;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync# else
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef int wchar_t;
80e46f984efd827517661c0e081a36014ca41af8vboxsync# endif
80e46f984efd827517661c0e081a36014ca41af8vboxsync# define _WCHAR_T_DECLARED
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#ifdef __WINT_TYPE__
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsynctypedef __WINT_TYPE__ wint_t;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#else
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef unsigned int wint_t;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#define _WINT_T_DECLARED
48dafba24ef28f07a241e5857a43b327822574a8vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#ifndef NULL
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync# ifdef __cplusplus
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync# define NULL 0
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync# else
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync# define NULL ((void *)0)
710a6316a22868b04400caf79719f96c18163cd3vboxsync# endif
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#endif
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync
41b3442e21c3a79f3bc61ce67e3445757a83f281vboxsync#ifndef offsetof
06782e19f5e2144408396dcec922c423c5ef9da8vboxsync# if defined(__cplusplus) && defined(__offsetof__)
80e46f984efd827517661c0e081a36014ca41af8vboxsync# define offsetof(type, memb)
80e46f984efd827517661c0e081a36014ca41af8vboxsync (__offsetof__ (reinterpret_cast<size_t>(&reinterpret_cast<const volatile char &>(static_cast<type *>(0)->memb))) )
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync# else
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync# define offsetof(type, memb) ((size_t)&((type *)0)->memb)
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync# endif
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsync
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync/* sys/types.h */
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync#ifdef __SSIZE_TYPE__
6febf3149010855617e4a37e2c49f93d68930d44vboxsynctypedef __SSIZE_TYPE__ ssize_t;
63b785c3291332a86a9bc473e68f08121368898bvboxsync#elif ARCH_BITS == 32
80e46f984efd827517661c0e081a36014ca41af8vboxsynctypedef int32_t ssize_t;
80e46f984efd827517661c0e081a36014ca41af8vboxsync#elif ARCH_BITS == 64
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef int64_t ssize_t;
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#else
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync# define ARCH_BITS 123123
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync# error "ARCH_BITS is undefined or incorrect."
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#endif
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync#define _SSIZE_T_DECLARED
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
48dafba24ef28f07a241e5857a43b327822574a8vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync/* stdarg.h */
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsynctypedef __builtin_va_list va_list;
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define va_start(va, arg) __builtin_va_start(va, arg)
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define va_end(va) __builtin_va_end(va)
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define va_arg(va, type) __builtin_va_arg(va, type)
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync#define va_copy(dst, src) __builtin_va_copy(dst, src)
ba05e6aeed3cd14961a36e0162c29a267b66d7f7vboxsync
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync
1dc37bff2fb26897f5892d8330fe2bc0c9859aecvboxsync#endif
fb1975a6972d89de9e515bed0248db93f04ec9d8vboxsync