]> git.pld-linux.org Git - packages/binutils.git/blobdiff - binutils-pt_pax_flags.patch
- fix pax patch
[packages/binutils.git] / binutils-pt_pax_flags.patch
index c9942a1edbc56b46ef173a61ef345598a396393b..0ac4e38e52e38cc704f097604838f61bee0c6b73 100644 (file)
    return pt;
 @@ -2346,6 +2347,9 @@
      case PT_GNU_RELRO:
-       return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro");
+       return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro");
  
 +    case PT_PAX_FLAGS:
-+      return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "pax_flags");
++      return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "pax_flags");
 +
      default:
        /* Check for any processor-specific program segment types.  */
     && (segment->p_type != PT_TLS                                      \
         || (section->flags & SEC_THREAD_LOCAL))                                \
     && (segment->p_type == PT_LOAD                                     \
---- binutils-2.17.50.0.13/bfd/elflink.c.orig   2007-03-16 20:44:46.377789106 +0100
-+++ binutils-2.17.50.0.13/bfd/elflink.c        2007-03-16 20:45:24.781816352 +0100
-@@ -5296,16 +5296,30 @@
-     return TRUE;
+--- binutils-2.23.52.0.1/bfd/elflink.c.orig    2013-02-27 21:28:03.000000000 +0100
++++ binutils-2.23.52.0.1/bfd/elflink.c 2013-03-01 17:32:44.922717879 +0100
+@@ -5764,18 +5764,32 @@
+       && ! (*bed->elf_backend_always_size_sections) (output_bfd, info))
+     return FALSE;
  
-   bed = get_elf_backend_data (output_bfd);
 +  elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
 +
 +  if (info->execheap)
 +  else if (info->noexecheap)
 +    elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
 +
+   /* Determine any GNU_STACK segment requirements, after the backend
+      has had a chance to set a default segment size.  */
    if (info->execstack)
--    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
-+    {
-+      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
-+      elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
-+    }
++  {
+     elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X;
++    elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
++  }
    else if (info->noexecstack)
--    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
-+    {
-+      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
-+      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
-+    }
++  {
+     elf_stack_flags (output_bfd) = PF_R | PF_W;
++    elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
++  }
    else
      {
        bfd *inputobj;
        for (inputobj = info->input_bfds;
           inputobj;
           inputobj = inputobj->link_next)
-@@ -5318,7 +5332,11 @@
+@@ -5789,7 +5803,11 @@
          if (s)
            {
              if (s->flags & SEC_CODE)
 --- binutils-2.15.94.0.2.2.orig/include/elf/common.h   2004-11-22 21:33:32.000000000 +0100
 +++ binutils-2.15.94.0.2.2/include/elf/common.h        2005-02-20 13:13:17.482539960 +0100
 @@ -423,6 +423,7 @@
+ #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
  #define PT_GNU_STACK  (PT_LOOS + 0x474e551) /* Stack flags */
  #define PT_GNU_RELRO  (PT_LOOS + 0x474e552) /* Read-only after relocation */
- #define PT_GNU_SHR    (PT_LOOS + 0x474e554) /* Sharable segment */
 +#define PT_PAX_FLAGS   (PT_LOOS + 0x5041580) /* PaX flags */
  
  /* Program segment permissions, in program header p_flags field.  */
This page took 0.029934 seconds and 4 git commands to generate.