aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog28
-rw-r--r--linuxthreads/Examples/ex10.c5
-rw-r--r--linuxthreads/internals.h2
-rw-r--r--linuxthreads/pthread.c2
-rw-r--r--localedata/gen-locale.sh30
-rw-r--r--login/programs/utmpdump.c2
-rw-r--r--sysdeps/generic/ifreq.h5
-rw-r--r--sysdeps/generic/utimes.c4
-rw-r--r--sysdeps/powerpc/bits/setjmp.h19
-rw-r--r--sysdeps/powerpc/bits/wordsize.h7
-rw-r--r--sysdeps/powerpc/fpu/bits/mathinline.h6
-rw-r--r--sysdeps/pthread/configure (renamed from linuxthreads/sysdeps/unix/sysv/linux/configure)0
-rw-r--r--sysdeps/unix/sysv/linux/ifreq.h9
13 files changed, 86 insertions, 33 deletions
diff --git a/ChangeLog b/ChangeLog
index ff564d6f9e..b6f50822e1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2002-09-20 Steven Munroe <sjmunroe@us.ibm.com>
+
+ * sysdeps/powerpc/bits/setjmp.h [__WORDSIZE]: Add 64-bit jmpbuf.
+ * sysdeps/powerpc/bits/wordsize.h: New file.
+ * sysdeps/powerpc/fpu/bits/mathinline.h (lrint, lrintf): Change long
+ array to int array for 32-/64-bit compatibility.
+
+2002-09-20 Roland McGrath <roland@redhat.com>
+
+ * login/programs/utmpdump.c: Don't include <error.h>, <errno.h>.
+
+ * sysdeps/generic/utimes.c (__utimes): Don't check TVP for null.
+ Reported by Bruno Haible <bruno@clisp.org>.
+
+ * sysdeps/generic/ifreq.h (__ifreq): Compute termination condition
+ before doubling RQ_LEN.
+ * sysdeps/unix/sysv/linux/ifreq.h (__ifreq): Likewise.
+ Reported by Bruno Haible <bruno@clisp.org>.
+
+2002-09-18 Bruno Haible <bruno@clisp.org>
+
+ * login/logout.c (logout): Don't assume ut_time has the same size as
+ a time_t.
+ * login/logwtmp.c (logwtmp): Likewise.
+
+ * sysdeps/pthread/configure: New file, moved here from
+ linuxthreads/sysdeps/unix/sysv/linux/configure.
+
2002-09-19 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/_exit.c: Include <errno.h>.
diff --git a/linuxthreads/Examples/ex10.c b/linuxthreads/Examples/ex10.c
index eee00fa29e..f3ad517283 100644
--- a/linuxthreads/Examples/ex10.c
+++ b/linuxthreads/Examples/ex10.c
@@ -62,6 +62,7 @@ thread (void *arg)
for (;;)
{
+ int err;
clock_gettime (CLOCK_REALTIME, &ts);
@@ -72,7 +73,7 @@ thread (void *arg)
ts.tv_nsec -= 1000000000L;
}
- switch (pthread_mutex_timedlock (&mutex, &ts))
+ switch ((err = pthread_mutex_timedlock (&mutex, &ts)))
{
case 0:
flockfile (stdout);
@@ -86,6 +87,8 @@ thread (void *arg)
(unsigned long) self);
funlockfile (stdout);
continue;
+ default:
+ error (EXIT_FAILURE, err, "pthread_mutex_timedlock failure");
}
break;
}
diff --git a/linuxthreads/internals.h b/linuxthreads/internals.h
index 64fb6bb602..58a60fffc2 100644
--- a/linuxthreads/internals.h
+++ b/linuxthreads/internals.h
@@ -264,7 +264,7 @@ extern void __pthread_destroy_specifics (void);
extern void __pthread_perform_cleanup (char *currentframe);
extern void __pthread_init_max_stacksize (void);
extern int __pthread_initialize_manager (void);
-extern void __pthread_message (char * fmt, ...);
+extern void __pthread_message (const char * fmt, ...);
extern int __pthread_manager (void *reqfd);
extern int __pthread_manager_event (void *reqfd);
extern void __pthread_manager_sighandler (int sig);
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c
index 9713fb5efd..69f7634396 100644
--- a/linuxthreads/pthread.c
+++ b/linuxthreads/pthread.c
@@ -1306,7 +1306,7 @@ __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstime)
#ifdef DEBUG
#include <stdarg.h>
-void __pthread_message(char * fmt, ...)
+void __pthread_message(const char * fmt, ...)
{
char buffer[1024];
va_list args;
diff --git a/localedata/gen-locale.sh b/localedata/gen-locale.sh
index edd0e89ca0..9e411c1cd8 100644
--- a/localedata/gen-locale.sh
+++ b/localedata/gen-locale.sh
@@ -1,6 +1,6 @@
#! /bin/sh
# Generate test locale files.
-# Copyright (C) 2000-2001 Free Software Foundation, Inc.
+# Copyright (C) 2000,01,02 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
#
@@ -25,18 +25,22 @@ locfile="$1"; shift
generate_locale ()
{
- charmap=$1
- input=$2
- out=$3
- I18NPATH=. GCONV_PATH=${common_objpfx}iconvdata \
- ${localedef} --quiet -c -f $charmap -i $input \
- ${common_objpfx}localedata/$out
-
- if [ $? -ne 0 ]; then
- echo "Charmap: \"${charmap}\" Inputfile: \"${input}\"" \
- "Outputdir: \"${out}\" failed"
- exit 1
- fi
+ charmap=$1
+ input=$2
+ out=$3
+ if I18NPATH=. GCONV_PATH=${common_objpfx}iconvdata \
+ ${localedef} --quiet -c -f $charmap -i $input \
+ ${common_objpfx}localedata/$out
+ then
+ # The makefile checks the timestamp of the LC_CTYPE file,
+ # but localedef won't have touched it if it was able to
+ # hard-link it to an existing file.
+ touch ${common_objpfx}localedata/$out/LC_CTYPE
+ else
+ echo "Charmap: \"${charmap}\" Inputfile: \"${input}\"" \
+ "Outputdir: \"${out}\" failed"
+ exit 1
+ fi
}
locfile=`echo $locfile|sed 's|.*/\([^/]*/LC_CTYPE\)|\1|'`
diff --git a/login/programs/utmpdump.c b/login/programs/utmpdump.c
index 6d19225d07..d1b5da235c 100644
--- a/login/programs/utmpdump.c
+++ b/login/programs/utmpdump.c
@@ -18,8 +18,6 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <errno.h>
-#include <error.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
diff --git a/sysdeps/generic/ifreq.h b/sysdeps/generic/ifreq.h
index c96d1c8789..f750065cd3 100644
--- a/sysdeps/generic/ifreq.h
+++ b/sysdeps/generic/ifreq.h
@@ -44,10 +44,10 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
}
ifc.ifc_buf = NULL;
- rq_len = RQ_IFS * sizeof (struct ifreq);
+ rq_len = RQ_IFS * sizeof (struct ifreq) / 2; /* Doubled in the loop. */
do
{
- ifc.ifc_len = rq_len;
+ ifc.ifc_len = rq_len *= 2;
ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
{
@@ -60,7 +60,6 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
*ifreqs = NULL;
return;
}
- rq_len *= 2;
}
while (rq_len < sizeof (struct ifreq) + ifc.ifc_len);
diff --git a/sysdeps/generic/utimes.c b/sysdeps/generic/utimes.c
index 67dd16c51b..e4a6f0427f 100644
--- a/sysdeps/generic/utimes.c
+++ b/sysdeps/generic/utimes.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,95,96,97,2000,02 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -27,7 +27,7 @@ __utimes (file, tvp)
const char *file;
const struct timeval tvp[2];
{
- if (file == NULL || tvp == NULL)
+ if (file == NULL)
{
__set_errno (EINVAL);
return -1;
diff --git a/sysdeps/powerpc/bits/setjmp.h b/sysdeps/powerpc/bits/setjmp.h
index b53cdea3b2..3a0a0a0d61 100644
--- a/sysdeps/powerpc/bits/setjmp.h
+++ b/sysdeps/powerpc/bits/setjmp.h
@@ -31,14 +31,25 @@
# define JB_GPR1 0 /* Also known as the stack pointer */
# define JB_GPR2 1
# define JB_LR 2 /* The address we will return to */
-# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */
-# define JB_CR 21 /* Condition code registers. */
-# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */
-# define JB_SIZE (58*4)
+# if __WORDSIZE == 64
+# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18*2 words total. */
+# define JB_CR 21 /* Condition code registers. */
+# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
+# define JB_SIZE (40*8)
+# else
+# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total. */
+# define JB_CR 21 /* Condition code registers. */
+# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
+# define JB_SIZE (58*4)
+# endif
#endif
#ifndef _ASM
+# if __WORDSIZE == 64
+typedef long int __jmp_buf[40];
+# else
typedef long int __jmp_buf[58];
+# endif
#endif
/* Test if longjmp to JMPBUF would unwind the frame
diff --git a/sysdeps/powerpc/bits/wordsize.h b/sysdeps/powerpc/bits/wordsize.h
new file mode 100644
index 0000000000..d856583cbf
--- /dev/null
+++ b/sysdeps/powerpc/bits/wordsize.h
@@ -0,0 +1,7 @@
+/* Determine the wordsize from the preprocessor defines. */
+
+#if defined __powerpc64__
+# define __WORDSIZE 64
+#else
+# define __WORDSIZE 32
+#endif
diff --git a/sysdeps/powerpc/fpu/bits/mathinline.h b/sysdeps/powerpc/fpu/bits/mathinline.h
index 2fc9146f45..34309c1a68 100644
--- a/sysdeps/powerpc/fpu/bits/mathinline.h
+++ b/sysdeps/powerpc/fpu/bits/mathinline.h
@@ -63,8 +63,8 @@ __MATH_INLINE long int
lrint (double __x) __THROW
{
union {
- double __d;
- long int __ll[2];
+ double __d;
+ int __ll[2];
} __u;
__asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
return __u.__ll[1];
@@ -76,7 +76,7 @@ lrintf (float __x) __THROW
{
union {
double __d;
- long int __ll[2];
+ int __ll[2];
} __u;
__asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
return __u.__ll[1];
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/configure b/sysdeps/pthread/configure
index 229414dd74..229414dd74 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/pthread/configure
diff --git a/sysdeps/unix/sysv/linux/ifreq.h b/sysdeps/unix/sysv/linux/ifreq.h
index 216c1f3373..9d42664444 100644
--- a/sysdeps/unix/sysv/linux/ifreq.h
+++ b/sysdeps/unix/sysv/linux/ifreq.h
@@ -26,7 +26,7 @@
#include "kernel-features.h"
/* Variable to signal whether SIOCGIFCONF is not available. */
-#if __ASSUME_SIOCGIFNAME == 0
+#if __ASSUME_SIOCGIFNAME == 0 || 1
static int old_siocgifconf;
#else
# define old_siocgifconf 0
@@ -73,7 +73,7 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
rq_len = RQ_IFS * sizeof (struct ifreq);
/* Read all the interfaces out of the kernel. */
- do
+ while (1)
{
ifc.ifc_len = rq_len;
ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
@@ -89,9 +89,12 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
*ifreqs = NULL;
return;
}
+
+ if (!old_siocgifconf || ifc.ifc_len < rq_len)
+ break;
+
rq_len *= 2;
}
- while (ifc.ifc_len == rq_len && old_siocgifconf);
nifs = ifc.ifc_len / sizeof (struct ifreq);