Issue Details (XML | Word | Printable)

Key: STDCXX-119
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Liviu Nicoara
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
C++ Standard Library

[Intel C++ 10.0/Windows 2000] vtable related unsats in threaded optimized builds

Created: 17/Jan/06 03:32 AM   Updated: 11/Jul/09 12:00 AM
Return to search
Component/s: 27. Input/Output
Affects Version/s: 4.1.2
Fix Version/s: 4.2.2

Time Tracking:
Not Specified

Environment:
$ icl -help 2>&1 | head -n 3
Intel(R) C++ Compiler for 32-bit applications, Version 8.1 Build 20050201Z Package ID: w_cc_pc_8.1.025
Copyright (C) 1985-2005 Intel Corporation. All rights reserved.

Windows 2000 Professional SP2


Severity: Linker Error


 Description  « Hide
(Incident e-mail at: http://mail-archives.apache.org/mod_mbox/incubator-stdcxx-dev/200601.mbox/raw/%3c43BDBF53.4050008@roguewave.com%3e/)

The following test case fails to link:

$ cat t.cpp

#include <sstream>

struct A : public std::iostream
{
A () : std::iostream (0) { }
};

#include <strstream>

int main ()
{
std::stringstream ss;
ss << int (0);

return 0;
}

and yields:

icl -D_RWCONFIG=12d -I.\..\..\..\../include -I.\..\..\..\../include/ansi -I.\..\..\..\.. -I.\..\..\..\.. -I.. -I. -nologo -GX -MD -O2 -c ..\t.cpp
t.cpp

Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

link -nologo /NODEFAULTLIB:msvcprt /LIBPATH:.\..\..\..\..\lib /OUT:t.exe t.obj tlt12d.lib ftp12d.lib thread12d.lib itc12d.lib functor_list12d.lib internet12d.lib functor12d.lib pointer12d.lib sync12d.lib threxcept12d.lib trace12d.lib network12d.lib ws2_32.lib tls12d.lib std12d.lib user32.lib
t.obj : error LNK2019: unresolved external symbol "const
std::basic_iostream<char,struct std::char_traits<char> >::`vftable'"
(??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@) referenced in
function _main
t.obj : error LNK2019: unresolved external symbol "const
std::basic_iostream<char,struct std::char_traits<char> >::`vbtable'{for `std::basic_istream<char,struct std::char_traits<char> >'}"
(??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@)
referenced in function _main
t.obj : error LNK2019: unresolved external symbol "const
std::basic_iostream<char,struct std::char_traits<char> >::`vbtable'{for `std::basic_ostream<char,struct std::char_traits<char> >'}"
(??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@)
referenced in function _main
t.exe : fatal error LNK1120: 3 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Martin Sebor added a comment - 20/May/08 07:44 PM
Let's see if this a problem for Intel C++ 10.1 or if it's still an issue for 8.1 (and if so, decide if we want to do anything about it).
Scheduled for 4.2.2.

Farid Zaripov added a comment - 26/Jun/08 04:24 PM
This is still a problem for Intel C++ 10.0.

The simplified testcase:

#include <iostream>

struct A : std::iostream
{
    A () : std::iostream (0) { }
};

struct __declspec (dllimport) B : std::iostream
{
    B () : std::iostream (0) { }
};

int main ()
{
    A a;
    
    return 0;
}

Farid Zaripov added a comment - 26/Jun/08 04:34 PM
It seems that compiler should instantiate the vtable for std::iostream in testcase object file, but dllimport attribute on B mistakenly brings it to think, that vtable for base class is also should be imported from external shared library.

Martin Sebor added a comment - 03/Jan/09 10:56 PM
As Farid says, this is still a problem in 10.0.