Strange __cxa_pure_virtual problem

Uwe Kindler <[email protected]>
Newsgroups gmane.os.ecos.devel
Message-ID <[email protected]>
Hi,

I'm currently in the process of testing uSTL library port. I tried to 
build the library without filestream support and without package file I/O.

The library build process succeeds. Bu if I start building the test 
cases then the compiler fails on building diag_sprintf1 test with the 
error message:

make[1]: Leaving directory 
`/home/Nutzer/ustl_test_08_nofio_build/infra/current'
/opt/ecos/gnutools/arm-eabi/bin/../lib/gcc/arm-eabi/4.3.2/../../../../arm-eabi/lib/nointerwork/libsupc++.a(pure.o): 
In function `__cxa_pure_virtual':
make: Leaving directory `/home/Nutzer/ustl_test_08_nofio_build'
(.text.__cxa_pure_virtual+0x14): undefined reference to `write'
collect2: ld returned 1 exit status

So the compiler/linker does not link the __cxa_pure_virtual function in 
infra/current/src/pure.cxx and instead takes the implementation from 
libsupc++.

In the libsupc++ source file pure.cc the function __cxa_pure_virtual 
writes an error string to stderr via 'write' function. Because no file 
I/O package is present, there is no write function and the reference to 
'write' is undefinded.

This error only occures for debug builds (-g2 -O0). If I build with -g 
-O2 this error does not occur. This problem does not occur, if I link my 
  main.cpp application against the library but it occures when I build 
test cases. As soon as I add the file I/O package, the tests build 
process succeeds because a 'write' function is present.

The question is, how can/should I solve this problem? Is there a way to 
force the compiler/linker to use the infra/current/src/pure.cxx 
implementation or should I provide a dummy 'write' function in uSTL 
package if file I/O package is not present?

Regards, Uwe
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.