+ support RELOC_RELATIVE relocations in the omf object writer, by using omf's

"self relative" (instead of "segment relative") fixups. "Hello world" and
  fpctris in the small memory model now work (under dosbox, at least) with the
  internal object writer.

git-svn-id: trunk@30581 -
This commit is contained in:
nickysn 2015-04-13 22:44:31 +00:00
parent bd460eec43
commit 03e8c3ae05

View File

@ -157,7 +157,12 @@ implementation
FOmfFixup.LocationType:=fltOffset;
FOmfFixup.FrameDeterminedByThread:=False;
FOmfFixup.TargetDeterminedByThread:=False;
FOmfFixup.Mode:=fmSegmentRelative;
if typ=RELOC_ABSOLUTE then
FOmfFixup.Mode:=fmSegmentRelative
else if typ=RELOC_RELATIVE then
FOmfFixup.Mode:=fmSelfRelative
else
internalerror(2015041401);
FOmfFixup.TargetMethod:=ftmSegmentIndexNoDisp;
FOmfFixup.TargetDatum:=ObjSection.Index;
if TOmfObjSection(ObjSection).PrimaryGroup<>'' then
@ -174,7 +179,12 @@ implementation
FOmfFixup.LocationType:=fltOffset;
FOmfFixup.FrameDeterminedByThread:=False;
FOmfFixup.TargetDeterminedByThread:=False;
FOmfFixup.Mode:=fmSegmentRelative;
if typ=RELOC_ABSOLUTE then
FOmfFixup.Mode:=fmSegmentRelative
else if typ=RELOC_RELATIVE then
FOmfFixup.Mode:=fmSelfRelative
else
internalerror(2015041401);
FOmfFixup.TargetMethod:=ftmExternalIndexNoDisp;
FOmfFixup.TargetDatum:=symbol.symidx;
FOmfFixup.FrameMethod:=ffmTarget;