From 7d8c08baf43d27aac22a29e55c1108f31b8d7595 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 11 May 2011 19:52:16 +0200 Subject: libubacktrace: mv unwind.h to include Fixes compilation if NPTL is off. I hope this doesn't break ARM EABI but cannot check ATM. Signed-off-by: Bernhard Reutner-Fischer --- libpthread/nptl/sysdeps/generic/unwind.h | 220 ------------------------------- 1 file changed, 220 deletions(-) delete mode 100644 libpthread/nptl/sysdeps/generic/unwind.h (limited to 'libpthread') diff --git a/libpthread/nptl/sysdeps/generic/unwind.h b/libpthread/nptl/sysdeps/generic/unwind.h deleted file mode 100644 index 81fc4db55..000000000 --- a/libpthread/nptl/sysdeps/generic/unwind.h +++ /dev/null @@ -1,220 +0,0 @@ -/* Exception handling and frame unwind runtime interface routines. - Copyright (C) 2001, 2003 Free Software Foundation, Inc. - - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* This is derived from the C++ ABI for IA-64. Where we diverge - for cross-architecture compatibility are noted with "@@@". */ - -#ifndef _UNWIND_H -#define _UNWIND_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* Level 1: Base ABI */ - -/* @@@ The IA-64 ABI uses uint64 throughout. Most places this is - inefficient for 32-bit and smaller machines. */ -typedef unsigned _Unwind_Word __attribute__((__mode__(__word__))); -typedef signed _Unwind_Sword __attribute__((__mode__(__word__))); -#if defined(__ia64__) && defined(__hpux__) -typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__))); -#else -typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__))); -#endif -typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__))); - -/* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and - consumer of an exception. We'll go along with this for now even on - 32-bit machines. We'll need to provide some other option for - 16-bit machines and for machines with > 8 bits per byte. */ -typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__))); - -/* The unwind interface uses reason codes in several contexts to - identify the reasons for failures or other actions. */ -typedef enum -{ - _URC_NO_REASON = 0, - _URC_FOREIGN_EXCEPTION_CAUGHT = 1, - _URC_FATAL_PHASE2_ERROR = 2, - _URC_FATAL_PHASE1_ERROR = 3, - _URC_NORMAL_STOP = 4, - _URC_END_OF_STACK = 5, - _URC_HANDLER_FOUND = 6, - _URC_INSTALL_CONTEXT = 7, - _URC_CONTINUE_UNWIND = 8 -} _Unwind_Reason_Code; - - -/* The unwind interface uses a pointer to an exception header object - as its representation of an exception being thrown. In general, the - full representation of an exception object is language- and - implementation-specific, but it will be prefixed by a header - understood by the unwind interface. */ - -struct _Unwind_Exception; - -typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code, - struct _Unwind_Exception *); - -struct _Unwind_Exception -{ - _Unwind_Exception_Class exception_class; - _Unwind_Exception_Cleanup_Fn exception_cleanup; - _Unwind_Word private_1; - _Unwind_Word private_2; - - /* @@@ The IA-64 ABI says that this structure must be double-word aligned. - Taking that literally does not make much sense generically. Instead we - provide the maximum alignment required by any type for the machine. */ -} __attribute__((__aligned__)); - - -/* The ACTIONS argument to the personality routine is a bitwise OR of one - or more of the following constants. */ -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 - -/* This is an opaque type used to refer to a system-specific data - structure used by the system unwinder. This context is created and - destroyed by the system, and passed to the personality routine - during unwinding. */ -struct _Unwind_Context; - -/* Raise an exception, passing along the given exception object. */ -extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *); - -/* Raise an exception for forced unwinding. */ - -typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn) - (int, _Unwind_Action, _Unwind_Exception_Class, - struct _Unwind_Exception *, struct _Unwind_Context *, void *); - -extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *, - _Unwind_Stop_Fn, - void *); - -/* Helper to invoke the exception_cleanup routine. */ -extern void _Unwind_DeleteException (struct _Unwind_Exception *); - -/* Resume propagation of an existing exception. This is used after - e.g. executing cleanup code, and not to implement rethrowing. */ -extern void _Unwind_Resume (struct _Unwind_Exception *); - -/* @@@ 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) - (struct _Unwind_Context *, void *); - -extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *); - -/* These functions are used for communicating information about the unwind - context (i.e. the unwind descriptors and the user register state) between - the unwind library and the personality routine and landing pad. Only - selected registers maybe manipulated. */ - -extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int); -extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word); - -extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *); -extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr); - -/* @@@ Retrieve the CFA of the given context. */ -extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *); - -extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *); - -extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *); - - -/* The personality routine is the function in the C++ (or other language) - runtime library which serves as an interface between the system unwind - library and language-specific exception handling semantics. It is - specific to the code fragment described by an unwind info block, and - it is always referenced via the pointer in the unwind info block, and - hence it has no ABI-specified name. - - Note that this implies that two different C++ implementations can - use different names, and have different contents in the language - specific data area. Moreover, that the language specific data - area contains no version info because name of the function invoked - provides more effective versioning by detecting at link time the - lack of code to handle the different data format. */ - -typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn) - (int, _Unwind_Action, _Unwind_Exception_Class, - struct _Unwind_Exception *, struct _Unwind_Context *); - -/* @@@ The following alternate entry points are for setjmp/longjmp - based unwinding. */ - -struct SjLj_Function_Context; -extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *); -extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *); - -extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException - (struct _Unwind_Exception *); -extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind - (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); -extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *); - -/* @@@ The following provide access to the base addresses for text - and data-relative addressing in the LDSA. In order to stay link - compatible with the standard ABI for IA-64, we inline these. */ - -#ifdef __ia64__ -#include - -static inline _Unwind_Ptr -_Unwind_GetDataRelBase (struct _Unwind_Context *_C) -{ - /* The GP is stored in R1. */ - return _Unwind_GetGR (_C, 1); -} - -static inline _Unwind_Ptr -_Unwind_GetTextRelBase (struct _Unwind_Context *_C) -{ - abort (); - return 0; -} - -/* @@@ Retrieve the Backing Store Pointer of the given context. */ -extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); -#else -extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); -extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); -#endif - -/* @@@ Given an address, return the entry point of the function that - contains it. */ -extern void * _Unwind_FindEnclosingFunction (void *pc); - -#ifdef __cplusplus -} -#endif - -#endif /* unwind.h */ -- cgit v1.2.3 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') 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 c91c3a2b27f5909e190cde4518383864298e82af Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 11 May 2011 22:03:33 +0200 Subject: commentary typo fix use cancellation (with two 'l') uniformly. Signed-off-by: Bernhard Reutner-Fischer --- libpthread/linuxthreads.old/cancel.c | 2 +- libpthread/linuxthreads.old/pthread.c | 2 +- libpthread/linuxthreads.old/wrapsyscall.c | 2 +- libpthread/nptl/ChangeLog | 4 ++-- libpthread/nptl/pthreadP.h | 2 +- libpthread/nptl/sysdeps/pthread/pthread_once.c | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) (limited to 'libpthread') diff --git a/libpthread/linuxthreads.old/cancel.c b/libpthread/linuxthreads.old/cancel.c index 47534be66..0e5defb17 100644 --- a/libpthread/linuxthreads.old/cancel.c +++ b/libpthread/linuxthreads.old/cancel.c @@ -213,7 +213,7 @@ void __pthread_perform_cleanup(char *currentframe) } #ifndef __PIC__ -/* We need a hook to force the cancelation wrappers to be linked in when +/* We need a hook to force the cancellation wrappers to be linked in when static libpthread is used. */ extern const char __pthread_provide_wrappers; static const char *const __pthread_require_wrappers = diff --git a/libpthread/linuxthreads.old/pthread.c b/libpthread/linuxthreads.old/pthread.c index a8830b1a4..42e03f4dc 100644 --- a/libpthread/linuxthreads.old/pthread.c +++ b/libpthread/linuxthreads.old/pthread.c @@ -1159,7 +1159,7 @@ void __pthread_message(char * fmt, ...) #ifndef __PIC__ -/* We need a hook to force the cancelation wrappers to be linked in when +/* We need a hook to force the cancellation wrappers to be linked in when static libpthread is used. */ extern const char __pthread_provide_wrappers; static const char *const __pthread_require_wrappers = diff --git a/libpthread/linuxthreads.old/wrapsyscall.c b/libpthread/linuxthreads.old/wrapsyscall.c index 6e18388ca..e69ed6c8d 100644 --- a/libpthread/linuxthreads.old/wrapsyscall.c +++ b/libpthread/linuxthreads.old/wrapsyscall.c @@ -1,4 +1,4 @@ -/* Wrapper arpund system calls to provide cancelation points. +/* Wrapper arpund system calls to provide cancellation points. Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. diff --git a/libpthread/nptl/ChangeLog b/libpthread/nptl/ChangeLog index c81eb03b7..8ec6acde2 100644 --- a/libpthread/nptl/ChangeLog +++ b/libpthread/nptl/ChangeLog @@ -6717,7 +6717,7 @@ 2003-07-15 Ulrich Drepper - * tst-tcancel-wrappers.sh: lseek and llseek are not cancelation points. + * tst-tcancel-wrappers.sh: lseek and llseek are not cancellation points. 2003-07-14 Ulrich Drepper @@ -10990,7 +10990,7 @@ the static TLS block. (allocate_stack): Call _dl_allocate_tls_init for user-provided stack. - * cancellation.c: Renamed from cancelation.c. + * cancellation.c: Renamed from cancellation.c. * Makefile: Adjust accordingly. * pthreadP.h (CANCELLATION_P): Renamed from CANCELATION_P. * cleanup_defer.c: Use CANCELLATION_P. diff --git a/libpthread/nptl/pthreadP.h b/libpthread/nptl/pthreadP.h index fb354eaa3..850562b1f 100644 --- a/libpthread/nptl/pthreadP.h +++ b/libpthread/nptl/pthreadP.h @@ -312,7 +312,7 @@ __do_cancel (void) # define LIBC_CANCEL_HANDLED() /* Nothing. */ #endif -/* The signal used for asynchronous cancelation. */ +/* The signal used for asynchronous cancellation. */ #define SIGCANCEL __SIGRTMIN diff --git a/libpthread/nptl/sysdeps/pthread/pthread_once.c b/libpthread/nptl/sysdeps/pthread/pthread_once.c index 57bb6b977..55131091a 100644 --- a/libpthread/nptl/sysdeps/pthread/pthread_once.c +++ b/libpthread/nptl/sysdeps/pthread/pthread_once.c @@ -38,7 +38,7 @@ __pthread_once ( lll_lock (once_lock, LLL_PRIVATE); /* XXX This implementation is not complete. It doesn't take - cancelation and fork into account. */ + cancellation and fork into account. */ if (*once_control == PTHREAD_ONCE_INIT) { init_routine (); -- cgit v1.2.3 From 4eebb1ab2c9954b9b1ef7480c4d2a797513193de Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 11 May 2011 22:22:51 +0200 Subject: commentary typo fix s/decriptor/descriptor/ Signed-off-by: Bernhard Reutner-Fischer --- libpthread/linuxthreads.old_db/td_ta_delete.c | 2 +- libpthread/linuxthreads_db/td_ta_delete.c | 2 +- libpthread/nptl/ChangeLog | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'libpthread') diff --git a/libpthread/linuxthreads.old_db/td_ta_delete.c b/libpthread/linuxthreads.old_db/td_ta_delete.c index 0e6ec17d0..be1165af2 100644 --- a/libpthread/linuxthreads.old_db/td_ta_delete.c +++ b/libpthread/linuxthreads.old_db/td_ta_delete.c @@ -45,7 +45,7 @@ td_ta_delete (td_thragent_t *ta) runp = runp->next; if (runp->next == NULL) - /* It's not a valid decriptor since it is not in the list. */ + /* It's not a valid descriptor since it is not in the list. */ return TD_BADTA; runp->next = runp->next->next; diff --git a/libpthread/linuxthreads_db/td_ta_delete.c b/libpthread/linuxthreads_db/td_ta_delete.c index 0e6ec17d0..be1165af2 100644 --- a/libpthread/linuxthreads_db/td_ta_delete.c +++ b/libpthread/linuxthreads_db/td_ta_delete.c @@ -45,7 +45,7 @@ td_ta_delete (td_thragent_t *ta) runp = runp->next; if (runp->next == NULL) - /* It's not a valid decriptor since it is not in the list. */ + /* It's not a valid descriptor since it is not in the list. */ return TD_BADTA; runp->next = runp->next->next; diff --git a/libpthread/nptl/ChangeLog b/libpthread/nptl/ChangeLog index 8ec6acde2..ec22ebb64 100644 --- a/libpthread/nptl/ChangeLog +++ b/libpthread/nptl/ChangeLog @@ -10308,7 +10308,7 @@ * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define SINGLE_THREAD_P. If in libc or libpthread examine multiple_thread - member of thread decriptor, otherwise return unconditionally 1. + member of thread descriptor, otherwise return unconditionally 1. 2002-12-14 Ulrich Drepper -- cgit v1.2.3 From c6057584e07fae9c8b96e6a5af0271b2e2bc85f6 Mon Sep 17 00:00:00 2001 From: "Peter S. Mazinger" Date: Fri, 13 May 2011 01:56:08 +0200 Subject: epoll.c: add cancellation to epoll_[p]wait() While there, fix epoll_pwait syscall, it takes 6 arguments Signed-off-by: Peter S. Mazinger Signed-off-by: Bernhard Reutner-Fischer --- libpthread/linuxthreads.old/wrapsyscall.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'libpthread') diff --git a/libpthread/linuxthreads.old/wrapsyscall.c b/libpthread/linuxthreads.old/wrapsyscall.c index e69ed6c8d..6c74bd1ff 100644 --- a/libpthread/linuxthreads.old/wrapsyscall.c +++ b/libpthread/linuxthreads.old/wrapsyscall.c @@ -227,3 +227,16 @@ CANCELABLE_SYSCALL (ssize_t, sendto, (int fd, const __ptr_t buf, size_t n, socklen_t addr_len), (fd, buf, n, flags, addr, addr_len)) #endif /* __UCLIBC_HAS_SOCKET__ */ + +#ifdef __UCLIBC_HAS_EPOLL__ +# ifdef __NR_epoll_wait +CANCELABLE_SYSCALL (int, epoll_wait, (int epfd, struct epoll_event *events, int maxevents, int timeout), + (epfd, events, maxevents, timeout)) +# endif +# ifdef __NR_epoll_pwait +# include +CANCELABLE_SYSCALL (int, epoll_pwait, (int epfd, struct epoll_event *events, int maxevents, int timeout, + const sigset_t *set), + (epfd, events, maxevents, timeout, set)) +# endif +#endif -- 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') 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 From 5c49e11c01b0baf4c2c54259e5ec06274251f0fa Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Tue, 31 May 2011 09:45:44 +0200 Subject: NPTL: Fix CTOR_DTOR Signed-off-by: Bernhard Reutner-Fischer --- libpthread/nptl/.gitignore | 3 +++ libpthread/nptl/Makefile.in | 12 +++++++----- libpthread/nptl/sysdeps/pthread/Makefile.in | 24 ++++++++++++++++++------ libpthread/nptl/sysdeps/pthread/defs.awk | 24 ------------------------ libpthread/nptl/sysdeps/pthread/pt-initfini.c | 4 ++++ 5 files changed, 32 insertions(+), 35 deletions(-) delete mode 100644 libpthread/nptl/sysdeps/pthread/defs.awk (limited to 'libpthread') diff --git a/libpthread/nptl/.gitignore b/libpthread/nptl/.gitignore index ac44e0c5d..06395e1f5 100644 --- a/libpthread/nptl/.gitignore +++ b/libpthread/nptl/.gitignore @@ -18,6 +18,9 @@ sysdeps/unix/sysv/linux/lowlevelrobustlock.h sysdeps/unix/sysv/linux/structsem.h sysdeps/unix/sysv/linux/unwindbuf.h sysdeps/unix/sysv/linux/pthread-pi-defines.h +sysdeps/pthread/crt[in].S +sysdeps/pthread/defs.h +sysdeps/pthread/pt-initfini.s # # symlinks # diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in index 3e9676ac8..70616a1fe 100644 --- a/libpthread/nptl/Makefile.in +++ b/libpthread/nptl/Makefile.in @@ -63,9 +63,11 @@ librt-a-y += $(librt_OBJS) endif librt-so-y += $(librt_OBJS:.o=.oS) $(librt-pt-shared-only-routines-y:.o=.oS) -ifneq ($(UCLIBC_CTOR_DTOR),y) -START_FILE-libpthread.so := $(top_builddir)/libpthread/nptl/sysdeps/pthread/crti.o $(SHARED_START_FILES) -END_FILE-libpthread.so := $(SHARED_END_FILES) $(top_builddir)/libpthread/nptl/sysdeps/pthread/crtn.o +ifeq ($(UCLIBC_CTOR_DTOR),y) +START_FILE-libpthread.so := $(top_builddir)/libpthread/nptl/sysdeps/pthread/crti.o +END_FILE-libpthread.so := $(top_builddir)/libpthread/nptl/sysdeps/pthread/crtn.o +LDFLAGS-libpthread.so += -nostartfiles +$(top_builddir)lib/libpthread.so: | $(START_FILE-libpthread.so) $(END_FILE-libpthread.so) endif libpthread_FULL_NAME := libpthread-$(VERSION).so @@ -137,9 +139,9 @@ CLEAN_libpthread/nptl: $(do_rm) $(addprefix $(libpthread_OUT)/*., o os oS a) ifeq ($(PTHREADS_DEBUG_SUPPORT),y) -LDFLAGS-libpthread.so := $(LDFLAGS_NOSTRIP) -Wl,-z,defs +LDFLAGS-libpthread.so += $(LDFLAGS_NOSTRIP) -Wl,-z,defs else -LDFLAGS-libpthread.so := $(LDFLAGS) +LDFLAGS-libpthread.so += $(LDFLAGS) endif LDFLAGS-libpthread.so += $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so $(top_builddir)lib/libdl-$(VERSION).so \ diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in index fc0c6ac3e..d93b3a55f 100644 --- a/libpthread/nptl/sysdeps/pthread/Makefile.in +++ b/libpthread/nptl/sysdeps/pthread/Makefile.in @@ -67,22 +67,34 @@ librt-pt-shared-only-routines-y = rt-unwind-resume.c ifeq ($(UCLIBC_CTOR_DTOR),y) CFLAGS-OMIT-pt-initfini.c = $(CFLAGS-pthread) -CFLAGS-pt-initfini.c = -S -g0 -fPIC -fno-inline-functions \ +CFLAGS-pt-initfini.c = -S -g0 $(PICFLAG) -fno-inline-functions \ $(call check_gcc,-fno-unit-at-a-time,) \ + $(SSP_DISABLE_FLAGS) \ -finhibit-size-directive \ + -fno-asynchronous-unwind-tables -fno-unwind-tables \ $(patsubst -f%,-fno-%,$(call check_gcc,-fexceptions,)) ASFLAGS-crti.S = -g0 ASFLAGS-crtn.S = -g0 $(libpthread_pthread_OUT)/pt-initfini.s: $(libpthread_pthread_DIR)/pt-initfini.c $(compile.c) - $(do_sed) '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \ - $(do_awk) $(libpthread_pthread_DIR)/defs.awk > $(libpthread_pthread_OUT)/defs.h +$(libpthread_pthread_OUT)/defs.h: $(libpthread_pthread_DIR)/pt-initfini.c + $(do_sed) -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \ + $(AWK) -f $(top_srcdir)extra/scripts/defs.awk > $@.tmp + $(Q)mv $@.tmp $@ -$(libpthread_pthread_OUT)/crti.S $(libpthread_pthread_OUT)/crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s - $(do_sed) -e '1,/@HEADER_ENDS/p' \ +$(libpthread_pthread_OUT)/crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h + $(do_sed) -n -e '/[ ]*\.file/d' \ + -e '1,/@HEADER_ENDS/p' \ -e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \ - -e '/@TRAILER_BEGINS/,$$p' $< > $@ + -e '/@TRAILER_BEGINS/,$$p' $< > $@.tmp + $(Q)mv $@.tmp $@ +$(libpthread_pthread_OUT)/crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h + $(do_sed) -n -e '/[ ]*\.file/d' \ + -e '1,/@HEADER_ENDS/p' \ + -e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \ + -e '/@TRAILER_BEGINS/,$$p' $< > $@.tmp + $(Q)mv $@.tmp $@ endif # It would have been easier to just add dummy files that include the real # impl, but ok. diff --git a/libpthread/nptl/sysdeps/pthread/defs.awk b/libpthread/nptl/sysdeps/pthread/defs.awk deleted file mode 100644 index d41d57bd7..000000000 --- a/libpthread/nptl/sysdeps/pthread/defs.awk +++ /dev/null @@ -1,24 +0,0 @@ -/^[ ]*\.endp/ { need_endp = 1 } -/^[ ]*\.end/ { need_end = 1 } -/^[ ]*\.align/ { if($2 > max) max = $2; } - -END { - if(need_endp) - { - print "#define END_INIT .endp _init"; - print "#define END_FINI .endp _fini"; - } else if(need_end) - { - print "#define END_INIT .end _init"; - print "#define END_FINI .end _fini"; - } - else - { - print "#define END_INIT"; - print "#define END_FINI"; - } - if(max) - print "#define ALIGN .align", max; - else - print "#define ALIGN"; -} diff --git a/libpthread/nptl/sysdeps/pthread/pt-initfini.c b/libpthread/nptl/sysdeps/pthread/pt-initfini.c index 1f81144d0..ccdce3e22 100644 --- a/libpthread/nptl/sysdeps/pthread/pt-initfini.c +++ b/libpthread/nptl/sysdeps/pthread/pt-initfini.c @@ -44,6 +44,10 @@ /* Embed an #include to pull in the alignment and .end directives. */ __asm__ ("\n#include \"defs.h\""); +__asm__ ("\n#if defined __i686 && defined __ASSEMBLER__"); +__asm__ ("\n#undef __i686"); +__asm__ ("\n#define __i686 __i686"); +__asm__ ("\n#endif"); /* The initial common code ends here. */ __asm__ ("\n/*@HEADER_ENDS*/"); -- cgit v1.2.3 From 9a923848c48330ad6c96dc457402eafc2463dd7c Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 10 Jun 2011 13:05:34 -0700 Subject: nptl/Makefile.in: Fix the build break caused by UCLIBC_CTOR_DTOR enabling Extra / somehow does not match the target and complains that $(top_builddir)libpthread/nptl/sysdeps/pthread/crti.o has no rules to build Signed-off-by: Khem Raj --- libpthread/nptl/Makefile.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libpthread') diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in index 70616a1fe..92d72a6cb 100644 --- a/libpthread/nptl/Makefile.in +++ b/libpthread/nptl/Makefile.in @@ -64,8 +64,8 @@ endif librt-so-y += $(librt_OBJS:.o=.oS) $(librt-pt-shared-only-routines-y:.o=.oS) ifeq ($(UCLIBC_CTOR_DTOR),y) -START_FILE-libpthread.so := $(top_builddir)/libpthread/nptl/sysdeps/pthread/crti.o -END_FILE-libpthread.so := $(top_builddir)/libpthread/nptl/sysdeps/pthread/crtn.o +START_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/crti.o +END_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/crtn.o LDFLAGS-libpthread.so += -nostartfiles $(top_builddir)lib/libpthread.so: | $(START_FILE-libpthread.so) $(END_FILE-libpthread.so) endif -- cgit v1.2.3 From c97ce776368ec5d9d954fc8653f3e1c11490fc74 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 13 Jun 2011 16:30:55 -0700 Subject: ctor/dtor nptl: Fix init and fini function compilation We need to define the rules for .S files so it gets the include paths some architectures like mips include headers Some architectures e.g. SH have their own version of pt-initfini.c so look for that first before resorting to generic version of pt-initfini.c Signed-off-by: Khem Raj --- libpthread/nptl/Makefile.in | 4 ++-- libpthread/nptl/sysdeps/pthread/Makefile.in | 26 ++++++++++++++++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) (limited to 'libpthread') diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in index 92d72a6cb..849bd5965 100644 --- a/libpthread/nptl/Makefile.in +++ b/libpthread/nptl/Makefile.in @@ -64,8 +64,8 @@ endif librt-so-y += $(librt_OBJS:.o=.oS) $(librt-pt-shared-only-routines-y:.o=.oS) ifeq ($(UCLIBC_CTOR_DTOR),y) -START_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/crti.o -END_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/crtn.o +START_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/pt-crti.o +END_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/pt-crtn.o LDFLAGS-libpthread.so += -nostartfiles $(top_builddir)lib/libpthread.so: | $(START_FILE-libpthread.so) $(END_FILE-libpthread.so) endif diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in index d93b3a55f..398eaea12 100644 --- a/libpthread/nptl/sysdeps/pthread/Makefile.in +++ b/libpthread/nptl/sysdeps/pthread/Makefile.in @@ -73,23 +73,37 @@ CFLAGS-pt-initfini.c = -S -g0 $(PICFLAG) -fno-inline-functions \ -finhibit-size-directive \ -fno-asynchronous-unwind-tables -fno-unwind-tables \ $(patsubst -f%,-fno-%,$(call check_gcc,-fexceptions,)) -ASFLAGS-crti.S = -g0 -ASFLAGS-crtn.S = -g0 -$(libpthread_pthread_OUT)/pt-initfini.s: $(libpthread_pthread_DIR)/pt-initfini.c +#ASFLAGS += $(PICFLAG) -I$(top_srcdir)include -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) +ifneq ($(wildcard $(libpthread_DIR)/sysdeps/linux/$(TARGET_ARCH)/pt-initfini.c),) +PTHREAD_INITFINI := $(libpthread_DIR)/sysdeps/linux/$(TARGET_ARCH)/pt-initfini.c +else +PTHREAD_INITFINI := $(libpthread_pthread_DIR)/pt-initfini.c +endif + +ASFLAGS-pt-crti.S = $(PICFLAG) +ASFLAGS-pt-crtn.S = $(PICFLAG) + +$(libpthread_pthread_OUT)/pt-crti.o: $(libpthread_pthread_OUT)/pt-crti.S + $(compile.S) + +$(libpthread_pthread_OUT)/pt-crtn.o: $(libpthread_pthread_OUT)/pt-crtn.S + $(compile.S) + +$(libpthread_pthread_OUT)/pt-initfini.s: $(PTHREAD_INITFINI) $(compile.c) -$(libpthread_pthread_OUT)/defs.h: $(libpthread_pthread_DIR)/pt-initfini.c +$(libpthread_pthread_OUT)/defs.h: $(PTHREAD_INITFINI) $(do_sed) -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \ $(AWK) -f $(top_srcdir)extra/scripts/defs.awk > $@.tmp $(Q)mv $@.tmp $@ -$(libpthread_pthread_OUT)/crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h +$(libpthread_pthread_OUT)/pt-crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h $(do_sed) -n -e '/[ ]*\.file/d' \ -e '1,/@HEADER_ENDS/p' \ -e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \ -e '/@TRAILER_BEGINS/,$$p' $< > $@.tmp $(Q)mv $@.tmp $@ -$(libpthread_pthread_OUT)/crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h +$(libpthread_pthread_OUT)/pt-crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h $(do_sed) -n -e '/[ ]*\.file/d' \ -e '1,/@HEADER_ENDS/p' \ -e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \ -- cgit v1.2.3 From f282ca2286c728c805dff4d57f7c3b3404f1a618 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 13 Jun 2011 17:13:52 -0700 Subject: nptl/pthread: Correct path for machine specific pt-initfini.c Signed-off-by: Khem Raj --- libpthread/nptl/sysdeps/pthread/Makefile.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libpthread') diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in index 398eaea12..ca8464227 100644 --- a/libpthread/nptl/sysdeps/pthread/Makefile.in +++ b/libpthread/nptl/sysdeps/pthread/Makefile.in @@ -75,8 +75,8 @@ CFLAGS-pt-initfini.c = -S -g0 $(PICFLAG) -fno-inline-functions \ $(patsubst -f%,-fno-%,$(call check_gcc,-fexceptions,)) #ASFLAGS += $(PICFLAG) -I$(top_srcdir)include -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) -ifneq ($(wildcard $(libpthread_DIR)/sysdeps/linux/$(TARGET_ARCH)/pt-initfini.c),) -PTHREAD_INITFINI := $(libpthread_DIR)/sysdeps/linux/$(TARGET_ARCH)/pt-initfini.c +ifneq ($(wildcard $(libpthread_pthread_DIR)/../unix/sysv/linux/$(TARGET_ARCH)/pt-initfini.c),) +PTHREAD_INITFINI := $(libpthread_pthread_DIR)/../unix/sysv/linux/$(TARGET_ARCH)/pt-initfini.c else PTHREAD_INITFINI := $(libpthread_pthread_DIR)/pt-initfini.c endif -- cgit v1.2.3 From 4cf580dfcc5846b89a4cf688ecca431d5a5e5647 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Tue, 14 Jun 2011 17:51:58 +0200 Subject: buildsys: pt-initfini.s depends on uClibc_config.h Signed-off-by: Bernhard Reutner-Fischer --- libpthread/nptl/sysdeps/pthread/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libpthread') diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in index ca8464227..be5c022b1 100644 --- a/libpthread/nptl/sysdeps/pthread/Makefile.in +++ b/libpthread/nptl/sysdeps/pthread/Makefile.in @@ -90,7 +90,7 @@ $(libpthread_pthread_OUT)/pt-crti.o: $(libpthread_pthread_OUT)/pt-crti.S $(libpthread_pthread_OUT)/pt-crtn.o: $(libpthread_pthread_OUT)/pt-crtn.S $(compile.S) -$(libpthread_pthread_OUT)/pt-initfini.s: $(PTHREAD_INITFINI) +$(libpthread_pthread_OUT)/pt-initfini.s: $(PTHREAD_INITFINI) | $(top_builddir)include/bits/uClibc_config.h $(compile.c) $(libpthread_pthread_OUT)/defs.h: $(PTHREAD_INITFINI) $(do_sed) -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \ -- cgit v1.2.3