diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-27 13:05:18 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-27 13:05:18 +0000 |
commit | c708bb59ae8df10207338aa25183aafd2e5c125a (patch) | |
tree | b816c9b29ae8b833e46583d85835a7d0377ab429 | |
parent | b7ca89c5606272ae17507789d8ea30790fa72b38 (diff) | |
download | gcc-c708bb59ae8df10207338aa25183aafd2e5c125a.tar.gz |
2004-10-26 Matthew Gingell <gingell@gnat.com>
* i-cpp.ads, i-cpp.adb: Change layout of VTable for new C++ ABI.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89655 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ada/i-cpp.adb | 7 | ||||
-rw-r--r-- | gcc/ada/i-cpp.ads | 25 |
2 files changed, 15 insertions, 17 deletions
diff --git a/gcc/ada/i-cpp.adb b/gcc/ada/i-cpp.adb index b54d6d98e9c..387dcb5583c 100644 --- a/gcc/ada/i-cpp.adb +++ b/gcc/ada/i-cpp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2002, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2004, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,7 +32,6 @@ ------------------------------------------------------------------------------ with Ada.Tags; use Ada.Tags; -with Interfaces.C; use Interfaces.C; with System; use System; with System.Storage_Elements; use System.Storage_Elements; with Unchecked_Conversion; @@ -60,10 +59,8 @@ package body Interfaces.CPP is type Vtable_Entry_Array is array (Positive range <>) of Vtable_Entry; type VTable is record - Unused1 : C.short; - Unused2 : C.short; - TSD : Type_Specific_Data_Ptr; Prims_Ptr : Vtable_Entry_Array (Positive); + TSD : Type_Specific_Data_Ptr; end record; -------------------------------------------------------- diff --git a/gcc/ada/i-cpp.ads b/gcc/ada/i-cpp.ads index 6372fb5db3b..9a5998837a2 100644 --- a/gcc/ada/i-cpp.ads +++ b/gcc/ada/i-cpp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2000, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2004, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -41,15 +41,16 @@ package Interfaces.CPP is package S renames System; package SSE renames System.Storage_Elements; - -- This package corresponds to Ada.Tags but applied to tagged types - -- which are 'imported' from C++ and correspond to exactly to a C++ - -- Class. GNAT doesn't know about the structure od the C++ dispatch - -- table (Vtable) but always access it through the procedural interface - -- defined below, thus the implementation of this package (the body) can - -- be customized to another C++ compiler without any change in the - -- compiler code itself as long as this procedural interface is - -- respected. Note that Ada.Tags defines a very similar procedural - -- interface to the regular Ada Dispatch Table. + -- This package corresponds to Ada.Tags but applied to tagged + -- types which are 'imported' from C++ and correspond exactly to a + -- C++ Class. GNAT doesn't know about the structure of the C++ + -- dispatch table (Vtable) but always accesses it through the + -- procedural interface defined below, thus the implementation of + -- this package (the body) can be customized to another C++ + -- compiler without any change in the compiler code itself as long + -- as this procedural interface is respected. Note that Ada.Tags + -- defines a very similar procedural interface to the regular Ada + -- Dispatch Table. type Vtable_Ptr is private; @@ -95,7 +96,7 @@ private CPP_DT_Prologue_Size : constant SSE.Storage_Count := SSE.Storage_Count - (2 * (Standard'Address_Size / S.Storage_Unit)); + (1 * (Standard'Address_Size / S.Storage_Unit)); -- Size of the first part of the dispatch table CPP_DT_Entry_Size : constant SSE.Storage_Count := @@ -110,7 +111,7 @@ private CPP_TSD_Entry_Size : constant SSE.Storage_Count := SSE.Storage_Count - (Standard'Address_Size / S.Storage_Unit); + (1 * (Standard'Address_Size / S.Storage_Unit)); -- Size of each ancestor tag entry in the TSD procedure CPP_Inherit_DT |