浏览代码

Merged revisions 7634 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

........
r7634 | jonas | 2007-06-12 11:32:02 +0200 (Tue, 12 Jun 2007) | 2 lines

* fixed stabs debug info for bitpacked records

........

git-svn-id: branches/fixes_2_2@7646 -

Jonas Maebe 18 年之前
父节点
当前提交
3d0247a23a
共有 1 个文件被更改,包括 14 次插入6 次删除
  1. 14 6
      compiler/dbgstabs.pas

+ 14 - 6
compiler/dbgstabs.pas

@@ -350,13 +350,21 @@ implementation
               spec:='/0'
             else
               spec:='';
-            varsize:=tfieldvarsym(p).vardef.size;
-            { open arrays made overflows !! }
-            if varsize>$fffffff then
-              varsize:=$fffffff;
-            newrec:=def_stabstr_evaluate(nil,'$1:$2,$3,$4;',[GetSymName(tfieldvarsym(p)),
+            if (tabstractrecordsymtable(tsym(p).owner).usefieldalignment<>bit_alignment) then
+              begin
+                varsize:=tfieldvarsym(p).vardef.size;
+                { open arrays made overflows !! }
+                { how can a record/object/class contain an open array? (JM) }
+                if varsize>$fffffff then
+                  varsize:=$fffffff;
+                newrec:=def_stabstr_evaluate(nil,'$1:$2,$3,$4;',[GetSymName(tfieldvarsym(p)),
                                      spec+def_stab_number(tfieldvarsym(p).vardef),
-                                     tostr(TConstExprInt(tfieldvarsym(p).fieldoffset)*8),tostr(varsize*8)]);
+                                     tostr(TConstExprInt(tfieldvarsym(p).fieldoffset)*8),tostr(varsize*8)])
+              end
+            else
+              newrec:=def_stabstr_evaluate(nil,'$1:$2,$3,$4;',[GetSymName(tfieldvarsym(p)),
+                                   spec+def_stab_number(tfieldvarsym(p).vardef),
+                                   tostr(TConstExprInt(tfieldvarsym(p).fieldoffset)),tostr(tfieldvarsym(p).vardef.packedbitsize)]);
             if state^.stabsize+strlen(newrec)>=state^.staballoc-256 then
               begin
                 inc(state^.staballoc,strlen(newrec)+64);