From: pavenis AT lanet DOT lv Message-ID: To: djgpp-workers AT delorie DOT com, egcs-bugs AT egcs DOT cygnus DOT com Date: Fri, 11 Jun 1999 18:57:57 +0300 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Problem with libg++-2.8.1.3 tests (libg++/etc/PlotFile3D) X-mailer: Pegasus Mail for Win32 (v3.11) Reply-To: djgpp-workers AT delorie DOT com Hi! I tested gcc-2.95 prerelease (19990608) built for DJGPP (i586-pc- msdosdjgpp) and found following problem when compiling tests of libg++-2.8.1.3. I got unresolved references from PlotFile3D.o: -------------------------------------------- /Devel/build/egcs-19990608/build.djg/gcc/xgcc -B/Devel/build/egcs- 19990608/build.djg/gcc/ -Bd:/djgpp/i586-pc-msdosdjgpp/bin/ -c -O2 -nostdinc++ -I. -I../../../libio -I../../../../../libgpp/etc/PlotFile3D - I../../../../../libgpp/etc/PlotFile3D/../../../libio - I../../../../../libgpp/etc/PlotFile3D/.. /../../libstdcxx -I../../../../../libgpp/etc/PlotFile3D/../../src ../../../../../libgpp/etc/PlotFile3D/PlotFile3D.cc /../../libstdcxx -I../../../../../libgpp/etc/PlotFile3D/../../src ../../../../../libgpp/etc/PlotFile3D/tPlotFile3D.cc /Devel/build/egcs-19990608/build.djg/gcc/xgcc -B/Devel/build/egcs- 19990608/build.djg/gcc/ -Bd:/djgpp/i586-pc-msdosdjgpp/bin/ -O2 tPlotFile3D.o PlotFile3D.o -L./../../ -L./../../../libstdcxx -lgpp - lstdcxx -lm -o tPlotFile3D tPlotFile3D.o(.text+0x245):tPlotFile3D.cc: undefined reference to `PlotFile3D::ios virtual table' PlotFile3D.o(.text+0x301):PlotFile3D.cc: undefined reference to `PlotFile3D::ios virtual table' PlotFile3D.o(.text+0x30f):PlotFile3D.cc: undefined reference to `PlotFile3D::ios virtual table' PlotFile3D.o(.text+0x330):PlotFile3D.cc: undefined reference to `PlotFile3D::ios virtual table' collect2: ld returned 1 exit status make.exe: *** [tPlotFile3D] Error 1 -------------------------------------------- Here is output of 'nm --extern-only PlotFile3D.o | c++filt' -------------------------------------------- 000002f0 T PlotFile3D::~PlotFile3D(void) U filebuf::~filebuf(void) U ___builtin_delete U ___builtin_vec_delete U ___builtin_vec_new U ___eprintf U ___throw U PlotFile3D::ios virtual table U fstreambase::ios virtual table U ios virtual table U ostream::ios virtual table U PlotFile::ios virtual table U ofstream::ios virtual table 00000e28 T PlotFile3D::box(Vec3D const &, Vec3D const &) 00001990 T PlotFile3D::box(double, double, double, double, double, double) 00001020 T PlotFile3D::circle(Vec3D const &, Vec3D const &, int) 000019f4 T PlotFile3D::circle(double, double, double, double, double, double, int) 00000ca4 T PlotFile3D::cont(Vec3D const &) 00001954 T PlotFile3D::cont(double, double, double) U PlotFile::cont(int, int) U _cos 0000009c T PlotFile3D::error(char const *) const 000017e4 T PlotFile3D::home(void) 000001c8 T PlotFile3D::initialize(bool, double, double) U _lib_error_handler 000009b0 T PlotFile3D::line2D(int, int, int, int) 000008e4 T PlotFile3D::move(Vec3D const &) 00001918 T PlotFile3D::move(double, double, double) U PlotFile::move(int, int) 0000090c T PlotFile3D::project(int &, int &, Vec3D const &, Vec3D const &, Vec3D const &) const U _sin 000003f8 T PlotFile3D::space(Vec3D const &, Vec3D const &) 000018b4 T PlotFile3D::space(double, double, double, double, double, double) U PlotFile::space(int, int, int, int) 0000180c T PlotFile3D::sphere(Vec3D const &, Vec3D const &, int) 00001a58 T PlotFile3D::sphere(double, double, double, double, double, double, int) U _sqrt -------------------------------------------- I also tested that in Linux (i586-pc-linux-gnu, glibc-2.1.1, gcc-2.95 1990607) the missing symbol is weak: -------------------------------------------- 00000214 T PlotFile3D::~PlotFile3D(void) U filebuf::~filebuf(void) 00000000 W ofstream::~ofstream(void) 00001e70 T PlotFile3D::PlotFile3D(int, char const *, bool, double, double) 000018b8 T PlotFile3D::PlotFile3D(int, bool, double, double) 00001b90 T PlotFile3D::PlotFile3D(int, int, bool, double, double) U fstreambase::fstreambase(int) U fstreambase::fstreambase(int, char const *, int, int) U fstreambase::fstreambase(int, int) U __assert_fail U __builtin_delete U __builtin_vec_delete U __builtin_vec_new U __rtti_class 00000000 W PlotFile3D type_info function U PlotFile type_info function U __throw 00000000 W virtual function thunk (delta:-372) for PlotFile3D::~PlotFile3D(void) 00000010 C PlotFile3D type_info node U PlotFile type_info node 00000000 W PlotFile3D::ios virtual table U fstreambase::ios virtual table U ios virtual table U ostream::ios virtual table U PlotFile::ios virtual table U ofstream::ios virtual table 00000cd8 T PlotFile3D::box(Vec3D const &, Vec3D const &) 00001798 T PlotFile3D::box(double, double, double, double, double, double) 00000ec0 T PlotFile3D::circle(Vec3D const &, Vec3D const &, int) 000017f8 T PlotFile3D::circle(double, double, double, double, double, double, int) 00000b38 T PlotFile3D::cont(Vec3D const &) 0000175c T PlotFile3D::cont(double, double, double) U PlotFile::cont(int, int) 00002150 T PlotFile3D::define3D(void) 000022c0 T PlotFile3D::erase(void) U PlotFile::erase(void) 00000000 T PlotFile3D::error(char const *) const 00001610 T PlotFile3D::home(void) 000000dc T PlotFile3D::initialize(bool, double, double) 000022e4 T PlotFile3D::label(char const *) U PlotFile::label(char const *) U lib_error_handler 00000844 T PlotFile3D::line2D(int, int, int, int) 000021a8 T PlotFile3D::line(Vec3D const &, Vec3D const &) 00002204 T PlotFile3D::line(double, double, double, double, double, double) 0000230c T PlotFile3D::linemod(char const *) U PlotFile::linemod(char const *) 00000100 R margin 00000770 T PlotFile3D::move(Vec3D const &) 00001718 T PlotFile3D::move(double, double, double) U PlotFile::move(int, int) 00002178 T PlotFile3D::must_be_valid3D(void) 000021d8 T PlotFile3D::point(Vec3D const &) 00002278 T PlotFile3D::point(double, double, double) 000007a0 T PlotFile3D::project(int &, int &, Vec3D const &, Vec3D const &, Vec3D const &) const 000002a8 T PlotFile3D::space(Vec3D const &, Vec3D const &) 000016bc T PlotFile3D::space(double, double, double, double, double, double) U PlotFile::space(int, int, int, int) 0000163c T PlotFile3D::sphere(Vec3D const &, Vec3D const &, int) 00001858 T PlotFile3D::sphere(double, double, double, double, double, double, int) U terminate(void) 000000f8 R umaxi 000000f0 R umini 00002164 T PlotFile3D::undefine3D(void) 000000fc R vmaxi 000000f4 R vmini -------------------------------------------- After that I tested with egcs-1.1.2 built for DJGPP and got the same (unresolved reference). Strange as as I remeber I run tests of egcs-1.1.2 in March and done' remeber anything like. Also removing #pragma interface and #pragma implementation seems to fix the problem Andris