about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-06-09 22:02:59 +0000
committerRoland McGrath <roland@gnu.org>1996-06-09 22:02:59 +0000
commit6d9756c910a07bb353af4d6908f88c1ddea15916 (patch)
tree772439fa7e24f4af9a9917a3c961108a246e96fe
parent9dd2fc5d87269219f3beb91462505b93ed24a552 (diff)
downloadglibc-6d9756c910a07bb353af4d6908f88c1ddea15916.tar.gz
glibc-6d9756c910a07bb353af4d6908f88c1ddea15916.tar.xz
glibc-6d9756c910a07bb353af4d6908f88c1ddea15916.zip
* elf/dl-load.c (_dl_map_object_from_fd): Close FD before return. cvs/libc-960610
	* sysdeps/mach/mprotect.c: Define with __ name and weak alias.
	* sysdeps/stub/mprotect.c: Likewise.
	* sysdeps/unix/mman/syscalls.list (mprotect): Likewise.
	* sysdeps/generic/sys/mman.h: Declare __mprotect.
	* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
-rw-r--r--ChangeLog11
-rw-r--r--elf/dl-load.c3
-rw-r--r--sysdeps/generic/sys/mman.h3
-rw-r--r--sysdeps/mach/mprotect.c5
-rw-r--r--sysdeps/stub/mprotect.c7
-rw-r--r--sysdeps/unix/bsd/osf/sys/mman.h3
-rw-r--r--sysdeps/unix/bsd/sun/sunos4/sys/mman.h3
-rw-r--r--sysdeps/unix/mman/syscalls.list2
-rw-r--r--sysdeps/unix/sysv/irix4/sys/mman.h3
-rw-r--r--sysdeps/unix/sysv/linux/sys/mman.h1
10 files changed, 31 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 69263cf3da..5c49c1ce07 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 Sun Jun  9 01:11:49 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
 
+	* elf/dl-load.c (_dl_map_object_from_fd): Close FD before return.
+
+	* sysdeps/mach/mprotect.c: Define with __ name and weak alias.
+	* sysdeps/stub/mprotect.c: Likewise.
+	* sysdeps/unix/mman/syscalls.list (mprotect): Likewise.
+	* sysdeps/generic/sys/mman.h: Declare __mprotect.
+	* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
+	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
+	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
+	* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
+
 	* Make-dist ($(tardir).tar): Use sed to check for file names longer
 	than 14 chars, instead of doschk which checks for other things we
 	don't care about.
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 1625d3cf5b..8103c7af2a 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -430,6 +430,9 @@ _dl_map_object_from_fd (const char *name, int fd, char *realname)
       }
   }
 
+  /* We are done mapping in the file.  We no longer need the descriptor.  */
+  __close (fd);
+
   l->l_type = type == ET_EXEC ? lt_executable : lt_library;
 
   if (l->l_ld == 0)
diff --git a/sysdeps/generic/sys/mman.h b/sysdeps/generic/sys/mman.h
index e9d69ec1ad..30f5fe4de7 100644
--- a/sysdeps/generic/sys/mman.h
+++ b/sysdeps/generic/sys/mman.h
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  Generic/4.4 BSD version.
-Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995, 1996 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
@@ -92,6 +92,7 @@ int munmap __P ((__caddr_t __addr, size_t __len));
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
+int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
diff --git a/sysdeps/mach/mprotect.c b/sysdeps/mach/mprotect.c
index 5f1dbe8b5c..9035d5b88c 100644
--- a/sysdeps/mach/mprotect.c
+++ b/sysdeps/mach/mprotect.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1996 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
@@ -26,7 +26,7 @@ Cambridge, MA 02139, USA.  */
    (and sets errno).  */
 
 int
-mprotect (caddr_t addr, size_t len, int prot)
+__mprotect (caddr_t addr, size_t len, int prot)
 {
   kern_return_t err;
   vm_prot_t vmprot;
@@ -48,3 +48,4 @@ mprotect (caddr_t addr, size_t len, int prot)
     }
   return 0;
 }
+weak_alias (__mprotect, mprotect)
diff --git a/sysdeps/stub/mprotect.c b/sysdeps/stub/mprotect.c
index 1d8c8f4ded..2626e4b4b8 100644
--- a/sysdeps/stub/mprotect.c
+++ b/sysdeps/stub/mprotect.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995, 1996 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
@@ -25,10 +25,11 @@ Cambridge, MA 02139, USA.  */
    (and sets errno).  */
 
 int
-mprotect (caddr_t addr, size_t len, int prot)
+__mprotect (caddr_t addr, size_t len, int prot)
 {
   errno = ENOSYS;
   return -1;
 }
-	
+weak_alias (__mprotect, mprotect)
+
 stub_warning (mprotect)
diff --git a/sysdeps/unix/bsd/osf/sys/mman.h b/sysdeps/unix/bsd/osf/sys/mman.h
index 397ad28535..fc148a6e65 100644
--- a/sysdeps/unix/bsd/osf/sys/mman.h
+++ b/sysdeps/unix/bsd/osf/sys/mman.h
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  OSF/1 version.
-Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995, 1996 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
@@ -96,6 +96,7 @@ int munmap __P ((__caddr_t __addr, size_t __len));
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
+int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
diff --git a/sysdeps/unix/bsd/sun/sunos4/sys/mman.h b/sysdeps/unix/bsd/sun/sunos4/sys/mman.h
index 10f31a898e..c952fc4fda 100644
--- a/sysdeps/unix/bsd/sun/sunos4/sys/mman.h
+++ b/sysdeps/unix/bsd/sun/sunos4/sys/mman.h
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  SunOS 4 version.
-Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995, 1996 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
@@ -93,6 +93,7 @@ int munmap __P ((__caddr_t __addr, size_t __len));
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
+int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
diff --git a/sysdeps/unix/mman/syscalls.list b/sysdeps/unix/mman/syscalls.list
index be0a57f8bf..6375f5998d 100644
--- a/sysdeps/unix/mman/syscalls.list
+++ b/sysdeps/unix/mman/syscalls.list
@@ -2,6 +2,6 @@
 
 madvise		-	madvise		3	madvise
 mmap		-	mmap		5	__mmap		mmap
-mprotect	-	mprotect	3	mprotect
+mprotect	-	mprotect	3	__mprotect	mprotect
 msync		-	msync		2	msync
 munmap		-	munmap		2	__munmap	munmap
diff --git a/sysdeps/unix/sysv/irix4/sys/mman.h b/sysdeps/unix/sysv/irix4/sys/mman.h
index 543ce552f3..c96bcc0751 100644
--- a/sysdeps/unix/sysv/irix4/sys/mman.h
+++ b/sysdeps/unix/sysv/irix4/sys/mman.h
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  Irix 4 version.
-Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995, 1996 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
@@ -87,6 +87,7 @@ int munmap __P ((__caddr_t __addr, size_t __len));
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
+int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
diff --git a/sysdeps/unix/sysv/linux/sys/mman.h b/sysdeps/unix/sysv/linux/sys/mman.h
index 375ededb8a..ae0d806fcf 100644
--- a/sysdeps/unix/sysv/linux/sys/mman.h
+++ b/sysdeps/unix/sysv/linux/sys/mman.h
@@ -61,6 +61,7 @@ int munmap __P ((__caddr_t __addr, size_t __len));
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
+int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the