summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-02-27 08:01:47 +0000
committerUlrich Drepper <drepper@redhat.com>2003-02-27 08:01:47 +0000
commitd148ed257ab179a6a408bc1668e2effb447726bd (patch)
treedc1c20da057af92f4170187c6bbf0959a1afe1ea
parent695799feb3e640323ec86b469517f87ca16e99ff (diff)
Update.
2003-02-27 Ulrich Drepper <drepper@redhat.com> * sunrpc/svc_udp.c (svcudp_recv): Remove all control messages except the PKTINFO. Reset interface in PKTINFO. * elf/elf.h: Add new R_PPC64_* relocs for TLS. * elf/tls-macros.h [__powerpc64__] (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define. * sysdeps/powerpc/elf/libc-start.c (__libc_start_main):
-rw-r--r--ChangeLog13
-rw-r--r--nptl/Makefile3
-rw-r--r--nptl/tst-rwlock10.c21
-rw-r--r--nptl/tst-rwlock11.c21
-rw-r--r--nptl/tst-rwlock8.c6
-rw-r--r--nptl/tst-rwlock9.c6
-rw-r--r--sunrpc/svc_udp.c24
7 files changed, 86 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index ff2f042abe..b39b087d49 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,14 +1,19 @@
+2003-02-27 Ulrich Drepper <drepper@redhat.com>
+
+ * sunrpc/svc_udp.c (svcudp_recv): Remove all control messages
+ except the PKTINFO. Reset interface in PKTINFO.
+
2003-02-25 Steven Munroe <sjmunroe@us.ibm.com>
- * elf/elf.h: Add new R_PPC64_* relocs for TLS.
- * elf/tls-macros.h [__powerpc64__]
- (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define.
+ * elf/elf.h: Add new R_PPC64_* relocs for TLS.
+ * elf/tls-macros.h [__powerpc64__] (TLS_LE, TLS_IE, TLS_LD, TLS_GD):
+ Define.
* sysdeps/powerpc/powerpc64/elf/configure.in: New file.
* sysdeps/powerpc/powerpc64/elf/configure: New file (generated).
* sysdeps/powerpc/powerpc64/dl-machine.h: Support new TLS relocs.
* sysdeps/powerpc/powerpc64/dl-tls.h: New file.
- * sysdeps/powerpc/elf/libc-start.c (__libc_start_main):
+ * sysdeps/powerpc/elf/libc-start.c (__libc_start_main):
Do DL_SYSDEP_OSCHECK here, matching 2002-12-01 change to generic file.
2003-02-25 Andreas Jaeger <aj@suse.de>
diff --git a/nptl/Makefile b/nptl/Makefile
index 446103a6cc..46575452e2 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -132,7 +132,8 @@ tests = tst-attr1 tst-attr2 \
tst-cond1 tst-cond2 tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 \
tst-cond8 tst-cond9 \
tst-rwlock1 tst-rwlock2 tst-rwlock3 tst-rwlock4 tst-rwlock5 \
- tst-rwlock6 tst-rwlock7 tst-rwlock8 tst-rwlock9 \
+ tst-rwlock6 tst-rwlock7 tst-rwlock8 tst-rwlock9 tst-rwlock10 \
+ tst-rwlock11 \
tst-once1 tst-once2 tst-once3 tst-once4 \
tst-key1 tst-key2 tst-key3 tst-key4 \
tst-sem1 tst-sem2 tst-sem3 tst-sem4 tst-sem5 \
diff --git a/nptl/tst-rwlock10.c b/nptl/tst-rwlock10.c
new file mode 100644
index 0000000000..43156eae66
--- /dev/null
+++ b/nptl/tst-rwlock10.c
@@ -0,0 +1,21 @@
+/* Test program for timedout read/write lock functions.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ 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. */
+
+#define INIT PTHREAD_RWLOCK_INITIALIZER
+#include "tst-rwlock8.c"
diff --git a/nptl/tst-rwlock11.c b/nptl/tst-rwlock11.c
new file mode 100644
index 0000000000..ed9af7edc1
--- /dev/null
+++ b/nptl/tst-rwlock11.c
@@ -0,0 +1,21 @@
+/* Test program for timedout read/write lock functions.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ 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. */
+
+#define INIT PTHREAD_RWLOCK_INITIALIZER
+#include "tst-rwlock9.c"
diff --git a/nptl/tst-rwlock8.c b/nptl/tst-rwlock8.c
index ad433bb4a5..7eeaea8852 100644
--- a/nptl/tst-rwlock8.c
+++ b/nptl/tst-rwlock8.c
@@ -33,7 +33,11 @@
#define DELAY 1000000
-static pthread_rwlock_t lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP;
+#ifndef INIT
+# define INIT PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP
+#endif
+
+static pthread_rwlock_t lock = INIT;
static void *
diff --git a/nptl/tst-rwlock9.c b/nptl/tst-rwlock9.c
index 5b6b3001b2..adbf67224d 100644
--- a/nptl/tst-rwlock9.c
+++ b/nptl/tst-rwlock9.c
@@ -35,7 +35,11 @@
#define TIMEOUT 1000000
#define DELAY 1000000
-static pthread_rwlock_t lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP;
+#ifndef INIT
+# define INIT PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP
+#endif
+
+static pthread_rwlock_t lock = INIT;
static void *
diff --git a/sunrpc/svc_udp.c b/sunrpc/svc_udp.c
index 0410e9c008..cb1d70558e 100644
--- a/sunrpc/svc_udp.c
+++ b/sunrpc/svc_udp.c
@@ -258,7 +258,29 @@ again:
- sizeof (struct iovec) - sizeof (struct msghdr);
rlen = __recvmsg (xprt->xp_sock, mesgp, 0);
if (rlen >= 0)
- len = mesgp->msg_namelen;
+ {
+ struct cmsghdr *cmsg;
+ len = mesgp->msg_namelen;
+ cmsg = CMSG_FIRSTHDR (mesgp);
+ if (cmsg == NULL
+ || CMSG_NXTHDR (mesgp, cmsg) != NULL
+ || cmsg->cmsg_level != SOL_IP
+ || cmsg->cmsg_type != IP_PKTINFO
+ || cmsg->cmsg_len < (sizeof (struct cmsghdr)
+ + sizeof (struct in_pktinfo)))
+ {
+ /* Not a simple IP_PKTINFO, ignore it. */
+ mesgp->msg_control = NULL;
+ mesgp->msg_controllen = 0;
+ }
+ else
+ {
+ /* It was a simple IP_PKTIFO as we expected, discard the
+ interface field. */
+ struct in_pktinfo *pkti = CMSG_DATA (cmsg);
+ pkti->ipi_ifindex = 0;
+ }
+ }
}
else
#endif