Rex Dieter 0e5924d
diff -up binutils-2.25.1/gold/layout.cc.dynamic_list~ binutils-2.25.1/gold/layout.cc
Rex Dieter 0e5924d
--- binutils-2.25.1/gold/layout.cc.dynamic_list~	2014-10-14 02:32:04.000000000 -0500
Rex Dieter 0e5924d
+++ binutils-2.25.1/gold/layout.cc	2015-08-06 10:45:35.022531546 -0500
Rex Dieter 0e5924d
@@ -4857,7 +4857,8 @@ Layout::finish_dynamic_section(const Inp
Rex Dieter 0e5924d
     flags |= elfcpp::DF_STATIC_TLS;
Rex Dieter 0e5924d
   if (parameters->options().origin())
Rex Dieter 0e5924d
     flags |= elfcpp::DF_ORIGIN;
Rex Dieter 0e5924d
-  if (parameters->options().Bsymbolic())
Rex Dieter 0e5924d
+  if (parameters->options().Bsymbolic()
Rex Dieter 0e5924d
+      && !parameters->options().have_dynamic_list())
Rex Dieter 0e5924d
     {
Rex Dieter 0e5924d
       flags |= elfcpp::DF_SYMBOLIC;
Rex Dieter 0e5924d
       // Add DT_SYMBOLIC for compatibility with older loaders.
Rex Dieter 0e5924d
diff -up binutils-2.25.1/gold/options.cc.dynamic_list~ binutils-2.25.1/gold/options.cc
Rex Dieter 0e5924d
--- binutils-2.25.1/gold/options.cc.dynamic_list~	2014-10-14 02:32:04.000000000 -0500
Rex Dieter 0e5924d
+++ binutils-2.25.1/gold/options.cc	2015-08-06 10:45:35.023531554 -0500
Rex Dieter 0e5924d
@@ -1200,13 +1200,6 @@ General_options::finalize()
Rex Dieter 0e5924d
   // in the path, as appropriate.
Rex Dieter 0e5924d
   this->add_sysroot();
Rex Dieter 0e5924d
 
Rex Dieter 0e5924d
-  // --dynamic-list overrides -Bsymbolic and -Bsymbolic-functions.
Rex Dieter 0e5924d
-  if (this->have_dynamic_list())
Rex Dieter 0e5924d
-    {
Rex Dieter 0e5924d
-      this->set_Bsymbolic(false);
Rex Dieter 0e5924d
-      this->set_Bsymbolic_functions(false);
Rex Dieter 0e5924d
-    }
Rex Dieter 0e5924d
-
Rex Dieter 0e5924d
   // Now that we've normalized the options, check for contradictory ones.
Rex Dieter 0e5924d
   if (this->shared() && this->is_static())
Rex Dieter 0e5924d
     gold_fatal(_("-shared and -static are incompatible"));
Rex Dieter 0e5924d
diff -up binutils-2.25.1/gold/symtab.h.dynamic_list~ binutils-2.25.1/gold/symtab.h
Rex Dieter 0e5924d
--- binutils-2.25.1/gold/symtab.h.dynamic_list~	2014-10-14 02:32:04.000000000 -0500
Rex Dieter 0e5924d
+++ binutils-2.25.1/gold/symtab.h	2015-08-06 10:45:35.023531554 -0500
Rex Dieter 0e5924d
@@ -604,10 +604,8 @@ class Symbol
Rex Dieter 0e5924d
     if (parameters->options().in_dynamic_list(this->name()))
Rex Dieter 0e5924d
       return true;
Rex Dieter 0e5924d
 
Rex Dieter 0e5924d
-    // If the user used -Bsymbolic or provided a --dynamic-list script,
Rex Dieter 0e5924d
-    // then nothing (else) is preemptible.
Rex Dieter 0e5924d
-    if (parameters->options().Bsymbolic()
Rex Dieter 0e5924d
-        || parameters->options().have_dynamic_list())
Rex Dieter 0e5924d
+    // If the user used -Bsymbolic, then nothing (else) is preemptible.
Rex Dieter 0e5924d
+    if (parameters->options().Bsymbolic())
Rex Dieter 0e5924d
       return false;
Rex Dieter 0e5924d
 
Rex Dieter 0e5924d
     // If the user used -Bsymbolic-functions, then functions are not
Rex Dieter 0e5924d
diff -up binutils-2.25.1/gold/testsuite/Makefile.am.dynamic_list~ binutils-2.25.1/gold/testsuite/Makefile.am
Rex Dieter 0e5924d
--- binutils-2.25.1/gold/testsuite/Makefile.am.dynamic_list~	2015-07-21 03:20:58.000000000 -0500
Rex Dieter 0e5924d
+++ binutils-2.25.1/gold/testsuite/Makefile.am	2015-08-06 10:45:35.024531563 -0500
Rex Dieter 0e5924d
@@ -1516,7 +1516,7 @@ dynamic_list_lib1.o: dynamic_list_lib1.c
Rex Dieter 0e5924d
 	$(CXXCOMPILE) -c -fpic -o $@ $<
Rex Dieter 0e5924d
 
Rex Dieter 0e5924d
 dynamic_list_lib2.so: gcctestdir/ld dynamic_list_lib2.o $(srcdir)/dynamic_list_2.t
Rex Dieter 0e5924d
-	$(CXXLINK) -Bgcctestdir/ -shared -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
Rex Dieter 0e5924d
+	$(CXXLINK) -Bgcctestdir/ -shared -Wl,-Bsymbolic-functions -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
Rex Dieter 0e5924d
 dynamic_list_lib2.o: dynamic_list_lib2.cc
Rex Dieter 0e5924d
 	$(CXXCOMPILE) -c -fpic -o $@ $<
Rex Dieter 0e5924d
 
Rex Dieter 0e5924d
diff -up binutils-2.25.1/gold/testsuite/Makefile.in.dynamic_list~ binutils-2.25.1/gold/testsuite/Makefile.in
Rex Dieter 0e5924d
--- binutils-2.25.1/gold/testsuite/Makefile.in.dynamic_list~	2015-07-21 03:20:58.000000000 -0500
Rex Dieter 0e5924d
+++ binutils-2.25.1/gold/testsuite/Makefile.in	2015-08-06 10:45:35.025531571 -0500
Rex Dieter 0e5924d
@@ -5277,7 +5277,7 @@ uninstall-am:
Rex Dieter 0e5924d
 @GCC_TRUE@@NATIVE_LINKER_TRUE@	$(CXXCOMPILE) -c -fpic -o $@ $<
Rex Dieter 0e5924d
 
Rex Dieter 0e5924d
 @GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list_lib2.so: gcctestdir/ld dynamic_list_lib2.o $(srcdir)/dynamic_list_2.t
Rex Dieter 0e5924d
-@GCC_TRUE@@NATIVE_LINKER_TRUE@	$(CXXLINK) -Bgcctestdir/ -shared -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
Rex Dieter 0e5924d
+@GCC_TRUE@@NATIVE_LINKER_TRUE@	$(CXXLINK) -Bgcctestdir/ -shared -Wl,-Bsymbolic-functions -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
Rex Dieter 0e5924d
 @GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list_lib2.o: dynamic_list_lib2.cc
Rex Dieter 0e5924d
 @GCC_TRUE@@NATIVE_LINKER_TRUE@	$(CXXCOMPILE) -c -fpic -o $@ $<
Rex Dieter 0e5924d