Patchwork Add missing explicit instantiation for std::lower_bound template

login
register
mail settings
Submitter Dodji Seketeli
Date Feb. 4, 2013, 3:53 p.m.
Message ID <8738xcm5xc.fsf@redhat.com>
Download mbox | patch
Permalink /patch/217974/
State New
Headers show

Comments

Dodji Seketeli - Feb. 4, 2013, 3:53 p.m.
Hello,

Since commit r195676[1], it looks like
libstdc++-v3/src/c++11/hashtable_c++0x.cc is missing an explicit
instantiation for std::lower_bound.  This leads to libstdc++.so having
the symbol for that (missing) instantiation be undefined, thus
preventing executables from being linked with libstdc++.

The patchlet below seems to fixed the issue for me.

Boostrapped and tested on x86_64-unknown-linux-gnu.

[1]:

    commit bc36b44c7cb0e5e97ac807b8fb17507e0fb09008
    Author: fdumont <fdumont@138bc75d-0d04-0410-961f-82ee72b054a4>
    Date:   Fri Feb 1 20:44:41 2013 +0000

	2013-02-01  Fran├žois Dumont  <fdumont@gcc.gnu.org>

	    * include/bits/hashtable_policy.h
	    (_Prime_rehash_policy::_M_next_bkt)
	    (_Prime_rehash_policy::_M_need_rehash): Move definition...
	    * src/c++11/hashtable_c++0x.cc: ... here.
	    * src/shared/hashtable-aux.cc: Remove c++config.h include.
	    * config/abi/gnu.ver (GLIBCXX_3.4.18): Export _Prime_rehash_policy
	    symbols.

	git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195676 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog

	* libstdc++-v3/src/c++11/hashtable_c++0x.cc (namespace std): Add
	missing instantiation for std::lower_bound template.
---
 libstdc++-v3/ChangeLog                    | 6 ++++++
 libstdc++-v3/src/c++11/hashtable_c++0x.cc | 7 +++++++
 2 files changed, 13 insertions(+)

Patch

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 1a8a822..8ae9343 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@ 
+2013-02-04  Dodji Seketeli  <dodji@redhat.com>
+
+	Add missing explicit instantiation for std::lower_bound template
+	* libstdc++-v3/src/c++11/hashtable_c++0x.cc (namespace std): Add
+	missing instantiation for std::lower_bound template.
+
 2013-02-03  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	Update copyright years.
diff --git a/libstdc++-v3/src/c++11/hashtable_c++0x.cc b/libstdc++-v3/src/c++11/hashtable_c++0x.cc
index 7617c58..942d119 100644
--- a/libstdc++-v3/src/c++11/hashtable_c++0x.cc
+++ b/libstdc++-v3/src/c++11/hashtable_c++0x.cc
@@ -94,4 +94,11 @@  namespace __detail
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace __detail
+
+ // Instantiations.
+ template unsigned long const*
+ lower_bound<unsigned long const *,
+	     unsigned long>(unsigned long const*,
+			    unsigned long const*,
+			    const unsigned long &);
 } // namespace std