Actions

icon Post
text/html Subscribe
text/html Unsubscribe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [cxx-abi-dev] __base_class_type_info offset_flags


  • To: cxx-abi-dev@xxxxxxxxxxxxxxxx
  • Subject: Re: [cxx-abi-dev] __base_class_type_info offset_flags
  • From: Daveed Vandevoorde <daveed@xxxxxxx>
  • Date: Wed, 4 Dec 2002 08:49:20 -0500


On Tuesday, December 3, 2002, at 06:35  PM, Mark Mitchell wrote:
[...]
    Note:

    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 think we should remove the note.

I'm not sure I agree.

First, G++ does not honor the note; it just uses "long" on all
platforms.

What do the other compilers do (HP? Intel?)?


  That's a particular hard thing to change going forward;
the runtime support routines would have to somehow detect which
version of the type_info structures they were dealing with.  So, I
don't fancy trying to make this change in GCC.

Second, what's the point?  If you just deleted the note, you'd be
limited to objects whose sizes are representable in 24-bits on a
32-bit machine.  Well, more properly, if you made bigger objects,
you'd not be able to dynamic_cast between subobjects.

I would find this a weird limitation.  If you do remove the note,
at least add a requirement that implementations must issue errors
on non-POD types whose size is 2^24 or larger.

      Daveed