[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