RFA: unbreak typedefed bitfield

Vladimir Prus vladimir@codesourcery.com
Mon Dec 21 10:00:00 GMT 2009


Tom Tromey wrote:

>>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes:
> 
> Joel> I have a general feeling that most of the time, the typedef should
> Joel> have never been passed down.  But I haven't spent the time and
> Joel> effort to try to think globally.
> 
> There are definitely cases where we want to preserve the type that the
> user wrote.
> 
> In C, this matters for printing various character types.  E.g., both
> wchar_t and char32_t may be typedefs of int, but we want to print them
> differently if they use different encodings.
> 
> This preservation has to be pervasive, because of things like:
> 
>     print (wchar_t) 32
> 
> This example doesn't work today, but probably should.
> 
> 
> I agree that check_typedef is a problem.
> 
> Perhaps we could approach the check_typedef problem using a semantic
> analyzer to ensure correct use.  There are other idioms in gdb that also
> require careful attention that would benefit from this; cleanups and
> proper use of TRY_CATCH come to mind, but there are probably others.
> 
> Another approach would be to change TYPE_LENGTH to first call
> check_typedef.

It seems to me that TYPE_LENGTH may return different values before and
after check_typedef is called. Is the 'before' value ever or any use?
If no, and as you say above in some cases we need to preserve some properties
of the typedef, why TYPE_LENGTH could not check if the type is typedef, and
if so, return length of the true type?

- Volodya




More information about the Gdb-patches mailing list