Browse Source

* fixed the TRelocDataInt to avoid truncating 16-bit addresses to 8-bit on 8-bit CPUs

git-svn-id: trunk@45289 -
nickysn 5 years ago
parent
commit
616cb38292
1 changed files with 5 additions and 3 deletions
  1. 5 3
      compiler/ogbase.pas

+ 5 - 3
compiler/ogbase.pas

@@ -368,13 +368,15 @@ interface
        Owner: TObjData;
        Owner: TObjData;
      end;
      end;
 
 
-{$ifdef i8086}
+{$if defined(i8086)}
      { on i8086 we use a longint, to support 32-bit relocations as well (e.g.
      { on i8086 we use a longint, to support 32-bit relocations as well (e.g.
        for allowing 386+ instructions with 32-bit addresses in inline asm code) }
        for allowing 386+ instructions with 32-bit addresses in inline asm code) }
      TRelocDataInt = longint;
      TRelocDataInt = longint;
-{$else i8086}
+{$elseif defined(cpu16bitaddr)}
+     TRelocDataInt = asizeint;
+{$else}
      TRelocDataInt = aint;
      TRelocDataInt = aint;
-{$endif i8086}
+{$endif}
 
 
      TObjData = class(TLinkedListItem)
      TObjData = class(TLinkedListItem)
      private
      private