Mail Archives: djgpp-workers/1999/06/11/11:58:09
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
- Raw text -