From b112c02fa26967dc8d5aa26dcbe3701821eee6f1 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 17 Feb 1998 15:51:21 +0000 Subject: Update. 1998-02-17 Andreas Jaeger * math/libm.map: Move all symbols that are new in glibc 2.1 to version GLIBC_2.1. 1998-02-17 Ulrich Drepper * stdio-common/vfscanf.c (inchar): Check c for being EOF before trying to read another character. 1998-02-05 Andreas Jaeger * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Convert name to lowercase. * nis/nss_nis/nis-network.c (_nss_nis_getnetbyname_r): Convert name to lowercase, add test for big enough buffer. 1998-02-03 Andreas Jaeger * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S (rt_sigreturn): Make compatible with older kernels. Patch by Richard Henderson. --- ChangeLog | 23 ++++++++++ math/libm.map | 64 ++++++++++++++++------------ nis/nss_nis/nis-alias.c | 13 +++++- nis/nss_nis/nis-network.c | 25 +++++++++-- stdio-common/vfscanf.c | 8 ++-- sysdeps/unix/sysv/linux/alpha/rt_sigaction.S | 27 +++++++----- 6 files changed, 115 insertions(+), 45 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7b04fbfeda..26002be3c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +1998-02-17 Andreas Jaeger + + * math/libm.map: Move all symbols that are new in glibc 2.1 to + version GLIBC_2.1. + +1998-02-17 Ulrich Drepper + + * stdio-common/vfscanf.c (inchar): Check c for being EOF before + trying to read another character. + +1998-02-05 Andreas Jaeger + + * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Convert + name to lowercase. + + * nis/nss_nis/nis-network.c (_nss_nis_getnetbyname_r): Convert + name to lowercase, add test for big enough buffer. + +1998-02-03 Andreas Jaeger + + * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S (rt_sigreturn): + Make compatible with older kernels. Patch by Richard Henderson. + 1998-02-17 15:10 Ulrich Drepper * elf/dl-load.c (open_path): Use __xstat instead of stat. diff --git a/math/libm.map b/math/libm.map index 296d55d675..8bf62642a4 100644 --- a/math/libm.map +++ b/math/libm.map @@ -16,16 +16,11 @@ GLIBC_2.0 { drem; dremf; dreml; erf; erff; erfl; erfc; erfcf; erfcl; - exp2; exp2f; exp2l; exp; expf; expl; expm1; expm1f; expm1l; fabs; fabsf; fabsl; - fdim; fdimf; fdiml; finite; finitef; finitel; floor; floorf; floorl; - fma; fmaf; fmal; - fmax; fmaxf; fmaxl; - fmin; fminf; fminl; fmod; fmodf; fmodl; frexp; frexpf; frexpl; gamma; gammaf; gammal; @@ -40,39 +35,61 @@ GLIBC_2.0 { lgamma_r; lgammaf_r; lgammal_r; log10; log10f; log10l; log1p; log1pf; log1pl; - log2; log2f; log2l; log; logf; logl; logb; logbf; logbl; matherr; modf; modff; modfl; - nan; nanf; nanl; - nearbyint; nearbyintf; nearbyintl; nextafter; nextafterf; nextafterl; - nextafterx; nextafterxf; nextafterxl; pow; powf; powl; remainder; remainderf; remainderl; - remquo; remquof; remquol; rint; rintf; rintl; - lrint; lrintf; lrintl; - llrint; llrintf; llrintl; - round; roundf; roundl; - lround; lroundf; lroundl; - llround; llroundf; llroundl; scalb; scalbf; scalbl; scalbn; scalbnf; scalbnl; - scalbln; scalblnf; scalblnl; significand; significandf; significandl; sin; sinf; sinl; - sincos; sincosf; sincosl; sinh; sinhf; sinhl; sqrt; sqrtf; sqrtl; tan; tanf; tanl; tanh; tanhf; tanhl; - trunc; truncf; truncl; y0; y0f; y0l; y1; y1f; y1l; yn; ynf; ynl; + + # global variables + _LIB_VERSION; signgam; + + # functions used in inline functions or macros + __log1p; + + local: + *; +}; + + +GLIBC_2.1 { + global: + + # mathematical functions + exp2; exp2f; exp2l; + fdim; fdimf; fdiml; + fma; fmaf; fmal; + fmax; fmaxf; fmaxl; + fmin; fminf; fminl; + log2; log2f; log2l; + nan; nanf; nanl; + nearbyint; nearbyintf; nearbyintl; + nextafterx; nextafterxf; nextafterxl; + remquo; remquof; remquol; + lrint; lrintf; lrintl; + llrint; llrintf; llrintl; + round; roundf; roundl; + lround; lroundf; lroundl; + llround; llroundf; llroundl; + scalbln; scalblnf; scalblnl; + sincos; sincosf; sincosl; + trunc; truncf; truncl; + # complex functions cabs; cabsf; cabsl; cacos; cacosf; cacosl; @@ -105,19 +122,12 @@ GLIBC_2.0 { fesetenv; fesetexceptflag; fesetround; fetestexcept; feupdateenv; - # global variables - _LIB_VERSION; signgam; - # functions used in inline functions or macros + __finite; __finitef; __finitel; __fpclassify; __fpclassifyf; __fpclassifyl; __signbit; __signbitf; __signbitl; - __finite; __finitef; __finitel; - - __log1p; # symbols used in macros from sysdeps/powerpc/bits/fenv.h __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env; - local: - *; -}; +} GLIBC_2.0; diff --git a/nis/nss_nis/nis-alias.c b/nis/nss_nis/nis-alias.c index 6ef23012b8..50f08d2e0c 100644 --- a/nis/nss_nis/nis-alias.c +++ b/nis/nss_nis/nis-alias.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -228,6 +228,9 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, char *result; int len; char *p; + size_t namlen = strlen (name); + char name2[namlen + 1]; + int i; if (name == NULL) { @@ -238,8 +241,14 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, if (yp_get_default_domain (&domain)) return NSS_STATUS_UNAVAIL; - retval = yperr2nss (yp_match (domain, "mail.aliases", name, strlen (name), + /* Convert name to lowercase. */ + for (i = 0; i < namlen; ++i) + name2[i] = tolower (name[i]); + name2[i] = '\0'; + + retval = yperr2nss (yp_match (domain, "mail.aliases", name2, namlen, &result, &len)); + if (retval != NSS_STATUS_SUCCESS) { if (retval == NSS_STATUS_TRYAGAIN) diff --git a/nis/nss_nis/nis-network.c b/nis/nss_nis/nis-network.c index 93cff5ce93..802c03229e 100644 --- a/nis/nss_nis/nis-network.c +++ b/nis/nss_nis/nis-network.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -179,8 +179,27 @@ _nss_nis_getnetbyname_r (const char *name, struct netent *net, char *buffer, if (yp_get_default_domain (&domain)) return NSS_STATUS_UNAVAIL; - retval = yperr2nss (yp_match (domain, "networks.byname", name, - strlen (name), &result, &len)); + if (buflen < sizeof *data + 1) + { + *herrnop = NETDB_INTERNAL; + *errnop = ERANGE; + return NSS_STATUS_TRYAGAIN; + } + else + { + /* Convert name to lowercase. */ + size_t namlen = strlen (name); + char name2[namlen + 1]; + int i; + + for (i = 0; i < namlen; ++i) + name2[i] = tolower (name[i]); + name2[i] = '\0'; + + retval = yperr2nss (yp_match (domain, "networks.byname", name2, + namlen, &result, &len)); + } + if (retval != NSS_STATUS_SUCCESS) { diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c index 0399e39ef5..bad37f2ad1 100644 --- a/stdio-common/vfscanf.c +++ b/stdio-common/vfscanf.c @@ -57,8 +57,9 @@ # define va_list _IO_va_list # define ungetc(c, s) ((void) ((int) c != EOF && --read_in), \ _IO_ungetc (c, s)) -# define inchar() ((c = _IO_getc_unlocked (s)), \ - (void) (c != EOF && ++read_in), c) +# define inchar() (c == EOF ? EOF \ + : ((c = _IO_getc_unlocked (s)), \ + (void) (c != EOF && ++read_in), c)) # define encode_error() do { \ if (errp != NULL) *errp |= 4; \ _IO_funlockfile (s); \ @@ -102,7 +103,8 @@ # define UNLOCK_STREAM __libc_cleanup_region_end (1) #else # define ungetc(c, s) ((void) (c != EOF && --read_in), ungetc (c, s)) -# define inchar() ((c = getc (s)), (void) (c != EOF && ++read_in), c) +# define inchar() (c == EOF ? EOF \ + : (c = getc (s)), (void) (c != EOF && ++read_in), c) # define encode_error() do { \ funlockfile (s); \ __set_errno (EILSEQ); \ diff --git a/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S b/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S index 1d98de9695..3959e5d7df 100644 --- a/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S +++ b/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1998 Free Software Foundation, Inc. +/* Copyright (C) 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson , 1998 @@ -16,17 +16,17 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - + #include - + /* On Alpha we desparately want to avoid having to issue an imb. Ordinarily the kernel would have to issue one after setting up the signal return stack, but the Linux rt_sigaction syscall is prepared to accept a pointer - to the sigreturn syscall, instead of inlining it on the stack. - + to the sigreturn syscall, instead of inlining it on the stack. + This just about halves signal delivery time. */ - - + +#ifdef __NR_rt_sigaction .text ENTRY(__syscall_rt_sigaction) .frame sp,0,ra,0 @@ -38,7 +38,7 @@ ENTRY(__syscall_rt_sigaction) .set at #endif .prologue 1 - + beq a1, 0f ldl t0, 8(a1) # sa_flags lda a4, sigreturn-__syscall_rt_sigaction(pv) @@ -46,10 +46,10 @@ ENTRY(__syscall_rt_sigaction) and t0, 0x00000040, t0 # SA_SIGINFO cmovne t0, t1, a4 0: ldi v0,__NR_rt_sigaction - callsys + callsys bne a3,1f ret - + 1: #ifndef PROF br gp,2f @@ -76,3 +76,10 @@ rt_sigreturn: ldi v0,__NR_rt_sigreturn callsys .end rt_sigreturn +#else +ENTRY(__syscall_rt_sigaction) + ldgp $29,0($27) + ldi $0,ENOSYS + jmp __syscall_error +END(__syscall_rt_sigaction) +#endif -- cgit 1.4.1