Author: zbyniu                       Date: Wed Oct 17 20:02:44 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- patches from gentoo

---- Files affected:
SOURCES:
   glibc-pt_pax.patch (NONE -> 1.1)  (NEW), glibc-pax_dl-execstack.patch (1.3 
-> 1.4) 

---- Diffs:

================================================================
Index: SOURCES/glibc-pt_pax.patch
diff -u /dev/null SOURCES/glibc-pt_pax.patch:1.1
--- /dev/null   Wed Oct 17 22:02:44 2007
+++ SOURCES/glibc-pt_pax.patch  Wed Oct 17 22:02:39 2007
@@ -0,0 +1,29 @@
+--- elf/elf.h
++++ elf/elf.h
+@@ -568,6 +568,7 @@
+ #define PT_GNU_EH_FRAME       0x6474e550      /* GCC .eh_frame_hdr segment */
+ #define PT_GNU_STACK  0x6474e551      /* Indicates stack executability */
+ #define PT_GNU_RELRO  0x6474e552      /* Read-only after relocation */
++#define PT_PAX_FLAGS  0x65041580      /* Indicates PaX flag markings */
+ #define PT_LOSUNW     0x6ffffffa
+ #define PT_SUNWBSS    0x6ffffffa      /* Sun Specific segment */
+ #define PT_SUNWSTACK  0x6ffffffb      /* Stack segment */
+@@ -581,6 +582,18 @@
+ #define PF_X          (1 << 0)        /* Segment is executable */
+ #define PF_W          (1 << 1)        /* Segment is writable */
+ #define PF_R          (1 << 2)        /* Segment is readable */
++#define PF_PAGEEXEC   (1 << 4)        /* Enable  PAGEEXEC */
++#define PF_NOPAGEEXEC (1 << 5)        /* Disable PAGEEXEC */
++#define PF_SEGMEXEC   (1 << 6)        /* Enable  SEGMEXEC */
++#define PF_NOSEGMEXEC (1 << 7)        /* Disable SEGMEXEC */
++#define PF_MPROTECT   (1 << 8)        /* Enable  MPROTECT */
++#define PF_NOMPROTECT (1 << 9)        /* Disable MPROTECT */
++#define PF_RANDEXEC   (1 << 10)       /* Enable  RANDEXEC */
++#define PF_NORANDEXEC (1 << 11)       /* Disable RANDEXEC */
++#define PF_EMUTRAMP   (1 << 12)       /* Enable  EMUTRAMP */
++#define PF_NOEMUTRAMP (1 << 13)       /* Disable EMUTRAMP */
++#define PF_RANDMMAP   (1 << 14)       /* Enable  RANDMMAP */
++#define PF_NORANDMMAP (1 << 15)       /* Disable RANDMMAP */
+ #define PF_MASKOS     0x0ff00000      /* OS-specific */
+ #define PF_MASKPROC   0xf0000000      /* Processor-specific */
+ 

================================================================
Index: SOURCES/glibc-pax_dl-execstack.patch
diff -u SOURCES/glibc-pax_dl-execstack.patch:1.3 
SOURCES/glibc-pax_dl-execstack.patch:1.4
--- SOURCES/glibc-pax_dl-execstack.patch:1.3    Fri Oct  7 15:06:08 2005
+++ SOURCES/glibc-pax_dl-execstack.patch        Wed Oct 17 22:02:39 2007
@@ -1,39 +1,64 @@
-diff -urN glibc-2.3.5.orig/sysdeps/unix/sysv/linux/dl-execstack.c 
glibc-2.3.5/sysdeps/unix/sysv/linux/dl-execstack.c
---- glibc-2.3.5.orig/sysdeps/unix/sysv/linux/dl-execstack.c    2005-09-23 
13:07:35.000000000 +0200
-+++ glibc-2.3.5/sysdeps/unix/sysv/linux/dl-execstack.c 2005-09-23 
13:31:45.000000000 +0200
-@@ -60,7 +60,10 @@
-       no_growsupdown = true;
+       With latest versions of glibc, a lot of apps failed on a PaX enabled
+       system with:
+                cannot enable executable stack as shared object requires: 
Permission denied
+       
+       This is due to PaX 'exec-protecting' the stack, and ld.so then trying
+       to make the stack executable due to some libraries not containing the
+       PT_GNU_STACK section.  Bug #32960.  <[EMAIL PROTECTED]> (12 Nov 2003).
+
+       Patch also NPTL. Bug #116086. <[EMAIL PROTECTED]> (20 Dec 2005).
+
+--- sysdeps/unix/sysv/linux/dl-execstack.c
++++ sysdeps/unix/sysv/linux/dl-execstack.c
+@@ -63,7 +63,10 @@
        else
  # endif
--      return errno;
-+      if (errno == EACCES) /* PaX */
-+          return 0;
-+      else
-+          return errno;
+       {
+-        result = errno;
++        if (errno == EACCES)  /* PAX is enabled */
++          result = 0;
++        else
++          result = errno;
+         goto out;
+       }
      }
- #endif
- 
-@@ -86,7 +89,10 @@
+@@ -89,7 +92,12 @@
+       page -= size;
+       else
        {
-         /* Unexpected failure mode.  */
-         if (errno != ENOMEM && errno != EFAULT)
--          return errno;
-+          if (errno == EACCES) /* PaX */
-+              return 0;
-+          else
-+              return errno;
- 
-         if (size == GLRO(dl_pagesize))
-           /* We just tried to mprotect the top hole page and failed.
-@@ -110,7 +116,10 @@
+-        if (errno != ENOMEM)  /* Unexpected failure mode.  */
++        if (errno == EACCES)          /* PAX is enabled */
++          {
++            result = 0;
++            goto out;
++          }
++        else if (errno != ENOMEM)     /* Unexpected failure mode.  */
+           {
+             result = errno;
+             goto out;
+@@ -115,7 +123,12 @@
+       page += size;
+       else
        {
-         /* Unexpected failure mode.  */
-         if (errno != ENOMEM && errno != EFAULT)
--          return errno;
-+          if (errno == EACCES) /* PaX */
-+              return 0;
-+          else
-+              return errno;
+-        if (errno != ENOMEM)  /* Unexpected failure mode.  */
++        if (errno == EACCES)          /* PAX is enabled */
++          {
++            result = 0;
++            goto out;
++          }
++        else if (errno != ENOMEM)     /* Unexpected failure mode.  */
+           {
+             result = errno;
+             goto out;
+--- nptl/allocatestack.c
++++ nptl/allocatestack.c
+@@ -279,7 +279,8 @@
+   size_t len = pd->stackblock_size - pd->guardsize;
+ #endif
+   if (mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
+-    return errno;
++    if (errno != EACCES) /* PAX is enabled */
++      return errno;
  
-         if (size == GLRO(dl_pagesize))
-           /* We just tried to mprotect the lowest hole page and failed.
+   return 0;
+ }
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/glibc-pax_dl-execstack.patch?r1=1.3&r2=1.4&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to