about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog23
-rw-r--r--math/libm.map64
-rw-r--r--nis/nss_nis/nis-alias.c13
-rw-r--r--nis/nss_nis/nis-network.c25
-rw-r--r--stdio-common/vfscanf.c8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/rt_sigaction.S27
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  <aj@arthur.rhein-neckar.de>
+
+	* math/libm.map: Move all symbols that are new in glibc 2.1 to
+	version GLIBC_2.1.
+
+1998-02-17  Ulrich Drepper  <drepper@cygnus.com>
+
+	* stdio-common/vfscanf.c (inchar): Check c for being EOF before
+	trying to read another character.
+
+1998-02-05  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+	* 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  <aj@arthur.rhein-neckar.de>
+
+	* 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  <drepper@cygnus.com>
 
 	* 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 <kukuk@vt.uni-paderborn.de>, 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 <kukuk@vt.uni-paderborn.de>, 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 <rth@cygnus.com>, 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 <sysdep.h>
-	
+
 /* 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