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