From 6d9756c910a07bb353af4d6908f88c1ddea15916 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sun, 9 Jun 1996 22:02:59 +0000 Subject: * 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. --- ChangeLog | 11 +++++++++++ elf/dl-load.c | 3 +++ sysdeps/generic/sys/mman.h | 3 ++- sysdeps/mach/mprotect.c | 5 +++-- sysdeps/stub/mprotect.c | 7 ++++--- sysdeps/unix/bsd/osf/sys/mman.h | 3 ++- sysdeps/unix/bsd/sun/sunos4/sys/mman.h | 3 ++- sysdeps/unix/mman/syscalls.list | 2 +- sysdeps/unix/sysv/irix4/sys/mman.h | 3 ++- sysdeps/unix/sysv/linux/sys/mman.h | 1 + 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 + * 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 -- cgit v1.2.3