RE: Question about duplicate C++ functions generated with GNU 3.4.1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>It is to do with ctors-for-most-derived and ctors-for-base.

Could you please elaborate on this? I too have been trying to understand
why two copies of ctors are getting created but could never find any
explanation. As you suggested, i browsed through the ABI but still
haven't found anything(so far). From your remark;

>There is a bug report pointing out that, where virtual bases are not
involved,
>these two things are the same

Can i infer that it has to do with the initialization of the pointer to
the virtual base class in a derived object? Somewhere in lippman's
"Inside the C++ object model" i had read that the ctor inits this
pointer. Not sure that it is related. Would appreciate it if you(or
somebody else) could throw some light on this.

Thanks
Ram

-----Original Message-----
From: Nathan Sidwell [mailto:nathan@xxxxxxxxxxxxxxxx]
Sent: Tuesday, November 23, 2004 7:40 AM
To: Jon Watson
Cc: gcc-help@xxxxxxxxxxx
Subject: Re: Question about duplicate C++ functions generated with GNU
3.4.1


Jon Watson wrote:
> Hi -
> 
> We recently switched to GCC 3.4.1 (built for PowerPC EABI). As we have
started to recompile our code and bring up our products we noticed some
odd behavior. Specifically, it appears that GCC has created two
functionally identical copies of C++ object constructors that are
referenced by different symbols...

> Symbols for BufferPool::BufferPool():
> 00002c78 T _ZN10BufferPoolC2Ev
./..\..\..\..\..\..\..\..\..\airvana\sw\ne\src\net\BufferPool\src\Buffer
Pool.cpp:91
> 00002c88 T _ZN10BufferPoolC1Ev
./..\..\..\..\..\..\..\..\..\airvana\sw\ne\src\net\BufferPool\src\Buffer
Pool.cpp:91

It is to do with ctors-for-most-derived and ctors-for-base.  Refer
to the ABI document (linked to from Further Readings) for details.  I
thought
there qas a faq or something about it, but I cannot find it right now.
There is a bug report pointing out that, where virtual bases are not
involved,
these two things are the same.

nathan

-- 
Nathan Sidwell    ::   http://www.codesourcery.com   ::     CodeSourcery
LLC
nathan@xxxxxxxxxxxxxxxx    ::
http://www.planetfall.pwp.blueyonder.co.uk


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux