mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 14:09:17 +02:00
* 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:
parent
f9f316ac45
commit
1e92e576dd
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user