* Use TDebugInfoDwarf2.appenddef_object's DoAppend also for writing the

debuginfo for standard classes in the Dwarf-3 format. (No changes for -gw2
   debuginfo. -gw3 debuginfo is changed)

git-svn-id: trunk@16748 -
This commit is contained in:
joost 2011-01-11 10:28:35 +00:00
parent f9f316ac45
commit 1e92e576dd

View File

@ -388,6 +388,7 @@ interface
private private
protected protected
procedure appenddef_set_intern(list:TAsmList;def:tsetdef; force_tag_set: boolean); procedure appenddef_set_intern(list:TAsmList;def:tsetdef; force_tag_set: boolean);
procedure append_object_struct(def: tobjectdef; const createlabel: boolean; const objectname: PShortString);
procedure appenddef_file(list:TAsmList;def:tfiledef); override; procedure appenddef_file(list:TAsmList;def:tfiledef); override;
procedure appenddef_formal(list:TAsmList;def:tformaldef); override; procedure appenddef_formal(list:TAsmList;def:tformaldef); override;
@ -3413,8 +3414,7 @@ implementation
finish_entry; finish_entry;
end; end;
procedure TDebugInfoDwarf2.appenddef_object(list:TAsmList;def: tobjectdef); procedure TDebugInfoDwarf2.append_object_struct(def: tobjectdef; const createlabel: boolean; const objectname: PShortString);
procedure doappend(const createlabel: boolean; const objectname: PShortString);
begin begin
if createlabel then if createlabel then
begin begin
@ -3486,11 +3486,13 @@ implementation
end; end;
procedure TDebugInfoDwarf2.appenddef_object(list:TAsmList;def: tobjectdef);
begin begin
case def.objecttype of case def.objecttype of
odt_cppclass, odt_cppclass,
odt_object: odt_object:
doappend(false,def.objname); append_object_struct(def,false,def.objname);
odt_interfacecom, odt_interfacecom,
odt_interfacecorba, odt_interfacecorba,
odt_dispinterface, odt_dispinterface,
@ -3501,14 +3503,14 @@ implementation
append_labelentry_ref(DW_AT_type,def_dwarf_class_struct_lab(def)); append_labelentry_ref(DW_AT_type,def_dwarf_class_struct_lab(def));
finish_entry; finish_entry;
doappend(true,def.objname); append_object_struct(def,true,def.objname);
end; end;
odt_objcclass: odt_objcclass:
{ Objective-C class: same as regular class, except for { Objective-C class: same as regular class, except for
a) Apple-specific tag that identifies it as an Objective-C class a) Apple-specific tag that identifies it as an Objective-C class
b) use extname^ instead of objname b) use extname^ instead of objname
} }
doappend(true,def.objextname); append_object_struct(def,true,def.objextname);
odt_objcprotocol: odt_objcprotocol:
begin begin
append_entry(DW_TAG_pointer_type,false,[]); append_entry(DW_TAG_pointer_type,false,[]);
@ -3902,8 +3904,14 @@ implementation
end; end;
odt_class: odt_class:
begin begin
dostruct(DW_TAG_class_type); //dostruct(DW_TAG_class_type);
doparent(false); //doparent(false);
append_entry(DW_TAG_pointer_type,false,[]);
append_labelentry_ref(DW_AT_type,def_dwarf_class_struct_lab(def));
finish_entry;
append_object_struct(def,true,def.objrealname);
Exit;
end; end;
else else
internalerror(200609171); internalerror(200609171);