reopen 162576 thanks Too quick on the trigger finger, Ben.
On Fri, Sep 27, 2002 at 09:18:27AM -0500, Debian Bug Tracking System wrote: > On Fri, Sep 27, 2002 at 08:55:30PM +1000, [EMAIL PROTECTED] wrote: > > Package: libc6-dev > > Version: 2.2.5-14.3 > > Severity: minor > > > > bits/errno.h defines errno to be a function call even when the application > > has no need for threads at all. This definition should be made conditional > > so that non-threaded programs do not suffer the overhead of the function > > call. > > How do you figure? > > # ifndef __ASSEMBLER__ > /* We now need a declaration of the `errno' variable. */ > extern int errno; > > /* Function to get address of global `errno' variable. */ > extern int *__errno_location (void) __THROW __attribute__ ((__const__)); > > # if defined _LIBC > /* We wouldn't need a special macro anymore but it is history. */ > # define __set_errno(val) (*__errno_location ()) = (val) > # endif /* _LIBC */ > > # if !defined _LIBC || defined _LIBC_REENTRANT > /* When using threads, errno is a per-thread value. */ > # define errno (*__errno_location ()) > # endif > # endif /* !__ASSEMBLER__ */ > > Clearly it only gets defined as (*__errno_location ()) if we are not > _LIBC (not the case for us ever) or _LIBC_REENTRANT is defined. > > Now, -D_REENTRANT does not assume threads, but it does assume thread > safe, so the definition is perfectly normal in that case (e.g. a module > or library that does not use threads, being usable by a threaded program > should use this). I don't think this is a bug at all. _LIBC is only defined when _BUILDING_ glibc. And _LIBC_REENTRANT != _REENTRANT. Any application code will have !_LIBC. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

