Hi.
Why are constructors included twice in object code? This is with
GCC 4.3.0 20080214:
% cat t.cc
#include <string>
class T{
T(const std::string&);
int foo();
int x;
};
T::T(const std::string&) {x=2;}
int T::foo()
{
x=7;
}
% g++ -c -o t.o t.cc -fomit-frame-pointer -O
% nm -S -C t.o
00000018 0000000b T T::foo()
0000000c 0000000b T T::T(std::string const&)
00000000 0000000b T T::T(std::string const&)
% objdump -D t.o
Disassembly of section .text:
00000000 <_ZN1TC2ERKSs>:
0: 8b 44 24 04 mov 0x4(%esp),%eax
4: c7 00 02 00 00 00 movl $0x2,(%eax)
a: c3 ret
b: 90 nop
0000000c <_ZN1TC1ERKSs>:
c: 8b 44 24 04 mov 0x4(%esp),%eax
10: c7 00 02 00 00 00 movl $0x2,(%eax)
16: c3 ret
17: 90 nop
00000018 <_ZN1T3fooEv>:
18: 8b 44 24 04 mov 0x4(%esp),%eax
1c: c7 00 07 00 00 00 movl $0x7,(%eax)
22: c3 ret
The constructor seems to be included twice with the very same code. Is
that expected?
Sam
--
Samuel Tardieu -- [EMAIL PROTECTED] -- http://www.rfc1149.net/