patches/glibc/2.9/380-2.3.6-dl_execstack-PaX-support.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Wed Jun 25 23:33:01 2014 +0200 (2014-06-25)
changeset 3325 069f43a215cc
parent 1201 c9967a6e3b25
permissions -rw-r--r--
all: fix wildcard to work with make-4.x

In make-3.8x, the $(wildacrd) function would sort the entries,
while in make-4.x, it would just return the entries in any
unpredictable order [*]

Use the $(sort) function to get reproducible behaviour.

[*] Well, most probably the roder the entries appear when read
from readdir()

Reported-by: Andrew Ruder <andrew.ruder@elecsyscorp.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Tested-by: Andrew Ruder <andrew.ruder@elecsyscorp.com>
     1 Original patch from: gentoo/src/patchsets/glibc/2.9/3000_all_2.3.6-dl_execstack-PaX-support.patch
     2 
     3 -= BEGIN original header =-
     4 	With latest versions of glibc, a lot of apps failed on a PaX enabled
     5 	system with:
     6 		 cannot enable executable stack as shared object requires: Permission denied
     7 	
     8 	This is due to PaX 'exec-protecting' the stack, and ld.so then trying
     9 	to make the stack executable due to some libraries not containing the
    10 	PT_GNU_STACK section.  Bug #32960.  <azarah@gentoo.org> (12 Nov 2003).
    11 
    12 	Patch also NPTL. Bug #116086. <kevquinn@gentoo.org> (20 Dec 2005).
    13 
    14 -= END original header =-
    15 
    16 diff -durN glibc-2_9.orig/nptl/allocatestack.c glibc-2_9/nptl/allocatestack.c
    17 --- glibc-2_9.orig/nptl/allocatestack.c	2008-08-16 00:35:27.000000000 +0200
    18 +++ glibc-2_9/nptl/allocatestack.c	2009-02-02 22:01:20.000000000 +0100
    19 @@ -299,7 +299,8 @@
    20  # error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP"
    21  #endif
    22    if (mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
    23 -    return errno;
    24 +    if (errno != EACCES) /* PAX is enabled */
    25 +    	return errno;
    26  
    27    return 0;
    28  }
    29 diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/dl-execstack.c glibc-2_9/sysdeps/unix/sysv/linux/dl-execstack.c
    30 --- glibc-2_9.orig/sysdeps/unix/sysv/linux/dl-execstack.c	2006-01-08 09:21:15.000000000 +0100
    31 +++ glibc-2_9/sysdeps/unix/sysv/linux/dl-execstack.c	2009-02-02 22:01:20.000000000 +0100
    32 @@ -63,7 +63,10 @@
    33        else
    34  # endif
    35  	{
    36 -	  result = errno;
    37 +	  if (errno == EACCES)  /* PAX is enabled */
    38 +	    result = 0;
    39 +	  else
    40 +	    result = errno;
    41  	  goto out;
    42  	}
    43      }
    44 @@ -89,7 +92,12 @@
    45  	page -= size;
    46        else
    47  	{
    48 -	  if (errno != ENOMEM)	/* Unexpected failure mode.  */
    49 +	  if (errno == EACCES)		/* PAX is enabled */
    50 +	    {
    51 +	      result = 0;
    52 +	      goto out;
    53 +	    }
    54 +	  else if (errno != ENOMEM)	/* Unexpected failure mode.  */
    55  	    {
    56  	      result = errno;
    57  	      goto out;
    58 @@ -115,7 +123,12 @@
    59  	page += size;
    60        else
    61  	{
    62 -	  if (errno != ENOMEM)	/* Unexpected failure mode.  */
    63 +	  if (errno == EACCES)		/* PAX is enabled */
    64 +	    {
    65 +	      result = 0;
    66 +	      goto out;
    67 +	    }
    68 +	  else if (errno != ENOMEM)	/* Unexpected failure mode.  */
    69  	    {
    70  	      result = errno;
    71  	      goto out;