svn commit: r226343 - head/sys/vm
Kostik Belousov
kostikbel at gmail.com
Thu Oct 13 18:20:33 UTC 2011
On Thu, Oct 13, 2011 at 04:20:10PM +0000, Marcel Moolenaar wrote:
> Author: marcel
> Date: Thu Oct 13 16:20:10 2011
> New Revision: 226343
> URL: http://svn.freebsd.org/changeset/base/226343
>
> Log:
> In sys_obreak() and when compiling for amd64 or ia64, when the process
> is ILP32 (i.e. i386) grant execute permissions by default. The JDK 1.4.x
> depends on being able to execute from the heap on i386.
>
> Modified:
> head/sys/vm/vm_unix.c
>
> Modified: head/sys/vm/vm_unix.c
> ==============================================================================
> --- head/sys/vm/vm_unix.c Thu Oct 13 16:16:46 2011 (r226342)
> +++ head/sys/vm/vm_unix.c Thu Oct 13 16:20:10 2011 (r226343)
> @@ -36,6 +36,8 @@
> * @(#)vm_unix.c 8.1 (Berkeley) 6/11/93
> */
>
> +#include "opt_compat.h"
> +
> /*
> * Traditional sbrk/grow interface to VM
> */
> @@ -49,6 +51,7 @@ __FBSDID("$FreeBSD$");
> #include <sys/proc.h>
> #include <sys/racct.h>
> #include <sys/resourcevar.h>
> +#include <sys/sysent.h>
> #include <sys/sysproto.h>
> #include <sys/systm.h>
>
> @@ -75,7 +78,7 @@ sys_obreak(td, uap)
> struct vmspace *vm = td->td_proc->p_vmspace;
> vm_offset_t new, old, base;
> rlim_t datalim, vmemlim;
> - int rv;
> + int prot, rv;
> int error = 0;
> boolean_t do_map_wirefuture;
>
> @@ -135,8 +138,15 @@ sys_obreak(td, uap)
> }
> PROC_UNLOCK(td->td_proc);
> #endif
> + prot = VM_PROT_RW;
> +#ifdef COMPAT_FREEBSD32
> +#if defined(__amd64__) || defined(__ia64__)
> + if (SV_PROC_FLAG(td->td_proc, SV_ILP32))
> + prot |= VM_PROT_EXECUTE;
> +#endif
> +#endif
> rv = vm_map_insert(&vm->vm_map, NULL, 0, old, new,
> - VM_PROT_RW, VM_PROT_ALL, 0);
> + prot, VM_PROT_ALL, 0);
> if (rv != KERN_SUCCESS) {
> #ifdef RACCT
> PROC_LOCK(td->td_proc);
The two commits removed NX support for .data/.bss for 32bit binaries on amd64.
This is too unfortunate. Can we claim that only old binaries need this hack ?
If yes, could you, please, conditionalize the hack on curproc->p_osrel
being, say, 4.x ?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20111013/b9ca5af0/attachment.pgp
More information about the svn-src-all
mailing list