From 803ea5ff0514ba250b23d134590b5c5d53a994f8 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 11 May 2011 20:42:18 +0200 Subject: lll: avoid shadow warnings use __ret uniformly to avoid shadow warnings as seen on x86_64. Signed-off-by: Bernhard Reutner-Fischer --- .../sysdeps/unix/sysv/linux/i386/lowlevellock.h | 32 ++++---- .../nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h | 96 +++++++++++----------- .../sysdeps/unix/sysv/linux/x86_64/lowlevellock.h | 32 ++++---- 3 files changed, 80 insertions(+), 80 deletions(-) (limited to 'libpthread/nptl/sysdeps/unix/sysv/linux') diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h index ab1a9395e..db951a10e 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h @@ -336,7 +336,7 @@ LLL_STUB_UNWIND_INFO_END }) #define lll_robust_lock(futex, id, private) \ - ({ int __result, ignore1, ignore2; \ + ({ int __ret, ignore1, ignore2; \ __asm__ __volatile__ (LOCK_INSTR "cmpxchgl %1, %2\n\t" \ "jnz _L_robust_lock_%=\n\t" \ ".subsection 1\n\t" \ @@ -350,11 +350,11 @@ LLL_STUB_UNWIND_INFO_END ".previous\n" \ LLL_STUB_UNWIND_INFO_4 \ "18:" \ - : "=a" (__result), "=c" (ignore1), "=m" (futex), \ + : "=a" (__ret), "=c" (ignore1), "=m" (futex), \ "=&d" (ignore2) \ : "0" (0), "1" (id), "m" (futex), "g" ((int) (private))\ : "memory"); \ - __result; }) + __ret; }) /* Special version of lll_lock which causes the unlock function to @@ -383,7 +383,7 @@ LLL_STUB_UNWIND_INFO_END #define lll_robust_cond_lock(futex, id, private) \ - ({ int __result, ignore1, ignore2; \ + ({ int __ret, ignore1, ignore2; \ __asm__ __volatile__ (LOCK_INSTR "cmpxchgl %1, %2\n\t" \ "jnz _L_robust_cond_lock_%=\n\t" \ ".subsection 1\n\t" \ @@ -397,16 +397,16 @@ LLL_STUB_UNWIND_INFO_END ".previous\n" \ LLL_STUB_UNWIND_INFO_4 \ "18:" \ - : "=a" (__result), "=c" (ignore1), "=m" (futex), \ + : "=a" (__ret), "=c" (ignore1), "=m" (futex), \ "=&d" (ignore2) \ : "0" (0), "1" (id | FUTEX_WAITERS), "m" (futex), \ "g" ((int) (private)) \ : "memory"); \ - __result; }) + __ret; }) #define lll_timedlock(futex, timeout, private) \ - ({ int __result, ignore1, ignore2, ignore3; \ + ({ int __ret, ignore1, ignore2, ignore3; \ __asm__ __volatile__ (LOCK_INSTR "cmpxchgl %1, %3\n\t" \ "jnz _L_timedlock_%=\n\t" \ ".subsection 1\n\t" \ @@ -420,16 +420,16 @@ LLL_STUB_UNWIND_INFO_END ".previous\n" \ LLL_STUB_UNWIND_INFO_4 \ "18:" \ - : "=a" (__result), "=c" (ignore1), "=&d" (ignore2), \ + : "=a" (__ret), "=c" (ignore1), "=&d" (ignore2), \ "=m" (futex), "=S" (ignore3) \ : "0" (0), "1" (1), "m" (futex), "m" (timeout), \ "4" ((int) (private)) \ : "memory"); \ - __result; }) + __ret; }) #define lll_robust_timedlock(futex, timeout, id, private) \ - ({ int __result, ignore1, ignore2, ignore3; \ + ({ int __ret, ignore1, ignore2, ignore3; \ __asm__ __volatile__ (LOCK_INSTR "cmpxchgl %1, %3\n\t" \ "jnz _L_robust_timedlock_%=\n\t" \ ".subsection 1\n\t" \ @@ -443,12 +443,12 @@ LLL_STUB_UNWIND_INFO_END ".previous\n" \ LLL_STUB_UNWIND_INFO_4 \ "18:" \ - : "=a" (__result), "=c" (ignore1), "=&d" (ignore2), \ + : "=a" (__ret), "=c" (ignore1), "=&d" (ignore2), \ "=m" (futex), "=S" (ignore3) \ : "0" (0), "1" (id), "m" (futex), "m" (timeout), \ "4" ((int) (private)) \ : "memory"); \ - __result; }) + __ret; }) #if defined NOT_IN_libc || defined UP # define __lll_unlock_asm LOCK_INSTR "subl $1, %0\n\t" @@ -570,15 +570,15 @@ extern int __lll_timedwait_tid (int *tid, const struct timespec *abstime) __attribute__ ((regparm (2))) attribute_hidden; #define lll_timedwait_tid(tid, abstime) \ ({ \ - int __result = 0; \ + int __ret = 0; \ if (tid != 0) \ { \ if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000) \ - __result = EINVAL; \ + __ret = EINVAL; \ else \ - __result = __lll_timedwait_tid (&tid, abstime); \ + __ret = __lll_timedwait_tid (&tid, abstime); \ } \ - __result; }) + __ret; }) #endif /* !__ASSEMBLER__ */ diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h index 0ea67e0ef..d10cd6116 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h @@ -98,7 +98,7 @@ extern int __lll_unlock_wake_private (int *__futex) attribute_hidden; extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; #define lll_trylock(futex) \ - ({ unsigned char __result; \ + ({ unsigned char __ret; \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -112,15 +112,15 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; 1: mov r1,r15\n\ mov #-1,%0\n\ negc %0,%0"\ - : "=r" (__result) \ + : "=r" (__ret) \ : "r" (&(futex)), \ "r" (LLL_LOCK_INITIALIZER_LOCKED), \ "r" (LLL_LOCK_INITIALIZER) \ : "r0", "r1", "r2", "t", "memory"); \ - __result; }) + __ret; }) #define lll_robust_trylock(futex, id) \ - ({ unsigned char __result; \ + ({ unsigned char __ret; \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -134,15 +134,15 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; 1: mov r1,r15\n\ mov #-1,%0\n\ negc %0,%0"\ - : "=r" (__result) \ + : "=r" (__ret) \ : "r" (&(futex)), \ "r" (id), \ "r" (LLL_LOCK_INITIALIZER) \ : "r0", "r1", "r2", "t", "memory"); \ - __result; }) + __ret; }) #define lll_cond_trylock(futex) \ - ({ unsigned char __result; \ + ({ unsigned char __ret; \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -156,15 +156,15 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; 1: mov r1,r15\n\ mov #-1,%0\n\ negc %0,%0"\ - : "=r" (__result) \ + : "=r" (__ret) \ : "r" (&(futex)), \ "r" (LLL_LOCK_INITIALIZER_WAITERS), \ "r" (LLL_LOCK_INITIALIZER) \ : "r0", "r1", "r2", "t", "memory"); \ - __result; }) + __ret; }) #define lll_lock(futex, private) \ - (void) ({ int __result, *__futex = &(futex); \ + (void) ({ int __ret, *__futex = &(futex); \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -176,20 +176,20 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; bf 1f\n\ mov.l %1,@%2\n\ 1: mov r1,r15"\ - : "=&r" (__result) : "r" (1), "r" (__futex) \ + : "=&r" (__ret) : "r" (1), "r" (__futex) \ : "r0", "r1", "t", "memory"); \ - if (__result) \ + if (__ret) \ { \ if (__builtin_constant_p (private) \ && (private) == LLL_PRIVATE) \ - __lll_lock_wait_private (__result, __futex); \ + __lll_lock_wait_private (__ret, __futex); \ else \ - __lll_lock_wait (__result, __futex, (private)); \ + __lll_lock_wait (__ret, __futex, (private)); \ } \ }) #define lll_robust_lock(futex, id, private) \ - ({ int __result, *__futex = &(futex); \ + ({ int __ret, *__futex = &(futex); \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -201,16 +201,16 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; bf 1f\n\ mov.l %1,@%2\n\ 1: mov r1,r15"\ - : "=&r" (__result) : "r" (id), "r" (__futex) \ + : "=&r" (__ret) : "r" (id), "r" (__futex) \ : "r0", "r1", "t", "memory"); \ - if (__result) \ - __result = __lll_robust_lock_wait (__result, __futex, private); \ - __result; }) + if (__ret) \ + __ret = __lll_robust_lock_wait (__ret, __futex, private); \ + __ret; }) /* Special version of lll_mutex_lock which causes the unlock function to always wakeup waiters. */ #define lll_cond_lock(futex, private) \ - (void) ({ int __result, *__futex = &(futex); \ + (void) ({ int __ret, *__futex = &(futex); \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -222,13 +222,13 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; bf 1f\n\ mov.l %1,@%2\n\ 1: mov r1,r15"\ - : "=&r" (__result) : "r" (2), "r" (__futex) \ + : "=&r" (__ret) : "r" (2), "r" (__futex) \ : "r0", "r1", "t", "memory"); \ - if (__result) \ - __lll_lock_wait (__result, __futex, private); }) + if (__ret) \ + __lll_lock_wait (__ret, __futex, private); }) #define lll_robust_cond_lock(futex, id, private) \ - ({ int __result, *__futex = &(futex); \ + ({ int __ret, *__futex = &(futex); \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -240,14 +240,14 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; bf 1f\n\ mov.l %1,@%2\n\ 1: mov r1,r15"\ - : "=&r" (__result) : "r" (id | FUTEX_WAITERS), "r" (__futex) \ + : "=&r" (__ret) : "r" (id | FUTEX_WAITERS), "r" (__futex) \ : "r0", "r1", "t", "memory"); \ - if (__result) \ - __result = __lll_robust_lock_wait (__result, __futex, private); \ - __result; }) + if (__ret) \ + __ret = __lll_robust_lock_wait (__ret, __futex, private); \ + __ret; }) #define lll_timedlock(futex, timeout, private) \ - ({ int __result, *__futex = &(futex); \ + ({ int __ret, *__futex = &(futex); \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -259,14 +259,14 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; bf 1f\n\ mov.l %1,@%2\n\ 1: mov r1,r15"\ - : "=&r" (__result) : "r" (1), "r" (__futex) \ + : "=&r" (__ret) : "r" (1), "r" (__futex) \ : "r0", "r1", "t", "memory"); \ - if (__result) \ - __result = __lll_timedlock_wait (__result, __futex, timeout, private); \ - __result; }) + if (__ret) \ + __ret = __lll_timedlock_wait (__ret, __futex, timeout, private); \ + __ret; }) #define lll_robust_timedlock(futex, timeout, id, private) \ - ({ int __result, *__futex = &(futex); \ + ({ int __ret, *__futex = &(futex); \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -278,15 +278,15 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; bf 1f\n\ mov.l %1,@%2\n\ 1: mov r1,r15"\ - : "=&r" (__result) : "r" (id), "r" (__futex) \ + : "=&r" (__ret) : "r" (id), "r" (__futex) \ : "r0", "r1", "t", "memory"); \ - if (__result) \ - __result = __lll_robust_timedlock_wait (__result, __futex, \ + if (__ret) \ + __ret = __lll_robust_timedlock_wait (__ret, __futex, \ timeout, private); \ - __result; }) + __ret; }) #define lll_unlock(futex, private) \ - (void) ({ int __result, *__futex = &(futex); \ + (void) ({ int __ret, *__futex = &(futex); \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -296,9 +296,9 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; add #-1,%0\n\ mov.l %0,@%1\n\ 1: mov r1,r15"\ - : "=&r" (__result) : "r" (__futex) \ + : "=&r" (__ret) : "r" (__futex) \ : "r0", "r1", "memory"); \ - if (__result) \ + if (__ret) \ { \ if (__builtin_constant_p (private) \ && (private) == LLL_PRIVATE) \ @@ -309,7 +309,7 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; }) #define lll_robust_unlock(futex, private) \ - (void) ({ int __result, *__futex = &(futex); \ + (void) ({ int __ret, *__futex = &(futex); \ __asm__ __volatile__ ("\ .align 2\n\ mova 1f,r0\n\ @@ -319,9 +319,9 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden; and %2,%0\n\ mov.l %0,@%1\n\ 1: mov r1,r15"\ - : "=&r" (__result) : "r" (__futex), "r" (FUTEX_WAITERS) \ + : "=&r" (__ret) : "r" (__futex), "r" (FUTEX_WAITERS) \ : "r0", "r1", "memory"); \ - if (__result) \ + if (__ret) \ __lll_unlock_wake (__futex, private); }) #define lll_robust_dead(futex, private) \ @@ -405,15 +405,15 @@ extern int __lll_timedwait_tid (int *tid, const struct timespec *abstime) attribute_hidden; #define lll_timedwait_tid(tid, abstime) \ ({ \ - int __result = 0; \ + int __ret = 0; \ if (tid != 0) \ { \ if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000) \ - __result = EINVAL; \ + __ret = EINVAL; \ else \ - __result = __lll_timedwait_tid (&tid, abstime); \ + __ret = __lll_timedwait_tid (&tid, abstime); \ } \ - __result; }) + __ret; }) #endif /* !__ASSEMBLER__ */ diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h index ffab81eb5..afc40133e 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h @@ -332,7 +332,7 @@ LLL_STUB_UNWIND_INFO_END }) \ #define lll_robust_lock(futex, id, private) \ - ({ int result, ignore1, ignore2; \ + ({ int __ret, ignore1, ignore2; \ __asm__ __volatile__ (LOCK_INSTR "cmpxchgl %4, %2\n\t" \ "jnz 1f\n\t" \ ".subsection 1\n\t" \ @@ -348,10 +348,10 @@ LLL_STUB_UNWIND_INFO_END LLL_STUB_UNWIND_INFO_5 \ "24:" \ : "=S" (ignore1), "=D" (ignore2), "=m" (futex), \ - "=a" (result) \ + "=a" (__ret) \ : "1" (id), "m" (futex), "3" (0), "0" (private) \ : "cx", "r11", "cc", "memory"); \ - result; }) + __ret; }) #define lll_cond_lock(futex, private) \ (void) \ @@ -377,7 +377,7 @@ LLL_STUB_UNWIND_INFO_END }) #define lll_robust_cond_lock(futex, id, private) \ - ({ int result, ignore1, ignore2; \ + ({ int __ret, ignore1, ignore2; \ __asm__ __volatile__ (LOCK_INSTR "cmpxchgl %4, %2\n\t" \ "jnz 1f\n\t" \ ".subsection 1\n\t" \ @@ -393,14 +393,14 @@ LLL_STUB_UNWIND_INFO_END LLL_STUB_UNWIND_INFO_5 \ "24:" \ : "=S" (ignore1), "=D" (ignore2), "=m" (futex), \ - "=a" (result) \ + "=a" (__ret) \ : "1" (id | FUTEX_WAITERS), "m" (futex), "3" (0), \ "0" (private) \ : "cx", "r11", "cc", "memory"); \ - result; }) + __ret; }) #define lll_timedlock(futex, timeout, private) \ - ({ int result, ignore1, ignore2, ignore3; \ + ({ int __ret, ignore1, ignore2, ignore3; \ __asm__ __volatile__ (LOCK_INSTR "cmpxchgl %1, %4\n\t" \ "jnz 1f\n\t" \ ".subsection 1\n\t" \ @@ -416,15 +416,15 @@ LLL_STUB_UNWIND_INFO_END ".previous\n" \ LLL_STUB_UNWIND_INFO_6 \ "24:" \ - : "=a" (result), "=D" (ignore1), "=S" (ignore2), \ + : "=a" (__ret), "=D" (ignore1), "=S" (ignore2), \ "=&d" (ignore3), "=m" (futex) \ : "0" (0), "1" (1), "m" (futex), "m" (timeout), \ "2" (private) \ : "memory", "cx", "cc", "r10", "r11"); \ - result; }) + __ret; }) #define lll_robust_timedlock(futex, timeout, id, private) \ - ({ int result, ignore1, ignore2, ignore3; \ + ({ int __ret, ignore1, ignore2, ignore3; \ __asm__ __volatile__ (LOCK_INSTR "cmpxchgl %1, %4\n\t" \ "jnz 1f\n\t" \ ".subsection 1\n\t" \ @@ -440,12 +440,12 @@ LLL_STUB_UNWIND_INFO_END ".previous\n" \ LLL_STUB_UNWIND_INFO_6 \ "24:" \ - : "=a" (result), "=D" (ignore1), "=S" (ignore2), \ + : "=a" (__ret), "=D" (ignore1), "=S" (ignore2), \ "=&d" (ignore3), "=m" (futex) \ : "0" (0), "1" (id), "m" (futex), "m" (timeout), \ "2" (private) \ : "memory", "cx", "cc", "r10", "r11"); \ - result; }) + __ret; }) #if defined NOT_IN_libc || defined UP # define __lll_unlock_asm_start LOCK_INSTR "decl %0\n\t" \ @@ -583,15 +583,15 @@ extern int __lll_timedwait_tid (int *tid, const struct timespec *abstime) attribute_hidden; #define lll_timedwait_tid(tid, abstime) \ ({ \ - int __result = 0; \ + int __ret = 0; \ if (tid != 0) \ { \ if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000) \ - __result = EINVAL; \ + __ret = EINVAL; \ else \ - __result = __lll_timedwait_tid (&tid, abstime); \ + __ret = __lll_timedwait_tid (&tid, abstime); \ } \ - __result; }) + __ret; }) #endif /* !__ASSEMBLER__ */ -- cgit v1.2.3 From 71d63ed75648da9b0b71afabb9c60aaad792c55c Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 13 May 2011 15:31:06 -0700 Subject: unwind.h: Move to libc/sysdeps from nptl sysdeps Signed-off-by: Khem Raj --- .../nptl/sysdeps/unix/sysv/linux/arm/unwind.h | 279 --------------------- 1 file changed, 279 deletions(-) delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind.h (limited to 'libpthread/nptl/sysdeps/unix/sysv/linux') diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind.h b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind.h deleted file mode 100644 index eeb9cf8b6..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind.h +++ /dev/null @@ -1,279 +0,0 @@ -/* Header file for the ARM EABI unwinder - Copyright (C) 2003, 2004, 2005, 2009 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 2, or (at your option) any - later version. - - In addition to the permissions in the GNU General Public License, the - Free Software Foundation gives you unlimited permission to link the - compiled version of this file into combinations with other programs, - and to distribute those combinations without any restriction coming - from the use of this file. (The General Public License restrictions - do apply in other respects; for example, they cover modification of - the file, and distribution when not linked into a combine - executable.) - - 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. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ - -/* Language-independent unwinder header public defines. This contains both - ABI defined objects, and GNU support routines. */ - -#ifndef UNWIND_ARM_H -#define UNWIND_ARM_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 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 - { -#ifdef _LIBC - /* For the benefit of code which assumes this is a scalar. All - glibc ever does is clear it. */ - _uw64 exception_class; -#else - char exception_class[8]; -#endif - 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]; - - void * _Unwind_GetLanguageSpecificData (_Unwind_Context *); - _Unwind_Ptr _Unwind_GetRegionStart (_Unwind_Context *); - - /* These two should never be used. */ - _Unwind_Ptr _Unwind_GetDataRelBase (_Unwind_Context *); - _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 *); - _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 *); - - /* Decode an R_ARM_TARGET2 relocation. */ - static inline _Unwind_Word - _Unwind_decode_target2 (_Unwind_Word ptr) - { - _Unwind_Word tmp; - - tmp = *(_Unwind_Word *) ptr; - /* Zero values are always NULL. */ - if (!tmp) - return 0; - -#if defined(linux) || defined(__NetBSD__) - /* Pc-relative indirect. */ - tmp += ptr; - tmp = *(_Unwind_Word *) tmp; -#elif defined(__symbian__) - /* Absolute pointer. Nothing more to do. */ -#else - /* Pc-relative pointer. */ - tmp += ptr; -#endif - return tmp; - } - - 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; - } - - /* Return the address of the instruction, not the actual IP value. */ -#define _Unwind_GetIP(context) \ - (_Unwind_GetGR (context, 15) & ~(_Unwind_Word)1) - - static inline void - _Unwind_SetGR (_Unwind_Context *context, int regno, _Unwind_Word val) - { - _Unwind_VRS_Set (context, _UVRSC_CORE, regno, _UVRSD_UINT32, &val); - } - - /* The dwarf unwinder doesn't understand arm/thumb state. We assume the - landing pad uses the same instruction set as the call site. */ -#define _Unwind_SetIP(context, val) \ - _Unwind_SetGR (context, 15, val | (_Unwind_GetGR (context, 15) & 1)) - -typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn) - (struct _Unwind_Context *, void *); - -extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* defined UNWIND_ARM_H */ -- cgit v1.2.3