GDB (API)
Loading...
Searching...
No Matches
Public Attributes | List of all members
cplus_struct_type Struct Reference

#include "gdbtypes.h"

Public Attributes

short n_baseclasses
 
short vptr_fieldno
 
short nfn_fields
 
unsigned short n_template_arguments
 
int is_dynamic: 2
 
__extension__ enum dwarf_calling_convention calling_convention: 8
 
struct typevptr_basetype
 
B_TYPEvirtual_field_bits
 
B_TYPEprivate_field_bits
 
B_TYPEprotected_field_bits
 
B_TYPEignore_field_bits
 
struct fn_fieldlistfn_fieldlists
 
struct decl_fieldtypedef_field
 
unsigned typedef_field_count
 
struct decl_fieldnested_types
 
unsigned nested_types_count
 
struct symbol ** template_arguments
 

Detailed Description

C++ language-specific information for TYPE_CODE_STRUCT and TYPE_CODE_UNION nodes.

Definition at line 1623 of file gdbtypes.h.

Member Data Documentation

◆ calling_convention

__extension__ enum dwarf_calling_convention cplus_struct_type::calling_convention

The calling convention for this type, fetched from the DW_AT_calling_convention attribute. The value is one of the DW_CC constants.

Definition at line 1669 of file gdbtypes.h.

◆ fn_fieldlists

struct fn_fieldlist* cplus_struct_type::fn_fieldlists

For classes, structures, and unions, a description of each field, which consists of an overloaded name, followed by the types of arguments that the method expects, and then the name after it has been renamed to make it distinct.

fn_fieldlists points to an array of nfn_fields of these.

Definition at line 1718 of file gdbtypes.h.

◆ ignore_field_bits

B_TYPE* cplus_struct_type::ignore_field_bits

For classes with fields to be ignored, either this is optimized out or this field has length 0.

Definition at line 1709 of file gdbtypes.h.

◆ is_dynamic

int cplus_struct_type::is_dynamic

One if this struct is a dynamic class, as defined by the Itanium C++ ABI: if it requires a virtual table pointer, because it or any of its base classes have one or more virtual member functions or virtual base classes. Minus one if not dynamic. Zero if not yet computed.

Definition at line 1663 of file gdbtypes.h.

◆ n_baseclasses

short cplus_struct_type::n_baseclasses

Number of base classes this type derives from. The baseclasses are stored in the first N_BASECLASSES fields (i.e. the ‘fields’ field of the struct type). The only fields of struct field that are used are: type, name, loc.bitpos.

Definition at line 1630 of file gdbtypes.h.

◆ n_template_arguments

unsigned short cplus_struct_type::n_template_arguments

Number of template arguments.

Definition at line 1655 of file gdbtypes.h.

◆ nested_types

struct decl_field* cplus_struct_type::nested_types

The nested types defined by this type. nested_types points to an array of nested_types_count elements.

Definition at line 1730 of file gdbtypes.h.

◆ nested_types_count

unsigned cplus_struct_type::nested_types_count

Definition at line 1732 of file gdbtypes.h.

◆ nfn_fields

short cplus_struct_type::nfn_fields

Number of methods with unique names. All overloaded methods with the same name count only once.

Definition at line 1651 of file gdbtypes.h.

◆ private_field_bits

B_TYPE* cplus_struct_type::private_field_bits

For classes with private fields, the number of fields is given by nfields and private_field_bits is a bit vector containing one bit per field.

If the field is private, the corresponding bit will be set.

Definition at line 1696 of file gdbtypes.h.

◆ protected_field_bits

B_TYPE* cplus_struct_type::protected_field_bits

For classes with protected fields, the number of fields is given by nfields and protected_field_bits is a bit vector containing one bit per field.

If the field is private, the corresponding bit will be set.

Definition at line 1704 of file gdbtypes.h.

◆ template_arguments

struct symbol** cplus_struct_type::template_arguments

The template arguments. This is an array with N_TEMPLATE_ARGUMENTS elements. This is NULL for non-template classes.

Definition at line 1738 of file gdbtypes.h.

◆ typedef_field

struct decl_field* cplus_struct_type::typedef_field

typedefs defined inside this class. typedef_field points to an array of typedef_field_count elements.

Definition at line 1723 of file gdbtypes.h.

◆ typedef_field_count

unsigned cplus_struct_type::typedef_field_count

Definition at line 1725 of file gdbtypes.h.

◆ virtual_field_bits

B_TYPE* cplus_struct_type::virtual_field_bits

For derived classes, the number of base classes is given by n_baseclasses and virtual_field_bits is a bit vector containing one bit per base class. If the base class is virtual, the corresponding bit will be set. I.E, given:

class A{}; class B{}; class C : public B, public virtual A {};

B is a baseclass of C; A is a virtual baseclass for C. This is a C++ 2.0 language feature.

Definition at line 1688 of file gdbtypes.h.

◆ vptr_basetype

struct type* cplus_struct_type::vptr_basetype

The base class which defined the virtual function table pointer.

Definition at line 1673 of file gdbtypes.h.

◆ vptr_fieldno

short cplus_struct_type::vptr_fieldno

Field number of the virtual function table pointer in VPTR_BASETYPE. All access to this field must be through TYPE_VPTR_FIELDNO as one thing it does is check whether the field has been initialized. Initially TYPE_RAW_CPLUS_SPECIFIC has the value of cplus_struct_default, which for portability reasons doesn't initialize this field. TYPE_VPTR_FIELDNO returns -1 for this case.

If -1, we were unable to find the virtual function table pointer in initial symbol reading, and get_vptr_fieldno should be called to find it if possible. get_vptr_fieldno will update this field if possible. Otherwise the value is left at -1.

Unused if this type does not have virtual functions.

Definition at line 1646 of file gdbtypes.h.


The documentation for this struct was generated from the following file: