set print object on should affect MI varobjs (PR 13393)

Tom Tromey tromey@redhat.com
Tue Dec 20 17:47:00 GMT 2011


>>>>> ">" == xgsa  <xgsa@yandex.ru> writes:

>> (it seems that my previous message about this patch was lost somehow,
>> so I resend it again; sorry, if I sent it twice)

No problem.  Thanks for working on this.

>> 2011-12-02  Anton Gorenkov <xgsa@yandex.ru>

>>     PR 13393

I think it has to mention the category for the commit->bz scanner to
work.

Your patch got wrapped by your mailer, making it harder to read.

>> -static struct type *
>> +struct type *
>>  make_qualified_type (struct type *type, int new_flags,
>>               struct type *storage)

I'd prefer not to export this.
I think you can just use make_cv_type instead.

>> +  else if (TYPE_CODE(type) == TYPE_CODE_PTR)

Missing space before the open paren here.  This occurs a few times.


>> +struct type *
>> +actual_type (struct value *value, int resolve_simple_types)
>> +{

This should have an introductory comment saying to look at value.h.

>> +      struct type *real_type;
>> +      real_type = value_rtti_target_type ( value, 0, 0, 0 );

Blank line between declaration and code.
This has an extra space after "(" and before ")".

>> +/* Returns value_type() or value_enclosing_type () depending on

Remove the '()'s.

>> +   value_print_options.objectprint.
>> +
>> +   If RESOLVE_SIMPLE_TYPES is 0 the enclosing type will be resolved
>> +   only for pointers and references, else it will be returned also
>> +   all the types (e.g. for structures). This option is useful
>> +   to prevent retrieving enclosing type for the base classes fields */

Sentences should end with a period followed by 2 spaces.
The last sentence needs this too.

>> +      struct type *enclosing_type;
>> +      var->type = value_type (value);

Blank line.

>> +      enclosing_type = actual_type(value, 0);

Missing space.

>> +      if (check_typedef (enclosing_type) != check_typedef (var->type))
>> +        {
>> +          var->type = enclosing_type;
>> +          value = value_cast (enclosing_type, value);

Will this always do the right thing?
It seems questionable.

>> +  // Access a real type of the value (if necessary and possible)

GDB is C90 and can't use // comments.

>> +      enclosing_type = actual_type(*value, 1);

I don't understand why this one call has a '1' here.

>> +      // It is necessary to access a real type (via RTTI)
>> +      if (opts.objectprint)
>> +        {
>> +          value = var->value;
>> +          lookup_actual_type = TYPE_CODE (var->type) == TYPE_CODE_REF
>> || TYPE_CODE (var->type) == TYPE_CODE_PTR;

This line has to be reformatted per the GNU coding standards.

Do you have copyright assignment papers filed with the FSF?
If not, contact me off-list to get started with this.
We can't put anything in until the paperwork is finished.

Tom



More information about the Gdb-patches mailing list