[cxx-abi-dev] __base_class_type_info offset_flags

Daveed Vandevoorde daveed at edg.com
Wed Dec 4 13:49:20 UTC 2002


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




More information about the cxx-abi-dev mailing list