From e7c5513dcd240d468812b11fda8eaba404ea082c Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 21 Sep 1998 14:34:13 +0000 Subject: Update. 1998-09-21 10:00 Ulrich Drepper * string/bits/string2.h: Add mempcpy optimization. * sysdeps/generic/mempcpy.c: Undefined __mempcpy. * intl/localealias.c: Define mempcpy only if not already defined. * sysdeps/i386/i486/bits/string.h: Define ffsl only if not already defined. 1998-09-20 10:48 -0400 Zack Weinberg * csu/abi-note.S: Emit the note directly instead of defining a preprocessor macro that's only used once. Don't include sysdep.h. * abi-tags: Generalize Solaris entry. 1998-09-18 Andreas Schwab * sysdeps/unix/bsd/getpt.c (__libc_ptyname1, __libc_ptyname2): Change to array to avoid runtime relocation. * sysdeps/unix/sysv/linux/ptsname.c: Update declarations. 1998-09-21 12:22 Andreas Schwab * malloc/Makefile ($(objpfx)libmcheck.a): Fix use of $(LN_S). * math/Makefile ($(objpfx)libieee.a): Likewise. 1998-09-21 Ulrich Drepper * sysdeps/generic/getpt.c: Fix order of argument to weak_alias. Patch by John Tobey . --- sysdeps/generic/getpt.c | 2 +- sysdeps/generic/mempcpy.c | 3 ++- sysdeps/i386/i486/bits/string.h | 4 +++- sysdeps/unix/bsd/getpt.c | 25 ++++++++++++------------- sysdeps/unix/sysv/linux/ptsname.c | 12 ++++++------ 5 files changed, 24 insertions(+), 22 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/generic/getpt.c b/sysdeps/generic/getpt.c index 6dee1e1..4260d5f 100644 --- a/sysdeps/generic/getpt.c +++ b/sysdeps/generic/getpt.c @@ -28,7 +28,7 @@ __getpt () __set_errno (ENOSYS); return -1; } -weak_alias (getpt, __getpt) +weak_alias (__getpt, getpt) stub_warning (getpt) #include diff --git a/sysdeps/generic/mempcpy.c b/sysdeps/generic/mempcpy.c index 4387340..6117e15 100644 --- a/sysdeps/generic/mempcpy.c +++ b/sysdeps/generic/mempcpy.c @@ -1,7 +1,7 @@ /* Copy memory to memory until the specified number of bytes has been copied, return pointer to following byte. Overlap is NOT handled correctly. - Copyright (C) 1991, 1997 Free Software Foundation, Inc. + Copyright (C) 1991, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Torbjorn Granlund (tege@sics.se). @@ -25,6 +25,7 @@ #include #undef mempcpy +#undef __mempcpy void * __mempcpy (dstpp, srcpp, len) diff --git a/sysdeps/i386/i486/bits/string.h b/sysdeps/i386/i486/bits/string.h index 134f117..9c4bb52 100644 --- a/sysdeps/i386/i486/bits/string.h +++ b/sysdeps/i386/i486/bits/string.h @@ -1582,7 +1582,9 @@ __strstr_g (__const char *__haystack, __const char *__needle) : "rm" (word), "1" (-1)); \ __cnt + 1; })) -# define ffsl(word) ffs(word) +# ifndef ffsl +# define ffsl(word) ffs(word) +# endif # endif /* i686 */ #endif /* BSD || X/Open */ diff --git a/sysdeps/unix/bsd/getpt.c b/sysdeps/unix/bsd/getpt.c index ec339c8..55d87fa 100644 --- a/sysdeps/unix/bsd/getpt.c +++ b/sysdeps/unix/bsd/getpt.c @@ -31,13 +31,13 @@ #ifndef PTYNAME1 #define PTYNAME1 "pqrsPQRS" #endif -const char *__libc_ptyname1 = PTYNAME1; +const char __libc_ptyname1[] = PTYNAME1; /* Letters indicating the position within a series. */ #ifndef PTYNAME2 #define PTYNAME2 "0123456789abcdefghijklmnopqrstuv"; #endif -const char *__libc_ptyname2 = PTYNAME2; +const char __libc_ptyname2[] = PTYNAME2; /* Open a master pseudo terminal and return its file descriptor. */ @@ -47,32 +47,31 @@ __getpt (void) char buf[sizeof (_PATH_PTY) + 2]; const char *p, *q; char *s; - - s = __stpcpy (buf, _PATH_PTY); - s[0] = '?'; - s[1] = '?'; - s[2] = 0; - for (p = __libc_ptyname1; *p; p++) + s = __mempcpy (buf, _PATH_PTY, sizeof (_PATH_PTY) - 1); + /* s[0] and s[1] will be filled in the loop. */ + s[2] = '\0'; + + for (p = __libc_ptyname1; *p != '\0'; ++p) { s[0] = *p; - for (q = __libc_ptyname2; *q; q++) + for (q = __libc_ptyname2; *q != '\0'; ++q) { int fd; - + s[1] = *q; - + fd = __open (buf, O_RDWR); if (fd != -1) { if (__isatty (fd)) return fd; - + __close (fd); continue; } - + if (errno != EIO) return -1; } diff --git a/sysdeps/unix/sysv/linux/ptsname.c b/sysdeps/unix/sysv/linux/ptsname.c index 048ac96..d852fb3 100644 --- a/sysdeps/unix/sysv/linux/ptsname.c +++ b/sysdeps/unix/sysv/linux/ptsname.c @@ -33,8 +33,8 @@ #define _PATH_DEVPTS "/dev/pts/" /* The are declared in getpt.c. */ -extern const char *__libc_ptyname1; -extern const char *__libc_ptyname2; +extern const char __libc_ptyname1[]; +extern const char __libc_ptyname2[]; /* Static buffer for `ptsname'. */ static char buffer[sizeof (_PATH_DEVPTS) + 20]; @@ -59,7 +59,7 @@ __ptsname_r (int fd, char *buf, size_t buflen) int save_errno = errno; struct stat st; int ptyno; - + if (buf == NULL) { __set_errno (EINVAL); @@ -97,7 +97,7 @@ __ptsname_r (int fd, char *buf, size_t buflen) #endif { char *p; - + if (buflen < strlen (_PATH_TTY) + 3) { __set_errno (ERANGE); @@ -116,13 +116,13 @@ __ptsname_r (int fd, char *buf, size_t buflen) __set_errno (ENOTTY); return ENOTTY; } - + p = __stpcpy (buf, _PATH_TTY); p[0] = __libc_ptyname1[ptyno / 16]; p[1] = __libc_ptyname2[ptyno % 16]; p[2] = '\0'; } - + if (__stat (buf, &st) < 0) return errno; -- cgit v1.1