瀏覽代碼

Resolve address of a symbol defined as absolute of another symbol, in assembler code.

ccrause 3 年之前
父節點
當前提交
44094dba2f
共有 1 個文件被更改,包括 10 次插入0 次删除
  1. 10 0
      compiler/rautils.pas

+ 10 - 0
compiler/rautils.pas

@@ -862,6 +862,16 @@ Begin
                 setvarsize(tabstractvarsym(sym));
                 size_set_from_absolute:=true;
                 sym:=plist^.sym;
+                { Check if address can be resolved, but only if not an array }
+                if (tabsolutevarsym(sym).abstyp=toaddr) and not
+                  (assigned(plist^.next) and (plist^.next^.sltype=sl_vec)) then
+                  begin
+                    initref;
+                    opr.ref.offset:=tabsolutevarsym(sym).addroffset;
+                    hasvar:=true;
+                    Result:=true;
+                    exit;
+                  end;
                 { resolve the chain of array indexes (if there are any) }
                 harrdef:=nil;
                 while assigned(plist^.next) do