mirror of git://sourceware.org/git/glibc.git
hurd: support mmap with PROT_NONE
This commit is contained in:
parent
c187253fc2
commit
e86c5b6459
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
* hurd/hurd/signal.h (_hurd_critical_section_lock): Don't unlock
|
* hurd/hurd/signal.h (_hurd_critical_section_lock): Don't unlock
|
||||||
sigstate.
|
sigstate.
|
||||||
|
* sysdeps/mach/hurd/mmap.c (__mmap): Also handle PROT_NONE case.
|
||||||
|
|
||||||
2015-02-07 Samuel Thibault <samuel.thibault@ens-lyon.org>
|
2015-02-07 Samuel Thibault <samuel.thibault@ens-lyon.org>
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,13 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
|
||||||
}
|
}
|
||||||
switch (prot & (PROT_READ|PROT_WRITE))
|
switch (prot & (PROT_READ|PROT_WRITE))
|
||||||
{
|
{
|
||||||
|
/* Although it apparently doesn't make sense to map a file with
|
||||||
|
protection set to PROT_NONE, it is actually sometimes done.
|
||||||
|
In particular, that's how localedef reserves some space for
|
||||||
|
the locale archive file, the rationale being that some
|
||||||
|
implementations take into account whether the mapping is
|
||||||
|
anonymous or not when selecting addresses. */
|
||||||
|
case PROT_NONE:
|
||||||
case PROT_READ:
|
case PROT_READ:
|
||||||
memobj = robj;
|
memobj = robj;
|
||||||
if (wobj != MACH_PORT_NULL)
|
if (wobj != MACH_PORT_NULL)
|
||||||
|
@ -126,8 +133,8 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
|
||||||
return (__ptr_t) (long int) __hurd_fail (EACCES);
|
return (__ptr_t) (long int) __hurd_fail (EACCES);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default: /* impossible */
|
default:
|
||||||
return 0;
|
__builtin_unreachable ();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
/* XXX handle MAP_NOEXTEND */
|
/* XXX handle MAP_NOEXTEND */
|
||||||
|
|
Loading…
Reference in New Issue