Bug 64241 - Virtual table layout does not match the C++ ABI
Summary: Virtual table layout does not match the C++ ABI
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: gcc3
Version: 7.2
Hardware: ia64
OS: Linux
medium
high
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2002-04-30 07:34 UTC by Grigory Zagorodnev
Modified: 2008-05-01 15:38 UTC (History)
0 users

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2002-04-30 07:34:40 UTC
Embargoed:


Attachments (Terms of Use)

Description Grigory Zagorodnev 2002-04-30 07:34:36 UTC
From Bugzilla Helper:
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; NetCaptor 
6.5.0PB8)

Description of problem:
According to the C++ ABI, virtual table should contain complete function 
descritor in place of virtual function poiter. (See below for quoted ABI).

gcc 3.0 violates this requirement by placing pointer to function descriptor in 
the virtual table instead of function descriptor itself.

C++ ABI
-------
URL    : http://www.codesourcery.com/cxx-abi/abi.html
Section: 2.5.2 Virtual Table Components and Order 
Quote  :
"The form of a virtual function pointer is specified by the processor-specific 
C++ ABI for the implementation. In the specific case of 64-bit Itanium shared 
library builds, a virtual function pointer entry contains a pair of components 
(each 64 bits): the value of the target GP value and the actual function 
address. That is, rather than being a normal function pointer, which points to 
such a two-component descriptor, a virtual function pointer entry is the 
descriptor."


Version-Release number of selected component (if applicable):


How reproducible:
Always

Steps to Reproduce:
This happens with any class required virtual table (and virtual functions)

Additional info:

Comment 1 Jakub Jelinek 2002-04-30 08:10:28 UTC
We have shipped gcc3-3.0.4-1 as errata, and that complies to this (likewise
gcc 3.1 will).


Note You need to log in before you can comment on or make changes to this bug.