aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-07-23 22:18:45 +0000
committerRoland McGrath <roland@gnu.org>1996-07-23 22:18:45 +0000
commitc7fd2f4783d87f29f89709e11dc613b0cb04f0dc (patch)
tree88088cc31588d432dc66541be24e890f040b1480
parentTue Jul 23 02:49:58 1996 Ulrich Drepper <drepper@cygnus.com> (diff)
downloadglibc-cvs/libc-960724.tar.gz
glibc-cvs/libc-960724.tar.bz2
glibc-cvs/libc-960724.zip
Tue Jul 23 18:13:37 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>cvs/libc-960725cvs/libc-960724
* sysdeps/mach/hurd/Makefile (rpcuserlibs): New variable. ($(common-objpfx)libc.so): Move deps into that, use it. [$(subdir) = elf] ($(objpfx)librtld.so): Depend on $(rpcuserlibs:.so=_pic.a). * elf/Makefile ($(objpfx)librtld.so): Just depend on libc_pic.a; don't use $(LDLIBS-c.so). Thu Jul 18 21:41:25 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/generic/stpncpy.c: Fix semantics to make `stpncpy (d, s, n)' equivalent to `strncpy (d, s, n), d += strnlen (d, n)'.
-rw-r--r--ChangeLog14
-rw-r--r--elf/Makefile4
-rw-r--r--sysdeps/generic/stpncpy.c28
-rw-r--r--sysdeps/mach/hurd/Makefile12
4 files changed, 39 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index bc4f32b235..ca0184bf05 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+Tue Jul 23 18:13:37 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
+
+ * sysdeps/mach/hurd/Makefile (rpcuserlibs): New variable.
+ ($(common-objpfx)libc.so): Move deps into that, use it.
+ [$(subdir) = elf] ($(objpfx)librtld.so): Depend on
+ $(rpcuserlibs:.so=_pic.a).
+ * elf/Makefile ($(objpfx)librtld.so): Just depend on libc_pic.a; don't
+ use $(LDLIBS-c.so).
+
+Thu Jul 18 21:41:25 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * sysdeps/generic/stpncpy.c: Fix semantics to make `stpncpy (d, s,
+ n)' equivalent to `strncpy (d, s, n), d += strnlen (d, n)'.
+
Tue Jul 23 02:49:58 1996 Ulrich Drepper <drepper@cygnus.com>
* locale/iso-4217.def: Add India to comment for symbol "INR ".
diff --git a/elf/Makefile b/elf/Makefile
index 3b3bd1457b..44c510ac43 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -70,9 +70,7 @@ $(objpfx)dl-allobjs.so: $(rtld-routines:%=$(objpfx)%.so)
# Link together the dynamic linker into a single relocatable object.
# We use this to produce both the ABI-compliant and Linux-compatible
# dynamic linker shared objects below.
-$(objpfx)librtld.so: $(objpfx)dl-allobjs.so \
- $(patsubst %,$(common-objpfx)lib%_pic.a,\
- c $(LDLIBS-c.so:-l%=%))
+$(objpfx)librtld.so: $(objpfx)dl-allobjs.so $(common-objpfx)libc_pic.a
$(reloc-link) '-Wl,-(' $^ -lgcc '-Wl,-)'
$(objpfx)ld.so: $(objpfx)librtld.so
diff --git a/sysdeps/generic/stpncpy.c b/sysdeps/generic/stpncpy.c
index 5cdd93d19e..427ed4b228 100644
--- a/sysdeps/generic/stpncpy.c
+++ b/sysdeps/generic/stpncpy.c
@@ -24,15 +24,13 @@ Cambridge, MA 02139, USA. */
/* Copy no more than N characters of SRC to DEST, returning the address of
- the last character written into DEST. */
+ the terminating '\0' in DEST, if any, or else DEST + N. */
char *
DEFUN(__stpncpy, (dest, src, n), char *dest AND CONST char *src AND size_t n)
{
reg_char c;
char *s = dest;
- --dest;
-
if (n >= 4)
{
size_t n4 = n >> 2;
@@ -40,27 +38,27 @@ DEFUN(__stpncpy, (dest, src, n), char *dest AND CONST char *src AND size_t n)
for (;;)
{
c = *src++;
- *++dest = c;
+ *dest++ = c;
if (c == '\0')
break;
c = *src++;
- *++dest = c;
+ *dest++ = c;
if (c == '\0')
break;
c = *src++;
- *++dest = c;
+ *dest++ = c;
if (c == '\0')
break;
c = *src++;
- *++dest = c;
+ *dest++ = c;
if (c == '\0')
break;
if (--n4 == 0)
goto last_chars;
}
- n = n - (dest - s) - 1;
+ n -= dest - s;
if (n == 0)
- return dest;
+ return dest - 1;
goto zero_fill;
}
@@ -69,20 +67,22 @@ DEFUN(__stpncpy, (dest, src, n), char *dest AND CONST char *src AND size_t n)
if (n == 0)
return dest;
- do
+ for (;;)
{
c = *src++;
- *++dest = c;
+ *dest++ = c;
+ if (c == '\0')
+ break;
if (--n == 0)
return dest;
}
- while (c != '\0');
+ --n;
zero_fill:
- while (n-- > 0)
+ while (--n > 0)
dest[n] = '\0';
- return dest;
+ return dest - 1;
}
weak_alias (__stpncpy, stpncpy)
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index 8b70092f5f..26446951cc 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -104,11 +104,19 @@ endif
# For the shared library, we don't need to do the linker script machination.
# Instead, we specify the required libraries when building the shared object.
-$(common-objpfx)libc.so: $(firstword $(objdir) $(..)mach)/libmachuser.so \
- $(firstword $(objdir) $(..)hurd)/libhurduser.so
+rpcuserlibs := $(firstword $(objdir) $(..)mach)/libmachuser.so \
+ $(firstword $(objdir) $(..)hurd)/libhurduser.so
+$(common-objpfx)libc.so: $(rpcuserlibs)
ifndef objpfx
rpath-link += $(..)mach:$(..)hurd
endif
+
+# The RPC stubs from these libraries are needed in building the dynamic
+# linker, too. It must be self-contained, so we link the needed PIC
+# objects directly into the shared object.
+ifeq (elf,$(subdir))
+$(objpfx)librtld.so: $(rpcuserlibs:.so=_pic.a)
+endif
endif # in-Makerules