mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 08:28:09 +02:00
* only mark abstract varsyms as externally visible if they
are not kept in a register and either a) are in a globalsymtable b) are marked as static object/class member c) are marked as "public" git-svn-id: trunk@6302 -
This commit is contained in:
parent
bf38367b69
commit
ea6204cc56
@ -1708,16 +1708,31 @@ implementation
|
||||
else
|
||||
tag:=DW_TAG_variable;
|
||||
|
||||
append_entry(tag,false,[
|
||||
DW_AT_name,DW_FORM_string,symname(sym)+#0,
|
||||
{
|
||||
DW_AT_decl_file,DW_FORM_data1,0,
|
||||
DW_AT_decl_line,DW_FORM_data1,
|
||||
}
|
||||
DW_AT_external,DW_FORM_flag,true,
|
||||
{ data continues below }
|
||||
DW_AT_location,DW_FORM_block1,blocksize
|
||||
]);
|
||||
if not(sym.localloc.loc in [LOC_REGISTER,LOC_CREGISTER,LOC_MMREGISTER,
|
||||
LOC_CMMREGISTER,LOC_FPUREGISTER,LOC_CFPUREGISTER]) and
|
||||
((sym.owner.symtabletype = globalsymtable) or
|
||||
(sp_static in sym.symoptions) or
|
||||
(vo_is_public in sym.varoptions)) then
|
||||
append_entry(tag,false,[
|
||||
DW_AT_name,DW_FORM_string,symname(sym)+#0,
|
||||
{
|
||||
DW_AT_decl_file,DW_FORM_data1,0,
|
||||
DW_AT_decl_line,DW_FORM_data1,
|
||||
}
|
||||
DW_AT_external,DW_FORM_flag,true,
|
||||
{ data continues below }
|
||||
DW_AT_location,DW_FORM_block1,blocksize
|
||||
])
|
||||
else
|
||||
append_entry(tag,false,[
|
||||
DW_AT_name,DW_FORM_string,symname(sym)+#0,
|
||||
{
|
||||
DW_AT_decl_file,DW_FORM_data1,0,
|
||||
DW_AT_decl_line,DW_FORM_data1,
|
||||
}
|
||||
{ data continues below }
|
||||
DW_AT_location,DW_FORM_block1,blocksize
|
||||
]);
|
||||
{ append block data }
|
||||
current_asmdata.asmlists[al_dwarf_info].concatlist(templist);
|
||||
append_labelentry_ref(DW_AT_type,def_dwarf_lab(sym.vardef));
|
||||
|
Loading…
Reference in New Issue
Block a user