mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-18 14:30:43 +08:00
2002-03-11 Roland McGrath <roland@frob.com>
* Versions.def (libc): Add GLIBC_2.2.6. * hurd/Versions (libc: GLIBC_2.2.6): Add __errno_location. * sysdeps/mach/hurd/errnos.awk: In generated macro, use __errno_location instead of __hurd_errno_location, and don't inline it. * sysdeps/mach/hurd/bits/errno.h: Regenerated. * hurd/errno.c: New file. * hurd/Makefile (routines): Add errno.
This commit is contained in:
parent
00eaa2ecf4
commit
2fbe9636ac
@ -14,6 +14,7 @@ libc {
|
||||
GLIBC_2.2.3
|
||||
GLIBC_2.2.4
|
||||
GLIBC_2.2.5
|
||||
GLIBC_2.2.6
|
||||
%ifdef USE_IN_LIBIO
|
||||
HURD_CTHREADS_0.3
|
||||
%endif
|
||||
|
@ -59,6 +59,7 @@ routines = hurdstartup hurdinit \
|
||||
fopenport \
|
||||
vpprintf \
|
||||
ports-get ports-set hurdports hurdmsg \
|
||||
errno \
|
||||
$(sig) $(dtable) $(inlines) port-cleanup report-wait
|
||||
sig = hurdsig hurdfault siginfo hurd-raise preempt-sig \
|
||||
trampoline longjmp-ts catch-exc exc2signal hurdkill sigunwind \
|
||||
|
@ -22,6 +22,9 @@ libc {
|
||||
# cthreads functions with stubs in libc
|
||||
cthread_keycreate; cthread_getspecific; cthread_setspecific;
|
||||
__libc_getspecific;
|
||||
|
||||
# weak refs to libthreads functions that libc calls iff libthreads in use
|
||||
cthread_fork; cthread_detach;
|
||||
%endif
|
||||
|
||||
# necessary for the Hurd brk implementation
|
||||
@ -124,11 +127,6 @@ libc {
|
||||
seteuids;
|
||||
}
|
||||
GLIBC_2.1.3 {
|
||||
%if SHLIB_COMPAT (libc, GLIBC_2_1_3, HURD_CTHREADS_0_3)
|
||||
# c*
|
||||
cthread_fork; cthread_detach;
|
||||
%endif
|
||||
|
||||
# d*
|
||||
directory_name_split;
|
||||
|
||||
@ -149,6 +147,10 @@ libc {
|
||||
_hurdsig_interrupt_timeout;
|
||||
_hurdsig_fault_preemptor; _hurdsig_fault_env;
|
||||
}
|
||||
GLIBC_2.2.6 {
|
||||
# functions used in macros & inline functions
|
||||
__errno_location;
|
||||
}
|
||||
|
||||
%if !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
|
||||
HURD_CTHREADS_0.3 {
|
||||
|
28
hurd/errno.c
Normal file
28
hurd/errno.c
Normal file
@ -0,0 +1,28 @@
|
||||
/* __errno_location -- helper function for locating per-thread errno value
|
||||
Copyright (C) 2002 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. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <hurd/threadvar.h>
|
||||
|
||||
int *
|
||||
__errno_location (void)
|
||||
{
|
||||
return (int *) __hurd_threadvar_location (_HURD_THREADVAR_ERRNO);
|
||||
}
|
||||
strong_alias (__errno_location, __hurd_errno_location)
|
@ -305,10 +305,12 @@ typedef enum __error_t_codes error_t;
|
||||
#define __error_t_defined 1
|
||||
#endif
|
||||
|
||||
/* errno is a per-thread variable. */
|
||||
#include <hurd/threadvar.h>
|
||||
#define errno (*__hurd_errno_location ())
|
||||
#define __set_errno(val) errno = (val)
|
||||
/* Return the current thread's location for `errno'.
|
||||
The syntax of this function allows redeclarations like `int errno'. */
|
||||
extern int *__errno_location (void) __THROW __attribute__ ((__const__));
|
||||
|
||||
#define errno (*__errno_location ())
|
||||
#define __set_errno(val) (errno = (val))
|
||||
|
||||
#endif /* <errno.h> included. */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user