Bug 64241

Summary: Virtual table layout does not match the C++ ABI
Product: [Retired] Red Hat Linux Reporter: Grigory Zagorodnev <grigory_zagorodnev>
Component: gcc3Assignee: Jakub Jelinek <jakub>
Status: CLOSED ERRATA QA Contact:
Severity: high Docs Contact:
Priority: medium    
Version: 7.2   
Target Milestone: ---   
Target Release: ---   
Hardware: ia64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2002-04-30 07:34:40 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

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).