This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] Use extern inline only when it is allowed
- From: Samuel Thibault <samuel dot thibault at ens-lyon dot org>
- To: libc-alpha at sources dot redhat dot com
- Date: Thu, 29 Nov 2007 00:42:54 +0000
- Subject: [PATCH] Use extern inline only when it is allowed
Sometimes extern inlines are not wanted or even possible (e.g. c++ with
gcc < 4.3). This patch fixes the places which were not protected yet.
Samuel
2007-11-29 Samuel Thibault <samuel.thibault@ens-lyon.org>
* hurd/hurd.h (__hurd_fail): Add prototype, provide extern
inline definition only when __USE_EXTERN_INLINE is defined.
* hurd/hurd/fd.h (_hurd_fd_get, _hurd_fd_error_signal,
_hurd_fd_error, __hurd_dfail): Likewise.
* hurd/hurd/port.h (_hurd_port_init, _hurd_port_locked_get,
_hurd_port_get, _hurd_port_free, _hurd_port_locked_set,
_hurd_port_set): Likewise.
* hurd/hurd/signal.h (_hurd_self_sigstate,
_hurd_critical_section_lock, _hurd_critical_section_unlock):
Likewise.
* hurd/hurd/threadvar.h (__hurd_threadvar_location_from_sp,
__hurd_threadvar_location): Likewise.
* hurd/hurd/userlink.h (_hurd_userlink_link,
_hurd_userlink_unlink, _hurd_userlink_clear): Likewise.
* mach/lock-intern.h (__spin_lock_init, __spin_lock,
__mutex_lock, __mutex_unlock, __mutex_trylock): Likewise.
* mach/mach/mig_support.h (mig_strncpy, __mig_strncpy):
Likewise.
* sysdeps/generic/machine-lock.h (__spin_unlock,
__spin_try_lock, __spin_lock_locked): Likewise.
* sysdeps/generic/machine-sp.h (__thread_stack_pointer):
Likewise.
* sysdeps/mach/alpha/machine-lock.h (__spin_unlock,
__spin_try_lock, __spin_lock_locked): Likewise.
* sysdeps/mach/alpha/machine-sp.h (__thread_stack_pointer):
Likewise.
* sysdeps/mach/i386/machine-lock.h (__spin_unlock,
__spin_try_lock, __spin_lock_locked): Likewise.
* sysdeps/mach/powerpc/machine-lock.h (__spin_unlock,
__spin_try_lock, __spin_lock_locked): Likewise.
* sysdeps/mach/powerpc/machine-sp.h (__thread_stack_pointer):
Likewise.
Index: hurd/hurd.h
===================================================================
RCS file: /cvs/glibc/libc/hurd/hurd.h,v
retrieving revision 1.81
diff -u -p -r1.81 hurd.h
--- hurd/hurd.h 17 Mar 2007 17:04:09 -0000 1.81
+++ hurd/hurd.h 29 Nov 2007 00:07:22 -0000
@@ -48,6 +48,9 @@
#define _HURD_H_EXTERN_INLINE __extern_inline
#endif
+int __hurd_fail (error_t err);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_H_EXTERN_INLINE int
__hurd_fail (error_t err)
{
@@ -77,6 +80,7 @@
errno = err;
return -1;
}
+#endif
/* Basic ports and info, initialized by startup. */
Index: hurd/hurd/fd.h
===================================================================
RCS file: /cvs/glibc/libc/hurd/hurd/fd.h,v
retrieving revision 1.36
--- hurd/hurd/fd.h 17 Mar 2007 17:04:09 -0000 1.36
+++ hurd/hurd/fd.h 29 Nov 2007 00:07:24 -0000
@@ -59,6 +59,9 @@
NULL. The cell is unlocked; when ready to use it, lock it and check for
it being unused. */
+struct hurd_fd *_hurd_fd_get (int fd);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_FD_H_EXTERN_INLINE struct hurd_fd *
_hurd_fd_get (int fd)
{
@@ -89,6 +92,7 @@
return descriptor;
}
+#endif
/* Evaluate EXPR with the variable `descriptor' bound to a pointer to the
@@ -136,6 +140,9 @@
/* Check if ERR should generate a signal.
Returns the signal to take, or zero if none. */
+int _hurd_fd_error_signal (error_t err);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_FD_H_EXTERN_INLINE int
_hurd_fd_error_signal (error_t err)
{
@@ -152,11 +159,15 @@
return 0;
}
}
+#endif
/* Handle an error from an RPC on a file descriptor's port. You should
always use this function to handle errors from RPCs made on file
descriptor ports. Some errors are translated into signals. */
+error_t _hurd_fd_error (int fd, error_t err);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_FD_H_EXTERN_INLINE error_t
_hurd_fd_error (int fd, error_t err)
{
@@ -169,16 +180,21 @@
}
return err;
}
+#endif
/* Handle error code ERR from an RPC on file descriptor FD's port.
Set `errno' to the appropriate error code, and always return -1. */
+int __hurd_dfail (int fd, error_t err);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_FD_H_EXTERN_INLINE int
__hurd_dfail (int fd, error_t err)
{
errno = _hurd_fd_error (fd, err);
return -1;
}
+#endif
/* Set up *FD to have PORT its server port, doing appropriate ctty magic.
Does no locking or unlocking. */
Index: hurd/hurd/port.h
===================================================================
RCS file: /cvs/glibc/libc/hurd/hurd/port.h,v
retrieving revision 1.13
--- hurd/hurd/port.h 17 Mar 2007 17:04:09 -0000 1.13
+++ hurd/hurd/port.h 29 Nov 2007 00:07:24 -0000
@@ -62,6 +62,9 @@
/* Initialize *PORT to INIT. */
+void _hurd_port_init (struct hurd_port *port, mach_port_t init);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_PORT_H_EXTERN_INLINE void
_hurd_port_init (struct hurd_port *port, mach_port_t init)
{
@@ -69,6 +72,7 @@
port->users = NULL;
port->port = init;
}
+#endif
/* Cleanup function for non-local exits. */
@@ -77,6 +81,11 @@
/* Get a reference to *PORT, which is locked.
Pass return value and LINK to _hurd_port_free when done. */
+mach_port_t
+_hurd_port_locked_get (struct hurd_port *port,
+ struct hurd_userlink *link);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_PORT_H_EXTERN_INLINE mach_port_t
_hurd_port_locked_get (struct hurd_port *port,
struct hurd_userlink *link)
@@ -92,9 +101,15 @@
__spin_unlock (&port->lock);
return result;
}
+#endif
/* Same, but locks PORT first. */
+mach_port_t
+_hurd_port_get (struct hurd_port *port,
+ struct hurd_userlink *link);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_PORT_H_EXTERN_INLINE mach_port_t
_hurd_port_get (struct hurd_port *port,
struct hurd_userlink *link)
@@ -106,10 +121,17 @@
HURD_CRITICAL_END;
return result;
}
+#endif
/* Free a reference gotten with `USED_PORT = _hurd_port_get (PORT, LINK);' */
+void
+_hurd_port_free (struct hurd_port *port,
+ struct hurd_userlink *link,
+ mach_port_t used_port);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_PORT_H_EXTERN_INLINE void
_hurd_port_free (struct hurd_port *port,
struct hurd_userlink *link,
@@ -129,11 +151,15 @@
if (dealloc)
__mach_port_deallocate (__mach_task_self (), used_port);
}
+#endif
/* Set *PORT's port to NEWPORT. NEWPORT's reference is consumed by PORT->port.
PORT->lock is locked. */
+void _hurd_port_locked_set (struct hurd_port *port, mach_port_t newport);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_PORT_H_EXTERN_INLINE void
_hurd_port_locked_set (struct hurd_port *port, mach_port_t newport)
{
@@ -144,9 +170,13 @@
if (old != MACH_PORT_NULL)
__mach_port_deallocate (__mach_task_self (), old);
}
+#endif
/* Same, but locks PORT first. */
+void _hurd_port_set (struct hurd_port *port, mach_port_t newport);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_PORT_H_EXTERN_INLINE void
_hurd_port_set (struct hurd_port *port, mach_port_t newport)
{
@@ -155,6 +185,7 @@
_hurd_port_locked_set (port, newport);
HURD_CRITICAL_END;
}
+#endif
#endif /* hurd/port.h */
Index: hurd/hurd/signal.h
===================================================================
RCS file: /cvs/glibc/libc/hurd/hurd/signal.h,v
retrieving revision 1.49
--- hurd/hurd/signal.h 19 Jul 2007 17:20:39 -0000 1.49
+++ hurd/hurd/signal.h 29 Nov 2007 00:07:25 -0000
@@ -130,15 +130,17 @@
#define _HURD_SIGNAL_H_EXTERN_INLINE __extern_inline
#endif
+#ifdef __USE_EXTERN_INLINES
_HURD_SIGNAL_H_EXTERN_INLINE struct hurd_sigstate *
_hurd_self_sigstate (void)
{
struct hurd_sigstate **location =
(void *) __hurd_threadvar_location (_HURD_THREADVAR_SIGSTATE);
if (*location == NULL)
*location = _hurd_thread_sigstate (__mach_thread_self ());
return *location;
}
+#endif
/* Thread listening on our message port; also called the "signal thread". */
@@ -165,10 +167,13 @@
interrupted lest the signal handler try to take the same lock and
deadlock result. */
+void *_hurd_critical_section_lock (void);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_SIGNAL_H_EXTERN_INLINE void *
_hurd_critical_section_lock (void)
{
struct hurd_sigstate **location =
(void *) __hurd_threadvar_location (_HURD_THREADVAR_SIGSTATE);
struct hurd_sigstate *ss = *location;
if (ss == NULL)
@@ -190,7 +195,11 @@
_hurd_critical_section_unlock to unlock it. */
return ss;
}
+#endif
+
+void _hurd_critical_section_unlock (void *our_lock);
+#ifdef __USE_EXTERN_INLINES
_HURD_SIGNAL_H_EXTERN_INLINE void
_hurd_critical_section_unlock (void *our_lock)
{
@@ -213,6 +222,7 @@
__msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ());
}
}
+#endif
/* Convenient macros for simple uses of critical sections.
These two must be used as a pair at the same C scoping level. */
Index: hurd/hurd/threadvar.h
===================================================================
RCS file: /cvs/glibc/libc/hurd/hurd/threadvar.h,v
retrieving revision 1.19
--- hurd/hurd/threadvar.h 17 Mar 2007 17:04:09 -0000 1.19
+++ hurd/hurd/threadvar.h 29 Nov 2007 00:07:25 -0000
@@ -82,6 +82,8 @@
extern unsigned long int *__hurd_threadvar_location_from_sp
(enum __hurd_threadvar_index __index, void *__sp);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_THREADVAR_H_EXTERN_INLINE unsigned long int *
__hurd_threadvar_location_from_sp (enum __hurd_threadvar_index __index,
void *__sp)
@@ -93,6 +95,7 @@
: (unsigned long int *) ((__stack & __hurd_threadvar_stack_mask) +
__hurd_threadvar_stack_offset))[__index];
}
+#endif
#include <machine-sp.h> /* Define __thread_stack_pointer. */
@@ -106,12 +109,14 @@
the same stack frame by different threads. */
__attribute__ ((__const__));
+#ifdef __USE_EXTERN_INLINES
_HURD_THREADVAR_H_EXTERN_INLINE unsigned long int *
__hurd_threadvar_location (enum __hurd_threadvar_index __index)
{
return __hurd_threadvar_location_from_sp (__index,
__thread_stack_pointer ());
}
+#endif
#endif /* hurd/threadvar.h */
Index: hurd/hurd/userlink.h
===================================================================
RCS file: /cvs/glibc/libc/hurd/hurd/userlink.h,v
retrieving revision 1.10
--- hurd/hurd/userlink.h 17 Mar 2007 17:04:09 -0000 1.10
+++ hurd/hurd/userlink.h 29 Nov 2007 00:07:25 -0000
@@ -77,6 +77,11 @@
/* Attach LINK to the chain of users at *CHAINP. */
+void
+_hurd_userlink_link (struct hurd_userlink **chainp,
+ struct hurd_userlink *link);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_USERLINK_H_EXTERN_INLINE void
_hurd_userlink_link (struct hurd_userlink **chainp,
struct hurd_userlink *link)
@@ -97,11 +102,15 @@
link->thread.prevp = thread_chainp;
*thread_chainp = link;
}
+#endif
/* Detach LINK from its chain. Returns nonzero iff this was the
last user of the resource and it should be deallocated. */
+int _hurd_userlink_unlink (struct hurd_userlink *link);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_USERLINK_H_EXTERN_INLINE int
_hurd_userlink_unlink (struct hurd_userlink *link)
{
@@ -124,6 +133,7 @@
return dealloc;
}
+#endif
/* Clear all users from *CHAINP. Call this when the resource *CHAINP
@@ -132,6 +142,9 @@
value is zero, someone is still using the resource and they will
deallocate it when they are finished. */
+int _hurd_userlink_clear (struct hurd_userlink **chainp);
+
+#ifdef __USE_EXTERN_INLINES
_HURD_USERLINK_H_EXTERN_INLINE int
_hurd_userlink_clear (struct hurd_userlink **chainp)
{
@@ -144,5 +157,6 @@
*chainp = NULL;
return 0;
}
+#endif
#endif /* hurd/userlink.h */
Index: mach/lock-intern.h
===================================================================
RCS file: /cvs/glibc/libc/mach/lock-intern.h,v
retrieving revision 1.8
--- mach/lock-intern.h 22 Jul 2007 06:50:53 -0000 1.8
+++ mach/lock-intern.h 29 Nov 2007 00:07:29 -0000
@@ -29,11 +29,15 @@
/* Initialize LOCK. */
+void __spin_lock_init (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__spin_lock_init (__spin_lock_t *__lock)
{
*__lock = __SPIN_LOCK_INITIALIZER;
}
+#endif
/* Lock LOCK, blocking if we can't get it. */
@@ -41,12 +45,16 @@
/* Lock the spin lock LOCK. */
+void __spin_lock (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__spin_lock (__spin_lock_t *__lock)
{
if (! __spin_try_lock (__lock))
__spin_lock_solid (__lock);
}
+#endif
/* Name space-clean internal interface to mutex locks.
@@ -71,27 +79,39 @@
/* Lock the mutex lock LOCK. */
+void __mutex_lock (void *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__mutex_lock (void *__lock)
{
if (! __spin_try_lock ((__spin_lock_t *) __lock))
__mutex_lock_solid (__lock);
}
+#endif
/* Unlock the mutex lock LOCK. */
+void __mutex_unlock (void *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__mutex_unlock (void *__lock)
{
__spin_unlock ((__spin_lock_t *) __lock);
__mutex_unlock_solid (__lock);
}
+#endif
+
+int __mutex_trylock (void *__lock);
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__mutex_trylock (void *__lock)
{
return __spin_try_lock ((__spin_lock_t *) __lock);
}
+#endif
#endif /* lock-intern.h */
Index: mach/mach/mig_support.h
===================================================================
RCS file: /cvs/glibc/libc/mach/mach/mig_support.h,v
retrieving revision 1.9
--- mach/mach/mig_support.h 17 Mar 2007 17:04:06 -0000 1.9
+++ mach/mach/mig_support.h 29 Nov 2007 00:07:29 -0000
@@ -67,6 +67,8 @@
/* Idiocy support function. */
extern vm_size_t mig_strncpy (char *__dst, const char *__src, vm_size_t __len);
extern vm_size_t __mig_strncpy (char *__dst, const char *__src, vm_size_t);
+
+#ifdef __USE_EXTERN_INLINES
__extern_inline vm_size_t
__mig_strncpy (char *__dst, const char *__src, vm_size_t __len)
{
@@ -77,6 +79,7 @@
{
return __mig_strncpy (__dst, __src, __len);
}
+#endif
Index: sysdeps/generic/machine-lock.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/generic/machine-lock.h,v
retrieving revision 1.3
--- sysdeps/generic/machine-lock.h 17 Mar 2007 17:04:10 -0000 1.3
+++ sysdeps/generic/machine-lock.h 29 Nov 2007 00:07:34 -0000
@@ -35,14 +35,21 @@
/* Unlock LOCK. */
+void __spin_unlock (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__spin_unlock (__spin_lock_t *__lock)
{
*__lock = 0;
}
+#endif
/* Try to lock LOCK; return nonzero if we locked it, zero if another has. */
+int __spin_try_lock (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__spin_try_lock (__spin_lock_t *__lock)
{
@@ -51,14 +58,19 @@
*__lock = 1;
return 1;
}
+#endif
/* Return nonzero if LOCK is locked. */
+int __spin_lock_locked (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__spin_lock_locked (__spin_lock_t *__lock)
{
return *__lock != 0;
}
+#endif
#endif /* machine-lock.h */
Index: sysdeps/generic/machine-sp.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/generic/machine-sp.h,v
retrieving revision 1.3
--- sysdeps/generic/machine-sp.h 17 Mar 2007 17:04:10 -0000 1.3
+++ sysdeps/generic/machine-sp.h 29 Nov 2007 00:07:34 -0000
@@ -26,11 +26,15 @@
#define _EXTERN_INLINE __extern_inline
#endif
+void * __thread_stack_pointer (void);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void *
__thread_stack_pointer (void)
{
register void *__sp__ ("{STACK-POINTER}");
return __sp__;
}
+#endif
#endif /* machine-sp.h */
Index: sysdeps/mach/alpha/machine-lock.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/mach/alpha/machine-lock.h,v
retrieving revision 1.7
--- sysdeps/mach/alpha/machine-lock.h 17 Mar 2007 17:04:09 -0000 1.7
+++ sysdeps/mach/alpha/machine-lock.h 29 Nov 2007 00:07:35 -0000
@@ -35,15 +35,22 @@
/* Unlock LOCK. */
+void __spin_unlock (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__spin_unlock (__spin_lock_t *__lock)
{
__asm__ __volatile__ ("mb; stq $31, %0; mb"
: "=m" (__lock));
}
+#endif
/* Try to lock LOCK; return nonzero if we locked it, zero if another has. */
+int __spin_try_lock (register __spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__spin_try_lock (register __spin_lock_t *__lock)
{
@@ -67,14 +74,19 @@
/* RTN is now nonzero; we have the lock. */
return __rtn;
}
+#endif
/* Return nonzero if LOCK is locked. */
+int __spin_lock_locked (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__spin_lock_locked (__spin_lock_t *__lock)
{
return *__lock != 0;
}
+#endif
#endif /* machine-lock.h */
Index: sysdeps/mach/alpha/machine-sp.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/mach/alpha/machine-sp.h,v
retrieving revision 1.4
--- sysdeps/mach/alpha/machine-sp.h 17 Mar 2007 17:04:09 -0000 1.4
+++ sysdeps/mach/alpha/machine-sp.h 29 Nov 2007 00:07:35 -0000
@@ -26,11 +26,15 @@
#define _EXTERN_INLINE __extern_inline
#endif
+void * __thread_stack_pointer (void);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void *
__thread_stack_pointer (void)
{
register void *__sp__ __asm__ ("$30");
return __sp__;
}
+#endif
#endif /* machine-sp.h */
Index: sysdeps/mach/i386/machine-lock.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/mach/i386/machine-lock.h,v
retrieving revision 1.8
--- sysdeps/mach/i386/machine-lock.h 17 Mar 2007 17:04:09 -0000 1.8
+++ sysdeps/mach/i386/machine-lock.h 29 Nov 2007 00:07:41 -0000
@@ -35,6 +35,9 @@
/* Unlock LOCK. */
+void __spin_unlock (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__spin_unlock (__spin_lock_t *__lock)
{
@@ -42,9 +45,13 @@
__asm__ __volatile ("xchgl %0, %1"
: "=&r" (__unlocked), "=m" (*__lock) : "0" (0));
}
+#endif
/* Try to lock LOCK; return nonzero if we locked it, zero if another has. */
+int __spin_try_lock (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__spin_try_lock (__spin_lock_t *__lock)
{
@@ -53,14 +60,19 @@
: "=&r" (__locked), "=m" (*__lock) : "0" (1));
return !__locked;
}
+#endif
/* Return nonzero if LOCK is locked. */
+int __spin_lock_locked (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__spin_lock_locked (__spin_lock_t *__lock)
{
return *__lock != 0;
}
+#endif
#endif /* machine-lock.h */
Index: sysdeps/mach/powerpc/machine-lock.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/mach/powerpc/machine-lock.h,v
retrieving revision 1.5
--- sysdeps/mach/powerpc/machine-lock.h 17 Mar 2007 17:04:09 -0000 1.5
+++ sysdeps/mach/powerpc/machine-lock.h 29 Nov 2007 00:07:41 -0000
@@ -35,6 +35,9 @@
/* Unlock LOCK. */
+void __spin_unlock (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__spin_unlock (__spin_lock_t *__lock)
{
@@ -45,9 +48,13 @@
bne- 0b\n\
" : "=&r" (__locked) : "r" (__lock), "r" (0) : "cr0");
}
+#endif
/* Try to lock LOCK; return nonzero if we locked it, zero if another has. */
+int __spin_try_lock (register __spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__spin_try_lock (register __spin_lock_t *__lock)
{
@@ -59,9 +66,13 @@
" : "=&r" (__rtn) : "r" (__lock), "r" (1) : "cr0");
return !__rtn;
}
+#endif
/* Return nonzero if LOCK is locked. */
+int __spin_lock_locked (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__spin_lock_locked (__spin_lock_t *__lock)
{
@@ -73,6 +84,7 @@
" : "=&r" (__rtn) : "r" (__lock) : "cr0");
return __rtn;
}
+#endif
#endif /* machine-lock.h */
Index: sysdeps/mach/powerpc/machine-sp.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/mach/powerpc/machine-sp.h,v
retrieving revision 1.3
--- sysdeps/mach/powerpc/machine-sp.h 17 Mar 2007 17:04:09 -0000 1.3
+++ sysdeps/mach/powerpc/machine-sp.h 29 Nov 2007 00:07:41 -0000
@@ -31,6 +31,9 @@
# endif
#endif
+void * __thread_stack_pointer (void);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void *
__thread_stack_pointer (void)
{
@@ -38,5 +41,6 @@
__asm__ ("mr %0, 1" : "=r" (__sp__));
return __sp__;
}
+#endif
#endif /* machine-sp.h */