Add linker warning for when it creates an executable stack.
authorNick Clifton <nickc@redhat.com>
Wed, 20 Apr 2022 12:37:51 +0000 (13:37 +0100)
committerNick Clifton <nickc@redhat.com>
Wed, 20 Apr 2022 12:39:05 +0000 (13:39 +0100)
   PR 29072

77 files changed:
bfd/elflink.c
include/bfdlink.h
ld/NEWS
ld/emultempl/avrelf.em
ld/ld.texi
ld/ldlex.h
ld/lexsup.c
ld/testsuite/ld-elf/eh4.d
ld/testsuite/ld-elf/elf.exp
ld/testsuite/ld-elf/linux-x86.exp
ld/testsuite/ld-elf/pr29072-a.s [new file with mode: 0644]
ld/testsuite/ld-elf/pr29072-b.s [new file with mode: 0644]
ld/testsuite/ld-elf/pr29072.a.warn [new file with mode: 0644]
ld/testsuite/ld-elf/pr29072.b.warn [new file with mode: 0644]
ld/testsuite/ld-elf/pr29072.c.warn [new file with mode: 0644]
ld/testsuite/ld-elf/shared.exp
ld/testsuite/ld-frv/fdpic1.s
ld/testsuite/ld-frv/fdpic2.s
ld/testsuite/ld-frv/fdpic3.s
ld/testsuite/ld-frv/fdpic4.s
ld/testsuite/ld-frv/fdpic5.s
ld/testsuite/ld-frv/fdpic6.s
ld/testsuite/ld-frv/fdpic7.s
ld/testsuite/ld-frv/fdpic8.s
ld/testsuite/ld-frv/tls-1-dep.s
ld/testsuite/ld-frv/tls-1.s
ld/testsuite/ld-frv/tls-2.s
ld/testsuite/ld-frv/tls-3.s
ld/testsuite/ld-gc/dummy.s
ld/testsuite/ld-i386/i386.exp
ld/testsuite/ld-plugin/lto-3r.d
ld/testsuite/ld-plugin/lto-5r.d
ld/testsuite/ld-plugin/lto.exp
ld/testsuite/ld-tic6x/got-reloc-global.s
ld/testsuite/ld-tic6x/shlib-1.rd
ld/testsuite/ld-tic6x/shlib-1.s
ld/testsuite/ld-tic6x/shlib-1b.rd
ld/testsuite/ld-tic6x/shlib-1r.rd
ld/testsuite/ld-tic6x/shlib-1rb.rd
ld/testsuite/ld-tic6x/shlib-2.s
ld/testsuite/ld-tic6x/shlib-app-1.rd
ld/testsuite/ld-tic6x/shlib-app-1.s
ld/testsuite/ld-tic6x/shlib-app-1b.rd
ld/testsuite/ld-tic6x/shlib-app-1r.rd
ld/testsuite/ld-tic6x/shlib-app-1r.s
ld/testsuite/ld-tic6x/shlib-app-1rb.rd
ld/testsuite/ld-tic6x/shlib-noindex.rd
ld/testsuite/ld-tic6x/static-app-1.rd
ld/testsuite/ld-tic6x/static-app-1b.rd
ld/testsuite/ld-tic6x/static-app-1r.rd
ld/testsuite/ld-tic6x/static-app-1rb.rd
ld/testsuite/ld-unique/unique.s
ld/testsuite/ld-unique/unique_empty.s
ld/testsuite/ld-unique/unique_shared.s
ld/testsuite/ld-x86-64/dummy.s
ld/testsuite/ld-x86-64/foo.s
ld/testsuite/ld-x86-64/gotpcrel1a.S
ld/testsuite/ld-x86-64/gotpcrel1d.S
ld/testsuite/ld-x86-64/pr19031b.S
ld/testsuite/ld-x86-64/pr19319a.S
ld/testsuite/ld-x86-64/pr19319b.S
ld/testsuite/ld-x86-64/pr19827a.S
ld/testsuite/ld-x86-64/pr19827b.S
ld/testsuite/ld-x86-64/pr19969a.S
ld/testsuite/ld-x86-64/pr19969b.S
ld/testsuite/ld-x86-64/pr20550a.s
ld/testsuite/ld-x86-64/pr20800a.S
ld/testsuite/ld-x86-64/pr22791-1b.s
ld/testsuite/ld-x86-64/pr26711.s
ld/testsuite/ld-x86-64/property-6c.S
ld/testsuite/ld-x86-64/property-no-copy.S
ld/testsuite/ld-x86-64/property-stack.S
ld/testsuite/ld-x86-64/property-unsorted-1.S
ld/testsuite/ld-x86-64/property-unsorted-2.S
ld/testsuite/ld-x86-64/property-x86-1.S
ld/testsuite/ld-x86-64/property-x86-2.S
ld/testsuite/ld-x86-64/start.s

index 5a070a26e35509784c6c7615b7f9c477251c2234..d6dd9c16a26718f1e1b82fea2bb0cfd1ff47a4b9 100644 (file)
@@ -7124,13 +7124,23 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
   /* Determine any GNU_STACK segment requirements, after the backend
      has had a chance to set a default segment size.  */
   if (info->execstack)
-    elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X;
+    {
+      /* If the user has explicitly requested warnings, then generate one even
+        though the choice is the result of another command line option.  */
+      if (info->warn_execstack == 1)
+       _bfd_error_handler
+         (_("\
+warning: enabling an executable stack because of -z execstack command line option"));
+      elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X;
+    }
   else if (info->noexecstack)
     elf_stack_flags (output_bfd) = PF_R | PF_W;
   else
     {
       bfd *inputobj;
       asection *notesec = NULL;
+      bfd *noteobj = NULL;
+      bfd *emptyobj = NULL;
       int exec = 0;
 
       for (inputobj = info->input_bfds;
@@ -7149,15 +7159,45 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
          s = bfd_get_section_by_name (inputobj, ".note.GNU-stack");
          if (s)
            {
-             if (s->flags & SEC_CODE)
-               exec = PF_X;
              notesec = s;
+             if (s->flags & SEC_CODE)
+               {
+                 noteobj = inputobj;
+                 exec = PF_X;
+                 /* There is no point in scanning the remaining bfds.  */
+                 break;
+               }
            }
          else if (bed->default_execstack)
-           exec = PF_X;
+           {
+             exec = PF_X;
+             emptyobj = inputobj;
+           }
        }
+
       if (notesec || info->stacksize > 0)
-       elf_stack_flags (output_bfd) = PF_R | PF_W | exec;
+       {
+         if (exec)
+           {
+             if (info->warn_execstack != 2)
+               {
+                 /* PR 29072: Because an executable stack is a serious
+                    security risk, make sure that the user knows that it is
+                    being enabled despite the fact that it was not requested
+                    on the command line.  */
+                 if (noteobj)
+                   _bfd_error_handler (_("\
+warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"),
+                      bfd_get_filename (noteobj));
+                 else if (emptyobj)
+                   _bfd_error_handler (_("\
+warning: %s: missing .note.GNU-stack section implies executable stack"),
+                      bfd_get_filename (emptyobj));
+               }
+           }
+         elf_stack_flags (output_bfd) = PF_R | PF_W | exec;
+       }
+
       if (notesec && exec && bfd_link_relocatable (info)
          && notesec->output_section != bfd_abs_section_ptr)
        notesec->output_section->flags |= SEC_CODE;
index 69fc9d33ff47cc7c00feff689484259863184f7f..b16f3f44ca5d023f2459930c340ac15fead1b365 100644 (file)
@@ -489,6 +489,10 @@ struct bfd_link_info
      flags.  */
   unsigned int noexecstack: 1;
 
+  /* Tri-state variable: 0 => not set by user; 1 => set, warnings
+     enabled; 2 => warnings disabled; 3 => unused.  */
+  unsigned int warn_execstack: 2;
+
   /* TRUE if we want to produced optimized output files.  This might
      need much more time and therefore must be explicitly selected.  */
   unsigned int optimize: 1;
diff --git a/ld/NEWS b/ld/NEWS
index 76de7f606c00726cc25ce0770541d1bd592eba3d..b84553109d2bc134a171f5113173c5ae6b4737e4 100644 (file)
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,5 +1,13 @@
 -*- text -*-
 
+* The linker will now generate a warning message if the stack is made
+  executable.  By default this warning is not issued if the user has
+  specifically requested an executable stack via the "-z execstack"
+  command line option, but the warning can be forced via the new
+  "--warn-execstack" option.  Alternatively all warnings about creating
+  an executable stack can be suppressed via the "--no-warn-execstack"
+  option.
+
 * TYPE=<type> is now supported in an output section description to set the
   section type value.
 
index 555d259d7be6a92cfe893d8b11b56a222172a87b..617bfef558b235a6095ca725ee7f47fca25cedec 100644 (file)
@@ -134,6 +134,7 @@ avr_elf_create_output_section_statements (void)
       einfo (_("%X%P: can not create stub BFD: %E\n"));
       return;
     }
+  stub_file->the_bfd->flags |= BFD_LINKER_CREATED;
 
   /* Now we add the stub section.  */
 
index c8335a7e41eaf8d997c27238ccdbc803dc656c3e..6ac5344ebf4d1a16d8a530b37a5f2c169e984f35 100644 (file)
@@ -2653,6 +2653,33 @@ Warn if any global constructors are used.  This is only useful for a few
 object file formats.  For formats like COFF or ELF, the linker can not
 detect the use of global constructors.
 
+@kindex --warn-execstack
+@cindex warnings, on exectuable stack
+@cindex executable stack, warnings on
+@item --warn-execstack
+@itemx --no-warn-execstack
+On ELF platforms this option controls how the linker generates warning
+messages when it creates an output file with an executable stack.  By
+default the linker will not warn if the @command{-z execstack} command
+line option has been used, but this behaviour can be overridden by the
+@option{--warn-execstack} option.
+
+On the other hand the linker will normally warn if the stack is made
+executable because one or more of the input files need an execuable
+stack and neither of the @command{-z execstack} or @command{-z
+noexecstack} comman line options have been specified.  This warning
+can be disabled via the @command{--no-warn-execstack} option.
+
+Note: ELF format input files specify that they need an executable
+stack by having a @var{.note.GNU-stack} section with the executable
+bit set in its section flags.  They can specify that they do not need
+an executable stack by having that section, but without the executable
+flag bit set.  If an input file does not have a @var{.note.GNU-stack}
+section present then the default behaviour is target specific.  For
+some targets, then absence of such a section implies that an
+executable stack @emph{is} required.  This is often a problem for hand
+crafted assembler files.
+
 @kindex --warn-multiple-gp
 @item --warn-multiple-gp
 Warn if multiple global pointer values are required in the output file.
index bc58fea73cc880fef5c5979cb96ca52d60104ce8..1d42dc8672ea2af4e3afe1fa382edfab7543a794 100644 (file)
@@ -164,6 +164,8 @@ enum option_values
   OPTION_CTF_VARIABLES,
   OPTION_NO_CTF_VARIABLES,
   OPTION_CTF_SHARE_TYPES,
+  OPTION_WARN_EXECSTACK,
+  OPTION_NO_WARN_EXECSTACK,
 };
 
 /* The initial parser states.  */
index 5acc47ed5a0bf9f5c1f5ad8e6868b3e7819c3b82..2929fecb6042997bd092c16e1b5891e2e41db7a1 100644 (file)
@@ -536,6 +536,10 @@ static const struct ld_option ld_options[] =
   { {"warn-constructors", no_argument, NULL, OPTION_WARN_CONSTRUCTORS},
     '\0', NULL, N_("Warn if global constructors/destructors are seen"),
     TWO_DASHES },
+  { {"warn-execstack", no_argument, NULL, OPTION_WARN_EXECSTACK},
+    '\0', NULL, N_("Warn when creating an executable stack"), TWO_DASHES },
+  { {"no-warn-execstack", no_argument, NULL, OPTION_NO_WARN_EXECSTACK},
+    '\0', NULL, N_("Do not warn when creating an executable stack"), TWO_DASHES },
   { {"warn-multiple-gp", no_argument, NULL, OPTION_WARN_MULTIPLE_GP},
     '\0', NULL, N_("Warn if the multiple GP values are used"), TWO_DASHES },
   { {"warn-once", no_argument, NULL, OPTION_WARN_ONCE},
@@ -915,6 +919,12 @@ parse_args (unsigned argc, char **argv)
        case OPTION_NON_CONTIGUOUS_REGIONS_WARNINGS:
          link_info.non_contiguous_regions_warnings = true;
          break;
+       case OPTION_WARN_EXECSTACK:
+         link_info.warn_execstack = 1;
+         break;
+       case OPTION_NO_WARN_EXECSTACK:
+         link_info.warn_execstack = 2;
+         break;
        case 'e':
          lang_add_entry (optarg, true);
          break;
@@ -2150,6 +2160,10 @@ elf_static_list_options (FILE *file)
   fprintf (file, _("\
   -z noexecstack              Mark executable as not requiring executable stack\n"));
   fprintf (file, _("\
+  --warn-execstack            Generate a warning if the stack is executable\n"));
+  fprintf (file, _("\
+  --no-warn-execstack         Do not generate a warning if the stack is executable\n"));
+  fprintf (file, _("\
   -z unique-symbol            Avoid duplicated local symbol names\n"));
   fprintf (file, _("\
   -z nounique-symbol          Keep duplicated local symbol names (default)\n"));
index f33431a8b7fed3285b8a6f438934e969f9a21f32..95abafbf9ce94503e2975299d872788b66661153 100644 (file)
@@ -1,7 +1,7 @@
 #source: eh4.s
 #source: eh4a.s
 #as: --64
-#ld: -melf_x86_64 -shared -Ttext 0x400 -z max-page-size=0x200000 -z noseparate-code
+#ld: -melf_x86_64 -shared -Ttext 0x400 -z max-page-size=0x200000 -z noseparate-code -z noexecstack
 #readelf: -wf
 #target: x86_64-*-*
 
index 119908cda4e2d03c320f9715b46d93c98f089008..ec61e659e062107b58ee6dc1d109c89879091587 100644 (file)
@@ -180,9 +180,24 @@ if { [check_gc_sections_available] && ![istarget "v850-*-*"] } {
     }
 }
 
-if { [istarget *-*-*linux*]
-     || [istarget *-*-nacl*]
-     || [istarget *-*-gnu*] } {
+proc target_defaults_to_execstack {} {
+    if {   [istarget "aarch64*-*-*"]
+       || [istarget "arc*-*-*"]
+       || [istarget "ia64*-*-*"]
+       || [istarget "loongarch*-*-*"]
+       || [istarget "nios2*-*-*"]
+       || [istarget "powerpc64*-*-*"]
+       || [istarget "riscv*-*-*"]
+       || [istarget "tilegx*-*-*"]
+        || [istarget "tilepro*-*-*"] } {
+         return 0
+    }
+    return 1
+}
+
+if {   [istarget *-*-*linux*]
+    || [istarget *-*-nacl*]
+    || [istarget *-*-gnu*] } {
     run_ld_link_tests [list \
        [list "stack exec" \
            "-z execstack" \
@@ -199,7 +214,7 @@ if { [istarget *-*-*linux*]
            {{readelf {-Wl} stack-noexec.rd}} \
            "stack-noexec.exe"] \
        [list "stack size" \
-           "-z stack-size=0x123400" \
+           "-z stack-size=0x123400 -z noexecstack" \
            "" \
            "" \
            {stack.s} \
@@ -212,7 +227,49 @@ if { [istarget *-*-*linux*]
            {pr23900-1.s} \
            [list [list "readelf" {-Wl} $pr23900_1_exp]] \
            "pr23900-1.exe"] \
+       [list "PR ld/29072 (warn about an executable .note-GNU-stack)" \
+           "-e 0" \
+           "" \
+           "" \
+           {pr29072-a.s} \
+           {{ld pr29072.a.warn}} \
+           "pr29072-a.exe"] \
+       [list "PR 29072 (warn about -z execstack)" \
+           "-z execstack --warn-execstack" \
+           "" \
+           "" \
+           {stack.s} \
+            {{ld pr29072.c.warn}} \
+           "pr29072-c.exe"] \
+       [list "PR ld/29072 (suppress warnings about executable stack)" \
+           "-e 0 --no-warn-execstack" \
+           "" \
+           "" \
+           {pr29072-a.s} \
+           {} \
+           "pr29072-d.exe"] \
+       ]
+    if { [target_defaults_to_execstack] } {
+       run_ld_link_tests [list \
+          [list "PR ld/29072 (warn about absent .note-GNU-stack)" \
+           "-e 0 -z stack-size=0x123400" \
+           "" \
+           "" \
+           {pr29072-b.s} \
+           {{ld pr29072.b.warn}} \
+           "pr29072-b.exe"] \
        ]
+    } else {
+       run_ld_link_tests [list \
+          [list "PR ld/29072 (ignore absent .note-GNU-stackk)" \
+           "-e 0 -z stack-size=0x123400" \
+           "" \
+           "" \
+           {pr29072-b.s} \
+           {} \
+           "pr29072-b.exe"] \
+       ]
+    }
 }
 
 if [check_gc_sections_available] {
@@ -365,7 +422,7 @@ if { [istarget *-*-linux*]
     run_ld_link_exec_tests [list \
        [list \
            "Run mbind2a" \
-           "$NOPIE_LDFLAGS -Wl,-z,common-page-size=0x4000" \
+           "$NOPIE_LDFLAGS -Wl,-z,common-page-size=0x4000 -Wl,-z,noexecstack" \
            "" \
            { mbind2a.s mbind2b.c } \
            "mbind2a" \
@@ -374,7 +431,7 @@ if { [istarget *-*-linux*]
        ] \
        [list \
            "Run mbind2b" \
-           "-static -Wl,-z,common-page-size=0x4000" \
+           "-static -Wl,-z,common-page-size=0x4000 -Wl,-z,noexecstack" \
            "" \
            { mbind2a.s mbind2b.c } \
            "mbind2b" \
index 2e0cbd37f1764ebc0e7d2ae308150b1d051972f3..e3f20189e4cbe4febdc714263bfa3e619c6f57a1 100644 (file)
@@ -51,7 +51,7 @@ run_ld_link_tests [list \
 run_ld_link_exec_tests [list \
     [list \
        "Run PR ld/23428 test" \
-       "--no-dynamic-linker -z separate-code" \
+       "--no-dynamic-linker -z separate-code -z noexecstack" \
        "" \
        { linux-x86.S pr23428.c dummy.s } \
        "pr23428" \
@@ -76,7 +76,7 @@ run_ld_link_tests [list \
 run_cc_link_tests [list \
     [list \
        "Build indirect-extern-access-1.so" \
-       "-shared" \
+       "-shared -z noexecstack" \
        "-fPIC" \
        { indirect-extern-access-1a.c } \
        {} \
@@ -84,7 +84,7 @@ run_cc_link_tests [list \
     ] \
     [list \
        "Build indirect-extern-access-1a without PIE" \
-       "$NOPIE_LDFLAGS -Wl,--no-as-needed  \
+       "$NOPIE_LDFLAGS -Wl,--no-as-needed -z noexecstack \
         tmpdir/indirect-extern-access-1.so" \
        "$NOPIE_CFLAGS" \
        { indirect-extern-access.S indirect-extern-access-1b.c } \
@@ -101,7 +101,7 @@ run_cc_link_tests [list \
     ] \
     [list \
        "Build indirect-extern-access-2a without PIE" \
-       "$NOPIE_LDFLAGS -Wl,--no-as-needed  \
+       "$NOPIE_LDFLAGS -Wl,--no-as-needed -z noexecstack \
         tmpdir/indirect-extern-access-2.so" \
        "$NOPIE_CFLAGS" \
        { indirect-extern-access.S indirect-extern-access-1b.c } \
@@ -110,7 +110,7 @@ run_cc_link_tests [list \
     ] \
     [list \
        "Build indirect-extern-access-2b with PIE" \
-       "-pie -Wl,--no-as-needed  \
+       "-pie -Wl,--no-as-needed -z noexecstack \
         tmpdir/indirect-extern-access-2.so" \
        "-fpie" \
        { indirect-extern-access.S indirect-extern-access-2b.c } \
@@ -139,7 +139,7 @@ run_cc_link_tests [list \
 run_ld_link_exec_tests [list \
     [list \
        "Run indirect-extern-access-1a without PIE" \
-       "$NOPIE_LDFLAGS" \
+       "$NOPIE_LDFLAGS -z noexecstack" \
        "" \
        { indirect-extern-access.S indirect-extern-access-1b.c } \
        "indirect-extern-access-1a" \
@@ -151,7 +151,7 @@ run_ld_link_exec_tests [list \
     ] \
     [list \
        "Run indirect-extern-access-1b with PIE" \
-       "-pie" \
+       "-pie -z noexecstack" \
        "" \
        { indirect-extern-access.S indirect-extern-access-1b.c } \
        "indirect-extern-access-1b" \
@@ -163,7 +163,7 @@ run_ld_link_exec_tests [list \
     ] \
     [list \
        "Run indirect-extern-access-2a without PIE" \
-       "$NOPIE_LDFLAGS" \
+       "$NOPIE_LDFLAGS -z noexecstack" \
        "" \
        { indirect-extern-access.S indirect-extern-access-2b.c } \
        "indirect-extern-access-2a" \
@@ -175,7 +175,7 @@ run_ld_link_exec_tests [list \
     ] \
     [list \
        "Run indirect-extern-access-2b with PIE" \
-       "-pie" \
+       "-pie -z noexecstack" \
        "" \
        { indirect-extern-access.S indirect-extern-access-2b.c } \
        "indirect-extern-access-2b" \
@@ -292,7 +292,7 @@ proc check_pr25749a {testname srcfilea srcfileb cflags ldflags lderror} {
        run_cc_link_tests [list \
            [list \
                "Build $testname ($ldflags $cflags)" \
-               "$ldflags tmpdir/pr25749-bin.o" \
+               "$ldflags tmpdir/pr25749-bin.o -z noexecstack" \
                "$cflags -I../bfd" \
                [list $srcfilea $srcfileb]\
                {{readelf {-Wr} pr25749.rd}}  \
@@ -302,7 +302,7 @@ proc check_pr25749a {testname srcfilea srcfileb cflags ldflags lderror} {
        run_ld_link_exec_tests [list \
            [list \
                "Run ${testname}a ($ldflags $cflags)" \
-               "$ldflags tmpdir/pr25749-bin.o" \
+               "$ldflags tmpdir/pr25749-bin.o -z noexecstack" \
                "" \
                [list $srcfilea $srcfileb]\
                "${testname}a" \
@@ -314,7 +314,7 @@ proc check_pr25749a {testname srcfilea srcfileb cflags ldflags lderror} {
        run_cc_link_tests [list \
            [list \
                "Build $testname ($ldflags $cflags)" \
-               "$ldflags tmpdir/pr25749-bin.o" \
+               "$ldflags tmpdir/pr25749-bin.o -z noexecstack" \
                "$cflags -I../bfd" \
                [list $srcfilea $srcfileb]\
                [list [list error_output $lderror]] \
@@ -395,7 +395,7 @@ proc check_pr25749b {testname srcfilea srcfileb cflags ldflags dsoldflags args}
     run_cc_link_tests [list \
        [list \
            "Build lib${testname}.so ($dsoldflags)" \
-           "-shared $dsoldflags tmpdir/pr25749-bin.o" \
+           "-shared $dsoldflags tmpdir/pr25749-bin.o -z noexecstack" \
            "-fPIC -I../bfd" \
            [list $srcfileb] \
            {{readelf {-Wr} pr25749.rd}}  \
@@ -411,7 +411,7 @@ proc check_pr25749b {testname srcfilea srcfileb cflags ldflags dsoldflags args}
     run_ld_link_exec_tests [list \
        [list \
            "Run ${testname}b ($ldflags $cflags)" \
-           "$ldflags -Wl,--no-as-needed tmpdir/lib${testname}.so" \
+           "$ldflags -Wl,--no-as-needed tmpdir/lib${testname}.so -z noexecstack" \
            "" \
            [list $srcfilea]\
            "${testname}b" \
diff --git a/ld/testsuite/ld-elf/pr29072-a.s b/ld/testsuite/ld-elf/pr29072-a.s
new file mode 100644 (file)
index 0000000..12ba994
--- /dev/null
@@ -0,0 +1,6 @@
+       .text
+       .global main
+main:
+       .nop
+
+       .section        .note.GNU-stack,"x",%progbits
diff --git a/ld/testsuite/ld-elf/pr29072-b.s b/ld/testsuite/ld-elf/pr29072-b.s
new file mode 100644 (file)
index 0000000..99df332
--- /dev/null
@@ -0,0 +1,5 @@
+       .text
+       .globl  foo
+foo:
+       .nop
+
diff --git a/ld/testsuite/ld-elf/pr29072.a.warn b/ld/testsuite/ld-elf/pr29072.a.warn
new file mode 100644 (file)
index 0000000..aecff23
--- /dev/null
@@ -0,0 +1 @@
+.*: warning: .*\.o: requires executable stack \(because the \.note\.GNU-stack section is executable\)
diff --git a/ld/testsuite/ld-elf/pr29072.b.warn b/ld/testsuite/ld-elf/pr29072.b.warn
new file mode 100644 (file)
index 0000000..08f1188
--- /dev/null
@@ -0,0 +1 @@
+.*: warning: .*\.o: missing \.note\.GNU-stack section implies executable stack
diff --git a/ld/testsuite/ld-elf/pr29072.c.warn b/ld/testsuite/ld-elf/pr29072.c.warn
new file mode 100644 (file)
index 0000000..e058be4
--- /dev/null
@@ -0,0 +1 @@
+.*: warning: enabling an executable stack because of -z execstack command line option
index 1381544e6f8efbf3a7dc0f652c347d79fb398111..06c3202d5cc3d871167b1970c04433bdd1187069 100644 (file)
@@ -914,7 +914,7 @@ run_cc_link_tests [list \
 if { ![istarget alpha-*-*] } {
     append build_tests {
        {"Build pr19073a.o"
-        "-r -nostdlib" ""
+        "-r -nostdlib -z noexecstack" ""
         {pr19073.s} {} "pr19073a.o"}
        {"Build libpr19073.so"
         "-shared -Wl,--version-script=pr19073.map tmpdir/pr19073a.o" "-fPIC"
index 29f7fff8703974f886060d2a734114d3b4bdac72..fa8aa4824280e8c53f9da584d2df10733b28cf0e 100644 (file)
@@ -62,3 +62,4 @@ D1:
 .D4:
        .picptr funcdesc(.Fb)
        .word   .Fb
+       .section        .note.GNU-stack
index 29876436d34315b4d4c029759c541bf5a1a3fdbf..aa42c2980d2ffbb5a8cc436d7417d88f4b99823a 100644 (file)
@@ -79,3 +79,4 @@ GD3:
 GD4:
        .picptr funcdesc(GFb)
        .word   GFb
+       .section        .note.GNU-stack
index f867b93d9a7a7bc163f06ce4def9bd14741a9fbd..5fa5b0200aee0a4c09deadc00e28b4d01fc9002d 100644 (file)
@@ -97,3 +97,4 @@ HD3:
 HD4:
        .picptr funcdesc(HFb)
        .word   HFb
+       .section        .note.GNU-stack
index 795ae45516eb22cc4c5c47c4e05cef5edd1a6fa5..c877407c15797bfda8820a58ec52cd2c19ec7e8f 100644 (file)
@@ -97,3 +97,4 @@ PD3:
 PD4:
        .picptr funcdesc(PFb)
        .word   PFb
+       .section        .note.GNU-stack
index f4d466a82e034fb8c8fffe13df1a795115c7140b..d4fd8930d8ea5c0c509de4deea35897583a5bf5c 100644 (file)
@@ -36,3 +36,4 @@ D5:
        
        .picptr funcdesc(UFb)
        .word   UFb
+       .section        .note.GNU-stack
index cd8e1d0e35831204fb0d13d69ab79ad51453b74f..f2befde5ffda2acfcc8196efaaf069742a015e7b 100644 (file)
@@ -53,3 +53,4 @@ D6:
        
        .picptr funcdesc(WFb)
        .word   WFb
+       .section        .note.GNU-stack
index ceac5fcd7bc57ffde7bbd9c269bc222ac18ca389..60a345299c7e9966f183bda722fb7f6252e5a1f5 100644 (file)
@@ -61,3 +61,4 @@ D7:
 .D4:
        .picptr funcdesc(.Fb+4)
        .word   .Fb+4
+       .section        .note.GNU-stack
index 037250fae8c2c43bc867f766c4713e7ea6745483..d881f887dd8ae721ce9580c12bf7e626f58bb903 100644 (file)
@@ -79,3 +79,4 @@ GD3:
 GD4:
        .picptr funcdesc(GFb+4)
        .word   GFb+4
+       .section        .note.GNU-stack
index 75daab732b5a74454d9be981226fa1f4f1f2286a..aa5004b22bd07e247933f80d6db2697fd27feb25 100644 (file)
@@ -5,3 +5,4 @@
         .size   x, 4
 x:
         .zero   4
+       .section        .note.GNU-stack
index a13c91bc2d616748a39e6cfab093114d3c9f1a56..213acf0ae3f76d582565cb5a53880d343410c5a9 100644 (file)
@@ -83,3 +83,5 @@ _start:
        sethi.p #gottlsoffhi(0), gr14
        setlo   #gottlsofflo(0), gr14
        ld      #tlsoff(0)@(gr15, gr14), gr9
+
+       .section        .note.GNU-stack
index f0712e32b958dd6f06e0b16234df226dcf3177be..28a2930c9699f6f80cfee608a9e7fd60fa185542 100644 (file)
@@ -181,3 +181,5 @@ _start:
        setlo   #gottlsofflo(i+1+4096), gr8
        ld      #tlsoff(i+1+4096)@(gr15, gr8), gr9
 .endif
+
+       .section        .note.GNU-stack
index 6dd7972837c2f839fb3fd71d93631bfd98f5b6ec..59928884e91d8c53859611005627935d4cfbdb3a 100644 (file)
@@ -18,3 +18,5 @@ _start:
        sethi.p #gottlsoffhi(u), gr14
        setlo   #gottlsofflo(u), gr14
        ld      #tlsoff(u)@(gr15, gr14), gr9
+
+       .section        .note.GNU-stack
index 403f98000d927163d54d16625a90f3ffe651e123..66d3b2a88566c683fb6bc95a3683ec3654978031 100644 (file)
@@ -1 +1,2 @@
 # Dummy
+       .section        ".note.GNU-stack"
index fadbd16042086a0d49f599379e0e124447620a4c..471a1f79547357c753baddabe81e2f5cf0fc8a34 100644 (file)
@@ -240,12 +240,12 @@ set i386tests {
      "--32 -mx86-used-note=yes"
      { pr19827a.S }  {{readelf {-rW} pr19827.rd}} "pr19827.so"}
     {"Build pr27193a.so"
-     "-melf_i386 -shared" ""
+     "-melf_i386 -shared -z noexecstack" ""
      "--32"
      { pr27193a.o.bz2 pr27193b.s }
      {{objdump {-dw} pr27193.dd}} "pr27193a.so"}
     {"Build pr27193b.so"
-     "-melf_i386 -shared --reduce-memory-overheads" ""
+     "-melf_i386 -shared --reduce-memory-overheads -z noexecstack" ""
      "--32"
      { pr27193a.o.bz2 pr27193b.s }
      {{objdump {-dw} pr27193.dd}} "pr27193b.so"}
index fd1bfd268676d36bc30451d0275eda64007050fd..ce9562393d263ec987c147276cb174e4a46a03e0 100644 (file)
@@ -1,4 +1,4 @@
-#ld: -r tmpdir/lto-3b.o
+#ld: -r tmpdir/lto-3b.o -z noexecstack
 #source: dummy.s
 #nm: -p
 
index c35e2bc338d4bf1f9a298e1cb906f7b20bc1968f..dba30bfd33430836553e025353af89ddcf0c6c36 100644 (file)
@@ -1,4 +1,4 @@
-#ld: -r tmpdir/lto-5a.o tmpdir/lto-5b.o
+#ld: -r tmpdir/lto-5a.o tmpdir/lto-5b.o -z noexecstack
 #source: dummy.s
 #nm: -p
 
index f4ea1d48533fb48c0f8464e21bae9c47af7b0e98..33af6c45a412eb729ae6f493990633a226767727 100644 (file)
@@ -127,7 +127,7 @@ set lto_link_tests [list \
    "" "-flto -O2 $lto_fat $NOSANITIZE_CFLAGS" \
    {pr12758b.c} {} "libpr12758.a"] \
   [list "PR ld/12758" \
-   "$NOPIE_LDFLAGS $NOSANITIZE_CFLAGS -O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group" \
+   "$NOPIE_LDFLAGS $NOSANITIZE_CFLAGS -O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group -z noexecstack" \
    "$NOSANITIZE_CFLAGS" \
    {dummy.c} {} "pr12758.exe"] \
   [list "Build libpr13183.a" \
@@ -901,7 +901,7 @@ run_cc_link_tests $lto_link_symbol_tests
 
 run_ld_link_tests [list \
   [list "PR ld/19317 (2)" \
-   "-r tmpdir/pr19317.o" "" "" \
+   "-r tmpdir/pr19317.o -z noexecstack" "" "" \
    {dummy.s} {} "pr19317-r.o"] \
 ]
 
index 054c297790468e41249e160a70d8ddcb5fb34018..e6fb809a0fe0a36c7f1628d833f2d062cf4f54d1 100644 (file)
@@ -9,3 +9,4 @@
        .type   a, @object
        .size   a, 4
 a:
+       .section        .note.GNU-stack
index 9ad2396170e68e4866d13ff8ec7295966d851e58..cf1f34689f1fdfb579f973bac38312317b01034d 100644 (file)
@@ -31,7 +31,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001fc 0x001fc RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
   DYNAMIC        0x001154 0x00008154 0x00008154 0x000a8 0x000a8 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index cb065a2910f4da234dc8c1f246b40ae35839fc18..058bcbc69ffd18c2f793598298008b1a78ff7d95 100644 (file)
@@ -42,3 +42,4 @@ g2:
 
        .hidden c
        .scomm  c,4,4
+       .section        .note.GNU-stack
index 9ad2396170e68e4866d13ff8ec7295966d851e58..cf1f34689f1fdfb579f973bac38312317b01034d 100644 (file)
@@ -31,7 +31,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001fc 0x001fc RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
   DYNAMIC        0x001154 0x00008154 0x00008154 0x000a8 0x000a8 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index 9ad2396170e68e4866d13ff8ec7295966d851e58..cf1f34689f1fdfb579f973bac38312317b01034d 100644 (file)
@@ -31,7 +31,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001fc 0x001fc RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
   DYNAMIC        0x001154 0x00008154 0x00008154 0x000a8 0x000a8 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index 9ad2396170e68e4866d13ff8ec7295966d851e58..cf1f34689f1fdfb579f973bac38312317b01034d 100644 (file)
@@ -31,7 +31,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001fc 0x001fc RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
   DYNAMIC        0x001154 0x00008154 0x00008154 0x000a8 0x000a8 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index 3d786dd298bed62c3cde2522555a96f2d2fcfa9c..e6eba01c93a5e3646e2f5aa844f7ef4de5df0159 100644 (file)
@@ -21,3 +21,4 @@ sub:
                ldw .d2t2 *+B14(c), B9
                nop     1
        .size   sub, .-sub
+       .section        .note.GNU-stack
index 607d2709b3f723029e34afca3ed1bdf6bd980839..fb3a080f2c3984b3e3e43a6ac513cc2b20113b56 100644 (file)
@@ -32,7 +32,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x00208 0x00208 RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x000cc 0x000d0 RWE 0x1000
   DYNAMIC        0x001150 0x00008150 0x00008150 0x000b8 0x000b8 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index fe254bba3aa8652afd8367804234f0ee9289a11e..3bb00079f8309fe7fe3851215097191453525aae 100644 (file)
@@ -29,3 +29,4 @@ b:
 w:
        .long   g1
        .long   g2
+       .section        .note.GNU-stack
index 68d2076857c476f9bff7e74e5a19294759b00715..3a5d217830186c4a9bba20a508ffcc892ae23cb5 100644 (file)
@@ -32,7 +32,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x00208 0x00208 RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x000cc 0x000d0 RWE 0x1000
   DYNAMIC        0x001150 0x00008150 0x00008150 0x000b8 0x000b8 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index 82502afb0d0118610d7fbc3378024f06a33f90ea..288400b1bbc05e80d96e5e8c01cd228ccaaaea3e 100644 (file)
@@ -31,7 +31,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001c4 0x001c4 RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x000c4 0x000c8 RWE 0x1000
   DYNAMIC        0x00110c 0x0000810c 0x0000810c 0x000b8 0x000b8 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index a6de9000e3ab1593257342b77d47b2850b7df9a7..4928804ed0fedbb76f58e8a152ae216d66b42df6 100644 (file)
@@ -17,3 +17,4 @@ fish:
        .size   b, 4
 b:
        .long   0x12345678
+       .section        .note.GNU-stack
index 8d13fb2c2c4fc3f44c9132a1a68719c3836d0c6c..058261db8cad8309146cbf21e5e7d95afcce071c 100644 (file)
@@ -31,7 +31,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001c4 0x001c4 RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x000c4 0x000c8 RWE 0x1000
   DYNAMIC        0x00110c 0x0000810c 0x0000810c 0x000b8 0x000b8 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index f087d15bffd1b0760cca2391e392734bd71a6736..52e433424f1b1e3a5a7254eb4ddb5a2b79c3ba14 100644 (file)
@@ -32,7 +32,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x00210 0x00210 RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x00130 0x00134 RWE 0x1000
   DYNAMIC        0x001160 0x00008160 0x00008160 0x000b0 0x000b0 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index 36c48109912791d163fcedf451ab3fe623bcb3a2..6cb86cd4b75d51079f1f782fabaee5a49e1ca036 100644 (file)
@@ -29,7 +29,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001b8 0x001b8 RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x000f4 0x000f8 RWE 0x1000
   DYNAMIC        0x001128 0x00008128 0x00008128 0x00090 0x00090 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index 36c48109912791d163fcedf451ab3fe623bcb3a2..6cb86cd4b75d51079f1f782fabaee5a49e1ca036 100644 (file)
@@ -29,7 +29,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001b8 0x001b8 RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x000f4 0x000f8 RWE 0x1000
   DYNAMIC        0x001128 0x00008128 0x00008128 0x00090 0x00090 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index b04e327207de2ca8ad0b7266714fd33ea8c50855..8d9d11937b4541926a1b9d9e9a4806b0eb00457a 100644 (file)
@@ -29,7 +29,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001a0 0x001a0 RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x000ec 0x000f0 RWE 0x1000
   DYNAMIC        0x001110 0x00008110 0x00008110 0x00090 0x00090 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index b04e327207de2ca8ad0b7266714fd33ea8c50855..8d9d11937b4541926a1b9d9e9a4806b0eb00457a 100644 (file)
@@ -29,7 +29,7 @@ Program Headers:
   LOAD           0x001000 0x00008000 0x00008000 0x001a0 0x001a0 RW  0x1000
   LOAD           0x002000 0x10000000 0x10000000 0x000ec 0x000f0 RWE 0x1000
   DYNAMIC        0x001110 0x00008110 0x00008110 0x00090 0x00090 RW  0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RWE 0x8
+  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x20000 RW  0x8
 
  Section to Segment mapping:
   Segment Sections\.\.\.
index cd5e64e60d2da48eb9307d5ab98b0ee97fb2faa1..2ad41c252015893b1914b129671ad188fe262c31 100644 (file)
@@ -6,3 +6,6 @@ a_val:  .long 0
         .global main
 main:
         .long 0
+
+       .section        .note.GNU-stack,""
+
index 4896641b50b7ca028647ab8194581c789db3879b..71d5b862498633215deed56d93247dd115c9a785 100644 (file)
@@ -2,3 +2,5 @@
         .global main
 main:
        .dc.a b_val
+
+       .section        .note.GNU-stack
index f1914f3393f9a03f4e86062a3ae835954474fab3..359b13eb809e94ca99c2e3abe90926bc13eefd34 100644 (file)
@@ -1,3 +1,4 @@
        .type b_val, %gnu_unique_object
 b_val: .long 0
        .size b_val, .-b_val
+       .section        .note.GNU-stack
index 403f98000d927163d54d16625a90f3ffe651e123..66d3b2a88566c683fb6bc95a3683ec3654978031 100644 (file)
@@ -1 +1,2 @@
 # Dummy
+       .section        ".note.GNU-stack"
index 461bfa431476be92fc1ecdb5faddf4d169937820..01618d36d5a403ff520522e1fb3220c54cbbbf9d 100644 (file)
@@ -1,3 +1,4 @@
        .globl foo
 foo:
        mov %eax, %ebx
+       .section        .note.GNU-stack
index 58dfbb1dd82fa63ca3a49afd403165039e221a6a..62050e6a4cce2a851e88b51440f5c1909765f435 100644 (file)
@@ -16,3 +16,4 @@ main:
        addq    $8, %rsp
        jmp     *myexit@GOTPCREL(%rip)
        .size   main, .-main
+       .section        .note.GNU-stack
index 4b0149992699d30213c9201fdfd76f059261c9da..84a0c5d49083f72fe1a471587ded97b462bdf0df 100644 (file)
@@ -24,3 +24,4 @@ __FUNCTION__.2219:
        .size   __FUNCTION__.2215, 4
 __FUNCTION__.2215:
        .string "bar"
+       .section        .note.GNU-stack
index ccc91258729d6642c5eb80c4bec312a71b5853bb..7bc8b31f77ba805d9f8954ad9fd79473bb17657d 100644 (file)
@@ -16,3 +16,4 @@ h:
        .data
 zed:
         .long f - .
+       .section        .note.GNU-stack
index 438d7a5284aef1ea73d38d65e5a3c3526552e5bf..01eca1b85ab10a68ade31fa88dc847c6aa7e3de5 100644 (file)
@@ -9,3 +9,4 @@ foo:
        .align 8
        .long   4660
        .long   22136
+       .section        .note.GNU-stack
index c9285c07c17adc4fca78710ae44cd1c50bf6a989..73b8e89de66a1d4cea4690fa1b7cf2c92ec1b5c7 100644 (file)
@@ -9,3 +9,4 @@ _start:
        .align 8
        .long   4660
        .long   22136
+       .section        .note.GNU-stack
index cdf1d4b8a30f0f7f00fe3c5b5729dd34a2f61c1b..43241f5224e4a3ce454af94fe8daef87ae32b72a 100644 (file)
@@ -6,3 +6,5 @@ _start:
        .globl foo
 foo:
        .byte 0
+
+       .section        .note.GNU-stack
index bb46e1d59f06f3f64ec5ea72148cebc2a39a1a26..897c149ce2ce116a8098d7e59d415f77cc88d741 100644 (file)
@@ -1,2 +1,3 @@
        .data
        .dc.a foo
+       .section        .note.GNU-stack
index f318401e6998a3107d9f71ec666a33342318d652..9038436a624a7f69e4fe99214ce7da1a1fc53c3c 100644 (file)
@@ -5,3 +5,4 @@
        .size   foo, 4
 foo:
        .long   -1
+       .section        .note.GNU-stack
index eabeba2fb08041a93c4b73443844d6b7ec4a800f..abe96facac349859e39535f48c35b0d37b4b492d 100644 (file)
@@ -12,3 +12,4 @@ _start:
        .size   foo_p, 4
 foo_p:
        .long   foo
+       .section        .note.GNU-stack
index 4430398817dca4b8ff96c498fa20b09a706b2f7c..167255a797a17f4241caf424ee0499da236a3dba 100644 (file)
@@ -4,3 +4,4 @@ _start:
        movabsq $strings@SIZE, %rdx
        .section        .data.rel,"aw",@progbits
        .quad   strings
+       .section        .note.GNU-stack
index c4bcd80a7a1a92558c5bdfb5ab56d84ea591844d..95024e280e5b488fbba72f2e4af27d0e95dcf792 100644 (file)
@@ -15,3 +15,4 @@ main:
        popq    %r15
        ret
        .size   main, .-main
+       .section        .note.GNU-stack
index 9751db49aa52f734bd2948ea857f242c6d50d471..4bd75570253c5f89a84fba8b2914aac98d604ac5 100644 (file)
@@ -4,3 +4,4 @@
 main:
        movl    foo(%rip), %eax
        .size   main, .-main
+       .section        .note.GNU-stack
index 8fa185d42a782e99ce54a6b02bb4e5798ed0ff40..9bbcdc5f867229101651793a272a762da1dfd50f 100644 (file)
@@ -31,3 +31,4 @@
        .type   foo, @function
 foo:
        ret
+       .section        .note.GNU-stack
index 41246d305e281fd4be31f916e8799004535dbe1b..ab4531886867edbd3623938e5742d584972e76c2 100644 (file)
@@ -21,3 +21,4 @@
 5:
        .p2align ALIGN
 3:
+       .section        .note.GNU-stack
index 88cc2520211f9b677aadb7735ca0d239919ad9b6..c95054c3f7619b752c4e3d0911bde405f6567ec3 100644 (file)
@@ -18,3 +18,4 @@
        .long 0                 /* pr_datasz.  */
        .p2align ALIGN
 3:
+       .section        .note.GNU-stack
index 7f45654dc25780b00e084b2bd0efe21fa9fa7025..ede808a7de072f7b00387f8b929335d7957caee4 100644 (file)
@@ -21,3 +21,4 @@
 5:
        .p2align ALIGN
 3:
+       .section        .note.GNU-stack
index de96e7a4e80a33ac03e40b7b945e5da9496f65da..482b85e7017b797b28c48b7f79039e84207fea86 100644 (file)
@@ -37,3 +37,4 @@
 5:
        .p2align ALIGN
 3:
+       .section        .note.GNU-stack
index 65d7fad3fe9f257cedf25ecf3b90a408f6b41f5b..1be6703083f7dcbfd1406904d3c008c90d7b9e61 100644 (file)
@@ -25,3 +25,4 @@
 5:
        .p2align ALIGN
 3:
+       .section        .note.GNU-stack
index b669e728a51c81cd99b06db96fb9fe233537615b..6d1d8fbaef57703734c99ab8b0e9eae8b2379142 100644 (file)
@@ -35,3 +35,4 @@
 5:
        .p2align ALIGN
 3:
+       .section        .note.GNU-stack
index b108b1704dead5fc9c988ea33902a5368be9b974..613d5b21ce7b706261505dd34cde67a81d4c9ea8 100644 (file)
@@ -28,3 +28,4 @@
 5:
        .p2align ALIGN
 3:
+       .section        .note.GNU-stack
index 80301c6a7e4dee67c1157919a64f7995d126137f..4262a3380fae60e623755a52c31cf80413f012bd 100644 (file)
@@ -1,3 +1,4 @@
        .globl _start
 _start:
        jmp foo
+       .section        .note.GNU-stack