dw_handle DWENTRY DWAddInheritance( dw_client cli, dw_handle ancestor_hdl, dw_loc_handle loc, uint flags ) { dw_handle new_hdl; abbrev_code abbrev; new_hdl = LabelNewHandle( cli ); abbrev = AB_INHERITANCE; StartDIE( cli, abbrev ); EmitAccessFlags( cli, flags ); /* AT_location */ if( loc ) { EmitLocExpr( cli, DW_DEBUG_INFO, sizeof( uint_8), loc ); }else{ EmitLocExprNull( cli, DW_DEBUG_INFO, sizeof( uint_8) ); } /* AT_virtual */ if( flags & DW_FLAG_VIRTUAL ) { Info8( cli, DW_VIRTUALITY_virtual ); } else { Info8( cli, DW_VIRTUALITY_none ); } /* AT_type */ HandleReference( cli, ancestor_hdl, DW_DEBUG_INFO ); EndDIE( cli ); return( new_hdl ); }
dw_handle DWENTRY DWMemberPointer( dw_client cli, dw_handle struct_type, dw_loc_handle loc, dw_handle base_type, const char * name, unsigned flags ) { abbrev_code abbrev; dw_handle new_hdl; new_hdl = LabelNewHandle( cli ); abbrev = AB_MEMBER_POINTER; if( name ) abbrev |= AB_NAME; if( flags & DW_PTR_TYPE_MASK ) abbrev |= AB_ADDRESS_CLASS; StartDIE( cli, abbrev ); /* AT_name */ if( name ) { InfoString( cli, name ); } WriteAddressClass( cli, flags ); /* AT_type */ EmitTypeRef( cli, base_type ); /* AT_containing_type */ HandleReference( cli, struct_type, DW_DEBUG_INFO ); /* AT_use_location */ EmitLocExpr( cli, DW_DEBUG_INFO, sizeof( uint_16), loc ); EndDIE( cli ); return( new_hdl ); }
void DWENTRY DWPubname( dw_client cli, dw_handle hdl, const char * name ) { HandleReference( cli, hdl, DW_DEBUG_PUBNAMES ); CLIWrite( DW_DEBUG_PUBNAMES, name, strlen( name ) + 1 ); }
void EmitTypeRef( dw_client cli, dw_handle hdl ) { HandleReference( cli, hdl, DW_DEBUG_INFO ); }