Module Name:    src
Committed By:   yamt
Date:           Thu May 22 16:44:54 UTC 2014

Modified Files:
        src/external/gpl3/gcc/dist/gcc/ginclude [yamt-pagecache]: float.h
            iso646.h stdarg.h stdbool.h stddef.h stdfix.h stdint-gcc.h
            stdint-wrap.h tgmath.h
Added Files:
        src/external/gpl3/gcc/dist/gcc/ginclude [yamt-pagecache]: stdalign.h
            stdnoreturn.h unwind-arm-common.h

Log Message:
sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.2.1 \
    src/external/gpl3/gcc/dist/gcc/ginclude/float.h \
    src/external/gpl3/gcc/dist/gcc/ginclude/iso646.h \
    src/external/gpl3/gcc/dist/gcc/ginclude/stdarg.h \
    src/external/gpl3/gcc/dist/gcc/ginclude/stdbool.h \
    src/external/gpl3/gcc/dist/gcc/ginclude/stdfix.h \
    src/external/gpl3/gcc/dist/gcc/ginclude/stdint-gcc.h \
    src/external/gpl3/gcc/dist/gcc/ginclude/stdint-wrap.h \
    src/external/gpl3/gcc/dist/gcc/ginclude/tgmath.h
cvs rdiff -u -r0 -r1.1.1.1.4.2 \
    src/external/gpl3/gcc/dist/gcc/ginclude/stdalign.h \
    src/external/gpl3/gcc/dist/gcc/ginclude/stdnoreturn.h
cvs rdiff -u -r1.2 -r1.2.2.1 src/external/gpl3/gcc/dist/gcc/ginclude/stddef.h
cvs rdiff -u -r0 -r1.2.4.2 \
    src/external/gpl3/gcc/dist/gcc/ginclude/unwind-arm-common.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/gcc/dist/gcc/ginclude/float.h
diff -u src/external/gpl3/gcc/dist/gcc/ginclude/float.h:1.1.1.1 src/external/gpl3/gcc/dist/gcc/ginclude/float.h:1.1.1.1.2.1
--- src/external/gpl3/gcc/dist/gcc/ginclude/float.h:1.1.1.1	Tue Jun 21 01:21:41 2011
+++ src/external/gpl3/gcc/dist/gcc/ginclude/float.h	Thu May 22 16:44:54 2014
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2007, 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2013 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -157,6 +157,45 @@ see the files COPYING3 and COPYING.RUNTI
 
 #endif /* C99 */
 
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+/* Versions of DECIMAL_DIG for each floating-point type.  */
+#undef FLT_DECIMAL_DIG
+#undef DBL_DECIMAL_DIG
+#undef LDBL_DECIMAL_DIG
+#define FLT_DECIMAL_DIG		__FLT_DECIMAL_DIG__
+#define DBL_DECIMAL_DIG		__DBL_DECIMAL_DIG__
+#define LDBL_DECIMAL_DIG	__DECIMAL_DIG__
+
+/* Whether types support subnormal numbers.  */
+#undef FLT_HAS_SUBNORM
+#undef DBL_HAS_SUBNORM
+#undef LDBL_HAS_SUBNORM
+#define FLT_HAS_SUBNORM		__FLT_HAS_DENORM__
+#define DBL_HAS_SUBNORM		__DBL_HAS_DENORM__
+#define LDBL_HAS_SUBNORM	__LDBL_HAS_DENORM__
+
+/* Minimum positive values, including subnormals.  */
+#undef FLT_TRUE_MIN
+#undef DBL_TRUE_MIN
+#undef LDBL_TRUE_MIN
+#if __FLT_HAS_DENORM__
+#define FLT_TRUE_MIN	__FLT_DENORM_MIN__
+#else
+#define FLT_TRUE_MIN	__FLT_MIN__
+#endif
+#if __DBL_HAS_DENORM__
+#define DBL_TRUE_MIN	__DBL_DENORM_MIN__
+#else
+#define DBL_TRUE_MIN	__DBL_MIN__
+#endif
+#if __LDBL_HAS_DENORM__
+#define LDBL_TRUE_MIN	__LDBL_DENORM_MIN__
+#else
+#define LDBL_TRUE_MIN	__LDBL_MIN__
+#endif
+
+#endif /* C11 */
+
 #ifdef __STDC_WANT_DEC_FP__
 /* Draft Technical Report 24732, extension for decimal floating-point
    arithmetic: Characteristic of decimal floating types <float.h>.  */
Index: src/external/gpl3/gcc/dist/gcc/ginclude/iso646.h
diff -u src/external/gpl3/gcc/dist/gcc/ginclude/iso646.h:1.1.1.1 src/external/gpl3/gcc/dist/gcc/ginclude/iso646.h:1.1.1.1.2.1
--- src/external/gpl3/gcc/dist/gcc/ginclude/iso646.h:1.1.1.1	Tue Jun 21 01:21:41 2011
+++ src/external/gpl3/gcc/dist/gcc/ginclude/iso646.h	Thu May 22 16:44:54 2014
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1999, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2013 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
Index: src/external/gpl3/gcc/dist/gcc/ginclude/stdarg.h
diff -u src/external/gpl3/gcc/dist/gcc/ginclude/stdarg.h:1.1.1.1 src/external/gpl3/gcc/dist/gcc/ginclude/stdarg.h:1.1.1.1.2.1
--- src/external/gpl3/gcc/dist/gcc/ginclude/stdarg.h:1.1.1.1	Tue Jun 21 01:21:41 2011
+++ src/external/gpl3/gcc/dist/gcc/ginclude/stdarg.h	Thu May 22 16:44:54 2014
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2013 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -59,10 +59,6 @@ typedef __builtin_va_list __gnuc_va_list
    but must not use that name.  It should use the name __gnuc_va_list,
    which is safe because it is reserved for the implementation.  */
 
-#ifdef _HIDDEN_VA_LIST  /* On OSF1, this means varargs.h is "half-loaded".  */
-#undef _VA_LIST
-#endif
-
 #ifdef _BSD_VA_LIST
 #undef _BSD_VA_LIST
 #endif
Index: src/external/gpl3/gcc/dist/gcc/ginclude/stdbool.h
diff -u src/external/gpl3/gcc/dist/gcc/ginclude/stdbool.h:1.1.1.1 src/external/gpl3/gcc/dist/gcc/ginclude/stdbool.h:1.1.1.1.2.1
--- src/external/gpl3/gcc/dist/gcc/ginclude/stdbool.h:1.1.1.1	Tue Jun 21 01:21:41 2011
+++ src/external/gpl3/gcc/dist/gcc/ginclude/stdbool.h	Thu May 22 16:44:54 2014
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2013 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
Index: src/external/gpl3/gcc/dist/gcc/ginclude/stdfix.h
diff -u src/external/gpl3/gcc/dist/gcc/ginclude/stdfix.h:1.1.1.1 src/external/gpl3/gcc/dist/gcc/ginclude/stdfix.h:1.1.1.1.2.1
--- src/external/gpl3/gcc/dist/gcc/ginclude/stdfix.h:1.1.1.1	Tue Jun 21 01:21:41 2011
+++ src/external/gpl3/gcc/dist/gcc/ginclude/stdfix.h	Thu May 22 16:44:54 2014
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
Index: src/external/gpl3/gcc/dist/gcc/ginclude/stdint-gcc.h
diff -u src/external/gpl3/gcc/dist/gcc/ginclude/stdint-gcc.h:1.1.1.1 src/external/gpl3/gcc/dist/gcc/ginclude/stdint-gcc.h:1.1.1.1.2.1
--- src/external/gpl3/gcc/dist/gcc/ginclude/stdint-gcc.h:1.1.1.1	Tue Jun 21 01:21:41 2011
+++ src/external/gpl3/gcc/dist/gcc/ginclude/stdint-gcc.h	Thu May 22 16:44:54 2014
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2013 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -91,7 +91,8 @@ typedef __UINTPTR_TYPE__ uintptr_t;
 typedef __INTMAX_TYPE__ intmax_t;
 typedef __UINTMAX_TYPE__ uintmax_t;
 
-#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
+#if (!defined __cplusplus || __cplusplus >= 201103L \
+     || defined __STDC_LIMIT_MACROS)
 
 /* 7.18.2 Limits of specified-width integer types */
 
@@ -229,9 +230,11 @@ typedef __UINTMAX_TYPE__ uintmax_t;
 #undef WINT_MIN
 #define WINT_MIN __WINT_MIN__
 
-#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
+#endif /* (!defined __cplusplus || __cplusplus >= 201103L
+	   || defined __STDC_LIMIT_MACROS)  */
 
-#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
+#if (!defined __cplusplus || __cplusplus >= 201103L \
+     || defined __STDC_CONSTANT_MACROS)
 
 #undef INT8_C
 #define INT8_C(c) __INT8_C(c)
@@ -254,6 +257,7 @@ typedef __UINTMAX_TYPE__ uintmax_t;
 #undef UINTMAX_C
 #define UINTMAX_C(c) __UINTMAX_C(c)
 
-#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
+#endif /* (!defined __cplusplus || __cplusplus >= 201103L
+	   || defined __STDC_CONSTANT_MACROS) */
 
 #endif /* _GCC_STDINT_H */
Index: src/external/gpl3/gcc/dist/gcc/ginclude/stdint-wrap.h
diff -u src/external/gpl3/gcc/dist/gcc/ginclude/stdint-wrap.h:1.1.1.1 src/external/gpl3/gcc/dist/gcc/ginclude/stdint-wrap.h:1.1.1.1.2.1
--- src/external/gpl3/gcc/dist/gcc/ginclude/stdint-wrap.h:1.1.1.1	Tue Jun 21 01:21:41 2011
+++ src/external/gpl3/gcc/dist/gcc/ginclude/stdint-wrap.h	Thu May 22 16:44:54 2014
@@ -1,5 +1,11 @@
 #ifndef _GCC_WRAP_STDINT_H
 #if __STDC_HOSTED__
+# if defined __cplusplus && __cplusplus >= 201103L
+#  undef __STDC_LIMIT_MACROS
+#  define __STDC_LIMIT_MACROS
+#  undef __STDC_CONSTANT_MACROS
+#  define __STDC_CONSTANT_MACROS
+# endif
 # include_next <stdint.h>
 #else
 # include "stdint-gcc.h"
Index: src/external/gpl3/gcc/dist/gcc/ginclude/tgmath.h
diff -u src/external/gpl3/gcc/dist/gcc/ginclude/tgmath.h:1.1.1.1 src/external/gpl3/gcc/dist/gcc/ginclude/tgmath.h:1.1.1.1.2.1
--- src/external/gpl3/gcc/dist/gcc/ginclude/tgmath.h:1.1.1.1	Tue Jun 21 01:21:41 2011
+++ src/external/gpl3/gcc/dist/gcc/ginclude/tgmath.h	Thu May 22 16:44:54 2014
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2004-2013 Free Software Foundation, Inc.
    Contributed by Apple, Inc.
 
 This file is part of GCC.

Index: src/external/gpl3/gcc/dist/gcc/ginclude/stddef.h
diff -u src/external/gpl3/gcc/dist/gcc/ginclude/stddef.h:1.2 src/external/gpl3/gcc/dist/gcc/ginclude/stddef.h:1.2.2.1
--- src/external/gpl3/gcc/dist/gcc/ginclude/stddef.h:1.2	Tue Jun 21 02:41:38 2011
+++ src/external/gpl3/gcc/dist/gcc/ginclude/stddef.h	Thu May 22 16:44:54 2014
@@ -1,5 +1,4 @@
-/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
-   Free Software Foundation, Inc.
+/* Copyright (C) 1989-2013 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -41,8 +40,6 @@ see the files COPYING3 and COPYING.RUNTI
 #define _STDDEF_H_
 /* [email protected] says the NeXT needs this.  */
 #define _ANSI_STDDEF_H
-/* Irix 5.1 needs this.  */
-#define __STDDEF_H__
 #endif
 
 #ifndef __sys_stdtypes_h
@@ -63,8 +60,9 @@ see the files COPYING3 and COPYING.RUNTI
 
 /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
    defined if the corresponding type is *not* defined.
-   FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_ */
-#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_)
+   FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+   NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_)  || defined(_I386_ANSI_H_)
 #if !defined(_SIZE_T_) && !defined(_BSD_SIZE_T_)
 #define _SIZE_T
 #endif
@@ -91,7 +89,7 @@ see the files COPYING3 and COPYING.RUNTI
 #undef _WCHAR_T_
 #undef _BSD_WCHAR_T_
 #endif
-#endif /* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) */
+#endif /* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
 
 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
    Just ignore it.  */
@@ -201,8 +199,11 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
 #define ___int_size_t_h
 #define _GCC_SIZE_T
 #define _SIZET_
-#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
-/* __size_t is a typedef on FreeBSD 5!, must not trash it. */
+#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
+  || defined(__FreeBSD_kernel__)
+/* __size_t is a typedef on FreeBSD 5, must not trash it. */
+#elif defined (__VMS__)
+/* __size_t is also a typedef on VMS.  */
 #else
 #define __size_t
 #endif
@@ -359,7 +360,8 @@ typedef __WINT_TYPE__ wint_t;
 /*  In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
     are already defined.  */
 /*  BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here.  */
-#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_)
+/*  NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here.  */
+#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_)
 /*  The references to _GCC_PTRDIFF_T_, _GCC_SIZE_T_, and _GCC_WCHAR_T_
     are probably typos and should be removed before 2.8 is released.  */
 #ifdef _GCC_PTRDIFF_T_
@@ -387,7 +389,7 @@ typedef __WINT_TYPE__ wint_t;
 #undef _WCHAR_T_
 #undef _BSD_WCHAR_T_
 #endif
-#endif /* _ANSI_H_ || _MACHINE_ANSI_H_ */
+#endif /* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
 
 #endif /* __sys_stdtypes_h */
 
@@ -412,6 +414,27 @@ typedef __WINT_TYPE__ wint_t;
 /* Offset of member MEMBER in a struct of type TYPE. */
 #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
 
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) \
+  || (defined(__cplusplus) && __cplusplus >= 201103L)
+#ifndef _GCC_MAX_ALIGN_T
+#define _GCC_MAX_ALIGN_T
+/* Type whose alignment is supported in every context and is at least
+   as great as that of any standard type not using alignment
+   specifiers.  */
+typedef struct {
+  long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
+  long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
+} max_align_t;
+#endif
+#endif /* C11 or C++11.  */
+
+#if defined(__cplusplus) && __cplusplus >= 201103L
+#ifndef _GXX_NULLPTR_T
+#define _GXX_NULLPTR_T
+  typedef decltype(nullptr) nullptr_t;
+#endif
+#endif /* C++11.  */
+
 #endif /* _STDDEF_H was defined this time */
 
 #endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__

Added files:

Index: src/external/gpl3/gcc/dist/gcc/ginclude/stdalign.h
diff -u /dev/null src/external/gpl3/gcc/dist/gcc/ginclude/stdalign.h:1.1.1.1.4.2
--- /dev/null	Thu May 22 16:44:54 2014
+++ src/external/gpl3/gcc/dist/gcc/ginclude/stdalign.h	Thu May 22 16:44:54 2014
@@ -0,0 +1,39 @@
+/* Copyright (C) 2011-2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/* ISO C1X: 7.15 Alignment <stdalign.h>.  */
+
+#ifndef _STDALIGN_H
+#define _STDALIGN_H
+
+#ifndef __cplusplus
+
+#define alignas _Alignas
+#define alignof _Alignof
+
+#define __alignas_is_defined 1
+#define __alignof_is_defined 1
+
+#endif
+
+#endif	/* stdalign.h */
Index: src/external/gpl3/gcc/dist/gcc/ginclude/stdnoreturn.h
diff -u /dev/null src/external/gpl3/gcc/dist/gcc/ginclude/stdnoreturn.h:1.1.1.1.4.2
--- /dev/null	Thu May 22 16:44:54 2014
+++ src/external/gpl3/gcc/dist/gcc/ginclude/stdnoreturn.h	Thu May 22 16:44:54 2014
@@ -0,0 +1,35 @@
+/* Copyright (C) 2011-2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+/* ISO C1X: 7.23 _Noreturn <stdnoreturn.h>.  */
+
+#ifndef _STDNORETURN_H
+#define _STDNORETURN_H
+
+#ifndef __cplusplus
+
+#define noreturn _Noreturn
+
+#endif
+
+#endif	/* stdnoreturn.h */

Index: src/external/gpl3/gcc/dist/gcc/ginclude/unwind-arm-common.h
diff -u /dev/null src/external/gpl3/gcc/dist/gcc/ginclude/unwind-arm-common.h:1.2.4.2
--- /dev/null	Thu May 22 16:44:54 2014
+++ src/external/gpl3/gcc/dist/gcc/ginclude/unwind-arm-common.h	Thu May 22 16:44:54 2014
@@ -0,0 +1,250 @@
+/* Header file for the ARM EABI and C6X unwinders
+   Copyright (C) 2003-2013 Free Software Foundation, Inc.
+   Contributed by Paul Brook
+
+   This file is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 3, or (at your option) any
+   later version.
+
+   This file is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Language-independent unwinder header public defines.  This contains both
+   ABI defined objects, and GNU support routines.  */
+
+#ifndef UNWIND_ARM_COMMON_H
+#define UNWIND_ARM_COMMON_H
+
+#define __ARM_EABI_UNWINDER__ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
+  typedef signed _Unwind_Sword __attribute__((__mode__(__word__)));
+  typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
+  typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));
+  typedef _Unwind_Word _uw;
+  typedef unsigned _uw64 __attribute__((mode(__DI__)));
+  typedef unsigned _uw16 __attribute__((mode(__HI__)));
+  typedef unsigned _uw8 __attribute__((mode(__QI__)));
+
+  typedef enum
+    {
+      _URC_OK = 0,       /* operation completed successfully */
+      _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
+      _URC_END_OF_STACK = 5,
+      _URC_HANDLER_FOUND = 6,
+      _URC_INSTALL_CONTEXT = 7,
+      _URC_CONTINUE_UNWIND = 8,
+      _URC_FAILURE = 9   /* unspecified failure of some kind */
+    }
+  _Unwind_Reason_Code;
+
+  typedef enum
+    {
+      _US_VIRTUAL_UNWIND_FRAME = 0,
+      _US_UNWIND_FRAME_STARTING = 1,
+      _US_UNWIND_FRAME_RESUME = 2,
+      _US_ACTION_MASK = 3,
+      _US_FORCE_UNWIND = 8,
+      _US_END_OF_STACK = 16
+    }
+  _Unwind_State;
+
+  /* Provided only for compatibility with existing code.  */
+  typedef int _Unwind_Action;
+#define _UA_SEARCH_PHASE	1
+#define _UA_CLEANUP_PHASE	2
+#define _UA_HANDLER_FRAME	4
+#define _UA_FORCE_UNWIND	8
+#define _UA_END_OF_STACK	16
+#define _URC_NO_REASON 	_URC_OK
+
+  typedef struct _Unwind_Control_Block _Unwind_Control_Block;
+  typedef struct _Unwind_Context _Unwind_Context;
+  typedef _uw _Unwind_EHT_Header;
+
+
+  /* UCB: */
+
+  struct _Unwind_Control_Block
+    {
+      char exception_class[8];
+      void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *);
+      /* Unwinder cache, private fields for the unwinder's use */
+      struct
+	{
+	  _uw reserved1;  /* Forced unwind stop fn, 0 if not forced */
+	  _uw reserved2;  /* Personality routine address */
+	  _uw reserved3;  /* Saved callsite address */
+	  _uw reserved4;  /* Forced unwind stop arg */
+	  _uw reserved5;
+	}
+      unwinder_cache;
+      /* Propagation barrier cache (valid after phase 1): */
+      struct
+	{
+	  _uw sp;
+	  _uw bitpattern[5];
+	}
+      barrier_cache;
+      /* Cleanup cache (preserved over cleanup): */
+      struct
+	{
+	  _uw bitpattern[4];
+	}
+      cleanup_cache;
+      /* Pr cache (for pr's benefit): */
+      struct
+	{
+	  _uw fnstart;			/* function start address */
+	  _Unwind_EHT_Header *ehtp;	/* pointer to EHT entry header word */
+	  _uw additional;		/* additional data */
+	  _uw reserved1;
+	}
+      pr_cache;
+      long long int :0;	/* Force alignment to 8-byte boundary */
+    };
+
+  /* Virtual Register Set*/
+
+  typedef enum
+    {
+      _UVRSC_CORE = 0,      /* integer register */
+      _UVRSC_VFP = 1,       /* vfp */
+      _UVRSC_FPA = 2,       /* fpa */
+      _UVRSC_WMMXD = 3,     /* Intel WMMX data register */
+      _UVRSC_WMMXC = 4      /* Intel WMMX control register */
+    }
+  _Unwind_VRS_RegClass;
+
+  typedef enum
+    {
+      _UVRSD_UINT32 = 0,
+      _UVRSD_VFPX = 1,
+      _UVRSD_FPAX = 2,
+      _UVRSD_UINT64 = 3,
+      _UVRSD_FLOAT = 4,
+      _UVRSD_DOUBLE = 5
+    }
+  _Unwind_VRS_DataRepresentation;
+
+  typedef enum
+    {
+      _UVRSR_OK = 0,
+      _UVRSR_NOT_IMPLEMENTED = 1,
+      _UVRSR_FAILED = 2
+    }
+  _Unwind_VRS_Result;
+
+  /* Frame unwinding state.  */
+  typedef struct
+    {
+      /* The current word (bytes packed msb first).  */
+      _uw data;
+      /* Pointer to the next word of data.  */
+      _uw *next;
+      /* The number of bytes left in this word.  */
+      _uw8 bytes_left;
+      /* The number of words pointed to by ptr.  */
+      _uw8 words_left;
+    }
+  __gnu_unwind_state;
+
+  typedef _Unwind_Reason_Code (*personality_routine) (_Unwind_State,
+      _Unwind_Control_Block *, _Unwind_Context *);
+
+  _Unwind_VRS_Result _Unwind_VRS_Set(_Unwind_Context *, _Unwind_VRS_RegClass,
+                                     _uw, _Unwind_VRS_DataRepresentation,
+                                     void *);
+
+  _Unwind_VRS_Result _Unwind_VRS_Get(_Unwind_Context *, _Unwind_VRS_RegClass,
+                                     _uw, _Unwind_VRS_DataRepresentation,
+                                     void *);
+
+  _Unwind_VRS_Result _Unwind_VRS_Pop(_Unwind_Context *, _Unwind_VRS_RegClass,
+                                     _uw, _Unwind_VRS_DataRepresentation);
+
+
+  /* Support functions for the PR.  */
+#define _Unwind_Exception _Unwind_Control_Block
+  typedef char _Unwind_Exception_Class[8];
+
+  _Unwind_Ptr _Unwind_GetLanguageSpecificData (_Unwind_Context *);
+  _Unwind_Ptr _Unwind_GetRegionStart (_Unwind_Context *);
+
+  _Unwind_Ptr _Unwind_GetDataRelBase (_Unwind_Context *);
+  /* This should never be used.  */
+  _Unwind_Ptr _Unwind_GetTextRelBase (_Unwind_Context *);
+
+  /* Interface functions: */
+  _Unwind_Reason_Code _Unwind_RaiseException(_Unwind_Control_Block *ucbp);
+  void __attribute__((noreturn)) _Unwind_Resume(_Unwind_Control_Block *ucbp);
+  _Unwind_Reason_Code _Unwind_Resume_or_Rethrow (_Unwind_Control_Block *ucbp);
+
+  typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
+       (int, _Unwind_Action, _Unwind_Exception_Class,
+	_Unwind_Control_Block *, struct _Unwind_Context *, void *);
+  _Unwind_Reason_Code _Unwind_ForcedUnwind (_Unwind_Control_Block *,
+					    _Unwind_Stop_Fn, void *);
+  /* @@@ Use unwind data to perform a stack backtrace.  The trace callback
+     is called for every stack frame in the call chain, but no cleanup
+     actions are performed.  */
+  typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn) (_Unwind_Context *, void *);
+  _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn,
+					void*);
+
+  _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);
+  void _Unwind_Complete(_Unwind_Control_Block *ucbp);
+  void _Unwind_DeleteException (_Unwind_Exception *);
+
+  _Unwind_Reason_Code __gnu_unwind_frame (_Unwind_Control_Block *,
+					  _Unwind_Context *);
+  _Unwind_Reason_Code __gnu_unwind_execute (_Unwind_Context *,
+					    __gnu_unwind_state *);
+
+  static inline _Unwind_Word
+  _Unwind_GetGR (_Unwind_Context *context, int regno)
+    {
+      _uw val;
+      _Unwind_VRS_Get (context, _UVRSC_CORE, regno, _UVRSD_UINT32, &val);
+      return val;
+    }
+
+#define _Unwind_GetIPInfo(context, ip_before_insn) \
+  (*ip_before_insn = 0, _Unwind_GetIP (context))
+
+  static inline void
+  _Unwind_SetGR (_Unwind_Context *context, int regno, _Unwind_Word val)
+    {
+      _Unwind_VRS_Set (context, _UVRSC_CORE, regno, _UVRSD_UINT32, &val);
+    }
+
+  _Unwind_Ptr _Unwind_GetRegionStart (_Unwind_Context *);
+  _Unwind_Ptr _Unwind_GetLanguageSpecificData (_Unwind_Context *);
+
+/* leb128 type numbers have a potentially unlimited size.
+   The target of the following definitions of _sleb128_t and _uleb128_t
+   is to have efficient data types large enough to hold the leb128 type
+   numbers used in the unwind code.  */
+typedef long _sleb128_t;
+typedef unsigned long _uleb128_t;
+
+#ifdef __cplusplus
+}   /* extern "C" */
+#endif
+
+#endif /* defined UNWIND_ARM_COMMON_H */

Reply via email to