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 */