[cxx-abi-dev] __base_class_type_info offset_flags

Mark Mitchell mark at codesourcery.com
Wed Dec 4 18:59:55 UTC 2002


> Oh well.  I guess the decision is made then.

Here is the patch I'm about to check in.

-- 
Mark Mitchell                mark at codesourcery.com
CodeSourcery, LLC            http://www.codesourcery.com

Index: abi.html
===================================================================
RCS file: /usr/local/Repository/cxx-abi/abi.html,v
retrieving revision 1.54
diff -c -5 -p -r1.54 abi.html
*** abi.html	3 Dec 2002 17:48:27 -0000	1.54
--- abi.html	4 Dec 2002 19:02:09 -0000
*************** It is derived from <code>abi::__class_ty
*** 2310,2344 ****
        <p>
        The <code>__base_type</code>
        member points to the RTTI for the base type.

        <p>
!       The upper 56 bits of <code>__offset_flags</code> are a signed 
offset.
!       For a non-virtual base,
!       this is the offset in the object of the base subobject.
!       For a virtual base,
!       this is the offset in the virtual table of the
!       virtual base offset for the virtual base referenced
!       (negative).

        <p>
        The low-order byte of <code>__offset_flags</code> contains flags,
        as given by the masks from the enumeration
        <code>__offset_flags_masks</code>:
  	<ul>
  	<li> 0x1: Base class is virtual
  	<li> 0x2: Base class is public
  	</ul>

-       <p>
-       <img src=warning.gif alt="<b>NOTE</b>:">
-       <i>
-       In an ABI for a machine with 32-bit addresses,
-       the offset becomes a 32-bit field,
-       and the flags are in the low-order byte of a second 32-bit field.
-       </i>
-
    </ul>

  <p>
  Note that the resulting structure is variable-length,
  with the actual size depending on the number of trailing base class
--- 2310,2334 ----
        <p>
        The <code>__base_type</code>
        member points to the RTTI for the base type.

        <p>
!       All but the lower 8 bits of <code>__offset_flags</code> are a
!       signed offset.  For a non-virtual base, this is the offset in
!       the object of the base subobject.  For a virtual base, this is
!       the offset in the virtual table of the virtual base offset for
!       the virtual base referenced (negative).

        <p>
        The low-order byte of <code>__offset_flags</code> contains flags,
        as given by the masks from the enumeration
        <code>__offset_flags_masks</code>:
  	<ul>
  	<li> 0x1: Base class is virtual
  	<li> 0x2: Base class is public
  	</ul>

    </ul>

  <p>
  Note that the resulting structure is variable-length,
  with the actual size depending on the number of trailing base class
*************** unwind table location.
*** 4928,4937 ****
--- 4918,4931 ----

  <p> <hr> <p>
  <a name=revisions>
  <h2> Appendix R: Revision History </h2>
  <p> <hr> <p>
+
+ <p>
+ <font color=blue>[021204]</font>
+ Remove note about 32-bit RTTI variation.

  <p>
  <font color=blue>[021125]</font>
  Clarify guard functions.





More information about the cxx-abi-dev mailing list