This is the mail archive of the libstdc++@sourceware.cygnus.com mailing list for the libstdc++ project. See the libstdc++ home page for more information.


[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index] [Subject Index] [Author Index] [Thread Index]

Re: libstdc++-2.90.4 and egcs-19990314 on i586-pc-linux-gnu



> It would help if I understood their meaning better.

No problem with that. What's your question? (honor-std is documented,
BTW).

> In fact, I'd be glad to understand what part of the compiler/library
> code is actually affected/concerned in supporting them.

In general, the compiler is concerned with supporting the ABI
(Application Binary Interface); the library is affected if this
changes, as well as most programs are affected.

> Also, I'd like to be able to understand the exact goal of the new-abi
> project, in order either to contribute, or to make a proposal of mine.

The goal (AFAICT) is to provide a means to distribute experimental
features whose use would break binary compatibility. What these exact
features are might change from snapshot to snapshot; I guess this is
the reason why they are not documented. Currently, it is a combination
of:
- a new layout of base classes, saving space when you can,
- vtable thunks, if they are not enabled by default,
- the squangling algorithm, and
- the activation of std:: as a true namespace.

Soon, it might also cover a change in the vtable thunks which is not
fully compatible with the current implementation.

> /tmp/ccySiaaa.o(.text+0x1e): undefined reference to `ostream::operator<<(ostream &(*)(ostream &))'
[...]
> So, I still do something wrong...

I'm somewhat lost here as to what exactly you are doing. I thought
this is libstdc++ v3, where ostream should be a template, not a class.
Also, the correct symbol should be 

std::ostream::operator<<(std::ostream &(*)(std::ostream &))

Please compile your programs with --save-temps, then analyse the
object files using nm(1); do not use nm's demangling option. Then
invoke nm on the library are linking with. This operator should start
with __ls__.

Without further information, I'd say you are getting the wrong header
files. Please use --trace-includes or inspect the resulting .ii file
to verify if that is the case.

Hope this helps,
Martin