This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gold commit] PR gold/17578: Fix extraneous warning about executable stack


PR gold/17578 notes that gold will print a warning about an executable stack
when the -z execstack option is given, even when there is no --warn_execstack
option. The warning is completely useless and unexpected, since the user
explicitly requested an executable stack, and did not even ask for warnings.

This patch fixes that, and adds an extra warning when --warn_execstack
and -z noexecstack are both given and an input file requires an executable
stack.


2014-12-01  Cary Coutant  <ccoutant@google.com>

gold/
        PR gold/17578
        * layout.cc (Layout::layout_gnu_stack): Don't warn when -z execstack
        is given.
        (Layout::create_executable_stack_info): Warn when -z noexecstack is
        given but some inputs require executable stack.


diff --git a/gold/layout.cc b/gold/layout.cc
index 4e60f8e..a0d7c59 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -2101,8 +2101,7 @@ Layout::layout_gnu_stack(bool seen_gnu_stack,
uint64_t gnu_stack_flags,
       if ((gnu_stack_flags & elfcpp::SHF_EXECINSTR) != 0)
        {
          this->input_requires_executable_stack_ = true;
-         if (parameters->options().warn_execstack()
-             || parameters->options().is_stack_executable())
+         if (parameters->options().warn_execstack())
            gold_warning(_("%s: requires executable stack"),
                         obj->name().c_str());
        }
@@ -2975,7 +2974,14 @@ Layout::create_executable_stack_info()
 {
   bool is_stack_executable;
   if (parameters->options().is_execstack_set())
-    is_stack_executable = parameters->options().is_stack_executable();
+    {
+      is_stack_executable = parameters->options().is_stack_executable();
+      if (!is_stack_executable
+          && this->input_requires_executable_stack_
+          && parameters->options().warn_execstack())
+       gold_warning(_("one or more inputs require executable stack, "
+                      "but -z noexecstack was given"));
+    }
   else if (!this->input_with_gnu_stack_note_)
     return;
   else


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]