aboutsummaryrefslogtreecommitdiff
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 7b04fbf..26002be 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 296d55d..8bf6264 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 6ef2301..50f08d2 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 93cff5c..802c032 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 0399e39..bad37f2 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 1d98de9..3959e5d 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