This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Missing concept check instantiations on sparc-sun-solaris2.8 cross sometimes


For very simple programs the gcc-3.3 cross compiler for
sparc-sun-solaris2.8 (on i686-pc-linux-gnu), some of the concept
checking helpers do not get instantiated.  Is this a known issue?  The
compiler I am using includes the patch discussed in
http://gcc.gnu.org/ml/libstdc++/2003-05/msg00247.html 

I have determined that by using the std::copy() algorithm (for any
types?) causes the templates to be instantiated (or something) and the
problem goes away.  I hadn't noticed it until now because this never
shows up in bigger (real) programs.

For example (sorry about the noise), consider the following program.

$ cat test_nothing.cc
#include <iostream>
#include <algorithm>

int
main()
{
  char a, b;
  //  std::copy(&a, &a + 1, &b);
  std::cout << "Hello, world!" << std::endl;
  return 0;
}

With the copy line commented out, I get linker errors reporting that
some of the instantiations are missing.   Uncommenting it fixes the
problem.  It seems that iostream is assuming the presence of some
instantiations that aren't always there.  Perhaps there are some
missing from concept-inst.cc?  I'm not that familiar with exactly how
this mechanism works.

$ /opt/gcc-3.3-cross/sparc-sun-solaris2.8/bin/sparc-sun-solaris2.8-g++
-v -Wall -o test_nothing test_nothing.cc
Reading specs from
/opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/specs
Configured with: ../../gcc-3.3/configure --with-dwarf2
--enable-languages=c,c++ --enable-threads=single --disable-shared
--prefix=/opt/gcc-3.3-cross/sparc-sun-solaris2.8
--target=sparc-sun-solaris2.8
--with-headers=/build/eng-linux1/spencer/gcc-cross/sparc-sun-solaris2.8/target-stuff/include/
--with-lib=/opt/gcc-3.3-cross/sparc-sun-solaris2.8/sparc-sun-solaris2.8/lib
--with-gnu-as --with-gnu-ld --disable-multilib --enable-concept-checks
--enable-clocale=generic
Thread model: single
gcc version 3.3
 /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/cc1plus -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=0 -Dsparc -D__sparc__ -D__sparc -D__GCC_NEW_VARARGS__ -Acpu=sparc -Amachine=sparc test_nothing.cc -D__GNUG__=3 -quiet -dumpbase test_nothing.cc -auxbase test_nothing -Wall -version -o /tmp/ccB1LlR9.s
GNU C++ version 3.3 (sparc-sun-solaris2.8)
        compiled by GNU C version 3.3.
GGC heuristics: --param ggc-min-expand=64 --param
ggc-min-heapsize=64429
ignoring nonexistent directory
"/opt/gcc-3.3-cross/sparc-sun-solaris2.8/sparc-sun-solaris2.8/include"
#include "..." search starts here:
#include <...> search starts here:
 /opt/gcc-3.3-cross/sparc-sun-solaris2.8/include/c++/3.3
 /opt/gcc-3.3-cross/sparc-sun-solaris2.8/include/c++/3.3/sparc-sun-solaris2.8
 /opt/gcc-3.3-cross/sparc-sun-solaris2.8/include/c++/3.3/backward
 /opt/gcc-3.3-cross/sparc-sun-solaris2.8/include
 /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/include
 /opt/gcc-3.3-cross/sparc-sun-solaris2.8/sparc-sun-solaris2.8/sys-include
End of search list.
test_nothing.cc: In function `int main()':
test_nothing.cc:7: warning: unused variable `char a'
test_nothing.cc:7: warning: unused variable `char b'
 /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/../../../../sparc-sun-solaris2.8/bin/as -V -Qy -s -o /tmp/ccRAtdrS.o /tmp/ccB1LlR9.s
GNU assembler version 2.13.2.1 (sparc-sun-solaris2.8) using BFD
version 2.13.2.1
 /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/collect2 -V -Y P,/usr/ccs/lib:/usr/lib -Qy -o test_nothing /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/crt1.o /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/crti.o /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/../../../../sparc-sun-solaris2.8/lib/values-Xa.o /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/crtbegin.o -L/opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3 -L/opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/../../../../sparc-sun-solaris2.8/lib /tmp/ccRAtdrS.o -lstdc++ -lm -lgcc -lc -lgcc -lc /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/crtend.o /opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/crtn.o
/opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/../../../../sparc-sun-solaris2.8/lib/libstdc++.a(istream-inst.o):
In function
`__gnu_cxx::_LessThanComparableConcept<int>::__constraints()':
/build/eng-linux1/spencer/gcc-cross/sparc-sun-solaris2.8/build-gcc/sparc-sun-solaris2.8/libstdc++-v3/include/istream:105:
undefined reference to `void
__gnu_cxx::__aux_require_boolean_expr<bool>(bool const&)'
/opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/../../../../sparc-sun-solaris2.8/lib/libstdc++.a(locale.o):
In function
`__gnu_cxx::_LessThanComparableConcept<unsigned>::__constraints()':
/build/eng-linux1/spencer/gcc-cross/sparc-sun-solaris2.8/build-gcc/sparc-sun-solaris2.8/libstdc++-v3/include/sparc-sun-solaris2.8/bits/atomicity.h:100:
undefined reference to `void
__gnu_cxx::__aux_require_boolean_expr<bool>(bool const&)'
/opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/../../../../sparc-sun-solaris2.8/lib/libstdc++.a(streambuf-inst.o):
In function
`__gnu_cxx::_LessThanComparableConcept<long>::__constraints()':
/build/eng-linux1/spencer/gcc-cross/sparc-sun-solaris2.8/build-gcc/sparc-sun-solaris2.8/libstdc++-v3/include/streambuf:290:
undefined reference to `void
__gnu_cxx::__aux_require_boolean_expr<bool>(bool const&)'
/opt/gcc-3.3-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.3/../../../../sparc-sun-solaris2.8/lib/libstdc++.a(fstream-inst.o):
In function
`__gnu_cxx::_LessThanComparableConcept<char*>::__constraints()':
/build/eng-linux1/spencer/gcc-cross/sparc-sun-solaris2.8/build-gcc/sparc-sun-solaris2.8/libstdc++-v3/include/sparc-sun-solaris2.8/bits/atomicity.h:100:
undefined reference to `void
__gnu_cxx::__aux_require_boolean_expr<bool>(bool const&)'
GNU ld version 2.13.2.1
  Supported emulations:
   elf32_sparc
   elf64_sparc
collect2: ld returned 1 exit status

-- 
------------------------------------------------------------------
Brad Spencer - spencer@infointeractive.com - "It's quite nice..."
Systems Architect | InfoInterActive Corp. | A Canadian AOL Company


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]