summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--binutils-2.21/gold/ChangeLog9
-rw-r--r--binutils-2.21/gold/layout.cc12
-rw-r--r--binutils-2.24/gold/ChangeLog8
-rw-r--r--binutils-2.24/gold/layout.cc12
4 files changed, 35 insertions, 6 deletions
diff --git a/binutils-2.21/gold/ChangeLog b/binutils-2.21/gold/ChangeLog
index b04fc3b6..9c148e0c 100644
--- a/binutils-2.21/gold/ChangeLog
+++ b/binutils-2.21/gold/ChangeLog
@@ -1,3 +1,12 @@
+2014-12-01 Cary Coutant <ccoutant@google.com>
+
+ 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.
+
+
2010-12-01 Ian Lance Taylor <iant@google.com>
* testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
diff --git a/binutils-2.21/gold/layout.cc b/binutils-2.21/gold/layout.cc
index 5f7259cc..3f257a02 100644
--- a/binutils-2.21/gold/layout.cc
+++ b/binutils-2.21/gold/layout.cc
@@ -1643,8 +1643,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());
}
@@ -2465,7 +2464,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
diff --git a/binutils-2.24/gold/ChangeLog b/binutils-2.24/gold/ChangeLog
index dcf7ed41..089a34a8 100644
--- a/binutils-2.24/gold/ChangeLog
+++ b/binutils-2.24/gold/ChangeLog
@@ -1,3 +1,11 @@
+2014-12-01 Cary Coutant <ccoutant@google.com>
+
+ 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.
+
2013-11-22 Cary Coutant <ccoutant@google.com>
* testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree
diff --git a/binutils-2.24/gold/layout.cc b/binutils-2.24/gold/layout.cc
index 38fd272b..b0a90263 100644
--- a/binutils-2.24/gold/layout.cc
+++ b/binutils-2.24/gold/layout.cc
@@ -2086,8 +2086,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());
}
@@ -2958,7 +2957,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