Linking fails with
b.o:b.cpp:(.text$_ZN4TestC1Ev[Test::Test()]+0x8): undefined reference to `vtable
for Test'
if object file is stored in an archive but succeeds if not.
Reproducible with this testcase:
### a.h ###
class Test
{
public:
virtual void do_something();
};
### a.cpp ###
#include "a.h"
void Test::do_something()
{
}
### b.cpp ###
#include "a.h"
int main( int argc, char** argv )
{
Test test;
return 0;
}
### build object files "a.o" "b.o" and put "a.o" in archive "a.a"
g++ -c -o a.o a.cpp && g++.exe -c -o b.o b.cpp && ar -q a.a a.o
### linking with object files succeeds
g++ -o c a.o b.o
### linking with archive file fails
g++ -o c a.a b.o
nm shows for the archive a.a and for the object a.o the same symbols. So it
should succeed.
--
Summary: undefined reference vtable if symbol is in archive
Product: binutils
Version: 2.16
Status: NEW
Severity: normal
Priority: P2
Component: ld
AssignedTo: unassigned at sources dot redhat dot com
ReportedBy: binutils dot scyt at spamgourmet dot com
CC: bug-binutils at gnu dot org
GCC build triplet: i686-pc-cygwin
GCC host triplet: i686-pc-cygwin
GCC target triplet: i686-pc-cygwin
http://sourceware.org/bugzilla/show_bug.cgi?id=2478
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
bug-binutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-binutils