[Bug c++/12698] New: Multiple definition of covariant thunk in the single unit

grigory at stl dot sarov dot ru gcc-bugzilla@gcc.gnu.org
Tue Oct 21 05:21:00 GMT 2003


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12698

           Summary: Multiple definition of covariant thunk in the single
                    unit
           Product: gcc
           Version: 3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: grigory at stl dot sarov dot ru
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-redhat-linux
  GCC host triplet: i686-redhat-linux
GCC target triplet: i686-redhat-linux

Compiling the test-case listed below, g++ 3.4 gives multiple definition of a 
covariant thunk. Two symbols with the same name are emitted in the asm source 
so assembler fails in the end. Probably the second thunk definition appeared 
due to incorrect offset encoding.

Failure appear both on i686-redhat-linux and ia64-suse-linux.

$ cat thunk.cpp
	struct c1 {};
	struct c0 {
	    int i;
	    virtual c1& f10() {};
	};
	struct c2 : virtual c1, c0 { };
	struct c6 : virtual c2, c0 {
	    virtual c2& f10() {};
	};
	struct c14 : virtual c2 { };
	struct c19 : virtual ::c6 {
	  virtual class ::c14& f10() {};
	};
	c19 obj;

$ g++ -c thunk.cpp
thunk.cpp:10: warning: direct base `c0' inaccessible in `c6' due to ambiguity
/home/grigory/tmp/cc8J96E3.s: Assembler messages:
/home/grigory/tmp/cc8J96E3.s:357: Error: symbol `_ZTch0_v0_n12_N3c193f10Ev' is 
already defined
/home/grigory/tmp/cc8J96E3.s:405: Error: symbol `_ZTcv0_n20_v0_n12_N3c193f10Ev' 
is already defined



More information about the Gcc-bugs mailing list