Jonas Maebe wrote:
That's because I did not change anything to Stabs. Stabs is old and legacy (not deprecated, but not actively developed anymore either). If someone else wants to fix it in Stabs, be my guest.
Can I be your guest?

The patch do the job. Althought it writes VARIANT to the debug info. But in Lazarus there is no problem to check for both 'Variant' and 'VARIANT'. If you apply it (or allow me to apply it) then I will fix lazarus too.

Best regards,
Paul Ishenin.
Index: dbgstabs.pas
===================================================================
--- dbgstabs.pas        (revision 14321)
+++ dbgstabs.pas        (working copy)
@@ -60,6 +60,7 @@
         writing_def_stabs  : boolean;
         global_stab_number : word;
         defnumberlist      : TFPObjectList;
+        vardatadef: trecorddef;
         { tsym writing }
         function  sym_var_value(const s:string;arg:pointer):string;
         function  sym_stabstr_evaluate(sym:tsym;const s:string;const 
vars:array of string):ansistring;
@@ -138,6 +139,7 @@
 
       tagtypes = [
         recorddef,
+        variantdef,
         enumdef,
         stringdef,
         filedef,
@@ -784,7 +786,9 @@
       var
         ss : ansistring;
       begin
-        ss:=def_stabstr_evaluate(def,'${numberstring};',[]);
+        ss:='s'+tostr(vardatadef.size);
+        vardatadef.symtable.SymList.ForEachCall(@field_add_stabstr,@ss);
+        ss[length(ss)]:=';';
         write_def_stabstr(list,def,ss);
       end;
 
@@ -1487,6 +1491,9 @@
         stabsvarlist:=TAsmList.create;
         stabstypelist:=TAsmList.create;
 
+        vardatadef:=trecorddef(search_system_type('TVARDATA').typedef);
+
+
         { include symbol that will be referenced from the main to be sure to
           include this debuginfo .o file }
         current_module.flags:=current_module.flags or uf_has_stabs_debuginfo;
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to