diff --git a/compiler/dbgbase.pas b/compiler/dbgbase.pas index aee90d1f88..c1182fc972 100644 --- a/compiler/dbgbase.pas +++ b/compiler/dbgbase.pas @@ -418,7 +418,9 @@ implementation beforeappendsym(list,sym); case sym.typ of staticvarsym : - appendsym_staticvar(list,tstaticvarsym(sym)); + if not assigned(tstaticvarsym(sym).fieldvarsym) or + not(df_generic in tdef(tstaticvarsym(sym).fieldvarsym.owner.defowner).defoptions) then + appendsym_staticvar(list,tstaticvarsym(sym)); unitsym: appendsym_unit(list,tunitsym(sym)); labelsym : diff --git a/compiler/pdecvar.pas b/compiler/pdecvar.pas index ba2a2f21a9..763fec0ffe 100644 --- a/compiler/pdecvar.pas +++ b/compiler/pdecvar.pas @@ -1797,10 +1797,8 @@ implementation fieldvs:=tfieldvarsym(sc[i]); fieldvs.visibility:=visibility; hstaticvs:=make_field_static(recst,fieldvs); - { for generics it would be better to disable the following, - but simply disabling it in that case breaks linking with - debug info } - cnodeutils.insertbssdata(hstaticvs); + if not parse_generic then + cnodeutils.insertbssdata(hstaticvs); if vd_final in options then hstaticvs.varspez:=vs_final; end;