https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88681

            Bug ID: 88681
           Summary: Missing symbol exports in libstdc++.so
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

The following fails to link:

#define _GLIBCXX_USE_CXX11_ABI 0
#include <locale>
#include <sstream>
#include <string>

template<typename C>
void test_time_get()
{
  using namespace std;

  locale loc_c = locale::classic();

  basic_istringstream<C> iss;
  iss.imbue(loc_c);
  const time_get<C>& tget = use_facet<time_get<C>>(iss.getloc());
  typedef istreambuf_iterator<C> iter;
  const iter end;

  tm time;
  ios_base::iostate err = ios_base::badbit;

  tget.get(iter(iss), end, iss, err, &time, 'Y');
}

std::string s = "C";

template<typename C>
struct facet : std::collate_byname<C>
{
  facet() : std::collate_byname<C>(s) { }
};

template<typename C>
void
test_collate_byname()
{
  facet<C> c;
}


int main()
{
  test_time_get<char>();
  test_time_get<wchar_t>();
  test_collate_byname<char>();
  test_collate_byname<wchar_t>();
}

The errors are:

/usr/bin/ld: /tmp/ccHErRY2.o: in function `void test_time_get<char>()':
/tmp/missing.cc:22: undefined reference to `std::time_get<char,
std::istreambuf_iterator<char, std::char_traits<char> >
>::get(std::istreambuf_iterator<char, std::char_traits<char> >,
std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&,
std::_Ios_Iostate&, tm*, char, char) const'
/usr/bin/ld: /tmp/ccHErRY2.o: in function `void test_time_get<wchar_t>()':
/tmp/missing.cc:22: undefined reference to `std::time_get<wchar_t,
std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >
>::get(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,
std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,
std::_Ios_Iostate&, tm*, char, char) const'
/usr/bin/ld: /tmp/ccHErRY2.o: in function `facet<char>::facet()':
/tmp/missing.cc:30: undefined reference to
`std::collate_byname<char>::collate_byname(std::string const&, unsigned long)'
/usr/bin/ld: /tmp/ccHErRY2.o: in function `facet<wchar_t>::facet()':
/tmp/missing.cc:30: undefined reference to
`std::collate_byname<wchar_t>::collate_byname(std::string const&, unsigned
long)'
collect2: error: ld returned 1 exit status

The exports have been missing since these symbols were added for GCC 5.1

Reply via email to