summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-04-06 21:43:06 +0000
committernickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-04-06 21:43:06 +0000
commit21ca71b6ba6c35d2a018b09a9c6cc2088048fa3f (patch)
treec2a2fb01a67f8321cd8f54621991b795f5fd667c
parentb39e0013902512e02660217a95ef850711b59b44 (diff)
downloadfpc-21ca71b6ba6c35d2a018b09a9c6cc2088048fa3f.tar.gz
+ TOmfObjData.writeReloc: write the actual offset of the symbol in the section data
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@30473 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--compiler/ogomf.pas5
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/ogomf.pas b/compiler/ogomf.pas
index 3f6055f98b..17e4fe5a89 100644
--- a/compiler/ogomf.pas
+++ b/compiler/ogomf.pas
@@ -215,6 +215,7 @@ implementation
procedure TOmfObjData.writeReloc(Data:aint;len:aword;p:TObjSymbol;Reloctype:TObjRelocationType);
var
objreloc: TOmfRelocation;
+ symaddr: AWord;
begin
{ Write('writeReloc(', data, ',', len, ',');
if p<>nil then
@@ -228,8 +229,12 @@ implementation
objreloc:=nil;
if assigned(p) then
begin
+ { real address of the symbol }
+ symaddr:=p.address;
+
objreloc:=TOmfRelocation.CreateSymbol(CurrObjSec.Size,p,Reloctype);
CurrObjSec.ObjRelocations.Add(objreloc);
+ inc(data,symaddr);
end;
CurrObjSec.write(data,len);
end;