aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@schwinge.name>2012-05-10 12:43:01 -0700
committerRoland McGrath <roland@hack.frob.com>2012-05-10 15:57:22 -0700
commit6f080c2fcffac1bb8626b8d143dba57a37abb071 (patch)
tree23aa88a0084d4e5e89ff441d8250708173dc59df
parentbcfe3a546e831ff3e43a8782f65a95fab7bb864d (diff)
downloadtermbaud-6f080c2fcffac1bb8626b8d143dba57a37abb071.tar.gz
termbaud-6f080c2fcffac1bb8626b8d143dba57a37abb071.tar.xz
termbaud-6f080c2fcffac1bb8626b8d143dba57a37abb071.zip
Hurd: O_CLOEXEC in rtld
-rw-r--r--ChangeLog8
-rw-r--r--hurd/hurd/fd.h6
-rw-r--r--hurd/intern-fd.c4
-rw-r--r--hurd/port2fd.c4
-rw-r--r--sysdeps/mach/hurd/dl-sysdep.c5
5 files changed, 17 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 11ca6b7073f..bd66d5a0eb1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2012-05-10 Thomas Schwinge <thomas@schwinge.name>
+
+ * sysdeps/mach/hurd/dl-sysdep.c (open_file): Do not raise
+ assertion on O_CLOEXEC flag.
+ * hurd/hurd/fd.h: Update comment to mention O_CLOEXEC.
+ * hurd/intern-fd.c: Likewise.
+ * hurd/port2fd.c: Likewise.
+
2012-05-10 Samuel Thibault <samuel.thibault@ens-lyon.org>
[BZ #3906]
diff --git a/hurd/hurd/fd.h b/hurd/hurd/fd.h
index 5f3ee6a8c96..5044f977fb5 100644
--- a/hurd/hurd/fd.h
+++ b/hurd/hurd/fd.h
@@ -1,6 +1,5 @@
/* File descriptors.
- Copyright (C) 1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2006,2007
- Free Software Foundation, Inc.
+ Copyright (C) 1993-2012 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
@@ -199,7 +198,8 @@ extern void _hurd_port2fd (struct hurd_fd *fd, io_t port, int flags);
/* Allocate a new file descriptor and install PORT in it (doing any
appropriate ctty magic); consumes a user reference on PORT. FLAGS are
- as for `open'; only O_IGNORE_CTTY is meaningful, but all are saved.
+ as for `open'; only O_IGNORE_CTTY and O_CLOEXEC are meaningful, but all are
+ saved.
If the descriptor table is full, set errno, and return -1.
If DEALLOC is nonzero, deallocate PORT first. */
diff --git a/hurd/intern-fd.c b/hurd/intern-fd.c
index 52e0606c966..ac891739422 100644
--- a/hurd/intern-fd.c
+++ b/hurd/intern-fd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2012 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
@@ -19,7 +19,7 @@
#include <hurd/fd.h>
/* Allocate a new file descriptor and install PORT in it. FLAGS are as for
- `open'; only O_IGNORE_CTTY is meaningful.
+ `open'; only O_IGNORE_CTTY and O_CLOEXEC are meaningful.
If the descriptor table is full, set errno, and return -1.
If DEALLOC is nonzero, deallocate PORT first. */
diff --git a/hurd/port2fd.c b/hurd/port2fd.c
index bef07ad3bf8..451d6306e7b 100644
--- a/hurd/port2fd.c
+++ b/hurd/port2fd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997, 1999, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2012 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
@@ -22,7 +22,7 @@
#include <fcntl.h>
/* Store PORT in file descriptor D, doing appropriate ctty magic.
- FLAGS are as for `open'; only O_IGNORE_CTTY is meaningful.
+ FLAGS are as for `open'; only O_IGNORE_CTTY and O_CLOEXEC are meaningful.
D should be locked, and will not be unlocked. */
void
diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
index d928cd24788..26a212ef988 100644
--- a/sysdeps/mach/hurd/dl-sysdep.c
+++ b/sysdeps/mach/hurd/dl-sysdep.c
@@ -1,6 +1,5 @@
/* Operating system support for run-time dynamic linker. Hurd version.
- Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2010
- Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 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
@@ -315,7 +314,7 @@ open_file (const char *file_name, int flags,
return MACH_PORT_NULL;
}
- assert (!(flags & ~O_READ));
+ assert (!(flags & ~(O_READ | O_CLOEXEC)));
startdir = _dl_hurd_data->portarray[file_name[0] == '/' ?
INIT_PORT_CRDIR : INIT_PORT_CWDIR];