Re: Included Interfaces without documentation update
Dan Kegel <dank@kegel.com> writes:
> Andreas Jaeger wrote:
> > > > > > > Andreas Jaeger wrote:
> > > > > > > > > _IO_putc
> > > > > > > > Mangle for putc
> > > > > > > > > _IO_puts
> > > > > > > > Mangle for puts
> > > > > > >
> > > > > > > That's interesting. I had no idea there were versions of feof etc.
> > > > > > > with C++ linkage in the standard libraries. What standard specifies that?
> > > > > >
> > > > > > No standard - that's the way glibc implements them. Since LSB is not
> > > > > > going to change glibc, we have to document these.
> > > > >
> > > > > Does it also export them with C linkage, then?
> > > >
> > > > Definitly - we describe a C ABI here.
> > >
> > > That's what I thought. Then why are we also describing the mangled
> > > names? Seems like a bug to specify C++ mangled names for C library
> > > functions.
> >
> > Stuart has run with appcheck some tests and noticed that some
> > programs, most probably C++ applications or libs, needed these, for
> > example:
> >
> > $ nm /usr/lib/libstdc++-3-libc6.2-2-2.10.0.so |grep putc
> > U _IO_putc@@GLIBC_2.0
> >
> > Since LSB supports C++, we have to add those symbols,
>
> There's nothing technically saying you can't use C linkage in a C++
> program; in fact, stdio.h is surrounded by extern "C" { ... }
> to force this.
We seem to have a communication problem. Those mangles are needed by
C++ but have C linkage, they don't have C++ linkage.
Andreas
--
Andreas Jaeger
SuSE Labs aj@suse.de
private aj@arthur.inka.de
http://www.suse.de/~aj
Reply to: