mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-19 11:29:41 +02:00
Merged revisions 2805 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler ........ r2805 | peter | 2006-03-08 07:56:12 +0100 (Wed, 08 Mar 2006) | 2 lines * x86_64 compile fix ........ git-svn-id: trunk@2806 -
This commit is contained in:
parent
3b2fe2b622
commit
ab1ec76962
@ -215,10 +215,16 @@ implementation
|
||||
const
|
||||
{$ifdef i386}
|
||||
COFF_MAGIC = $14c;
|
||||
COFF_OPT_MAGIC = $10b;
|
||||
{$endif i386}
|
||||
{$ifdef arm}
|
||||
COFF_MAGIC = $1c0;
|
||||
COFF_OPT_MAGIC = $10b;
|
||||
{$endif arm}
|
||||
{$ifdef x86_64}
|
||||
COFF_MAGIC = $14c;
|
||||
COFF_OPT_MAGIC = $20b;
|
||||
{$endif x86_64}
|
||||
|
||||
COFF_FLAG_NORELOCS = $0001;
|
||||
COFF_FLAG_EXE = $0002;
|
||||
@ -346,8 +352,10 @@ implementation
|
||||
bsize : longint;
|
||||
entry : longint;
|
||||
text_start : longint;
|
||||
{$ifndef x86_64}
|
||||
data_start : longint;
|
||||
ImageBase : longint;
|
||||
{$endif x86_64}
|
||||
ImageBase : aint;
|
||||
SectionAlignment : longint;
|
||||
FileAlignment : longint;
|
||||
MajorOperatingSystemVersion : word;
|
||||
@ -362,10 +370,10 @@ implementation
|
||||
CheckSum : longint;
|
||||
Subsystem : word;
|
||||
DllCharacteristics : word;
|
||||
SizeOfStackReserve : longint;
|
||||
SizeOfStackCommit : longint;
|
||||
SizeOfHeapReserve : longint;
|
||||
SizeOfHeapCommit : longint;
|
||||
SizeOfStackReserve : aint;
|
||||
SizeOfStackCommit : aint;
|
||||
SizeOfHeapReserve : aint;
|
||||
SizeOfHeapCommit : aint;
|
||||
LoaderFlags : longint;
|
||||
NumberOfRvaAndSizes : longint;
|
||||
DataDirectory : array[0..PE_DATADIR_ENTRIES-1] of coffpedatadir;
|
||||
@ -1867,12 +1875,14 @@ const win32stub : array[0..131] of byte=(
|
||||
if win32 then
|
||||
begin
|
||||
fillchar(peoptheader,sizeof(peoptheader),0);
|
||||
peoptheader.magic:=$10b;
|
||||
peoptheader.magic:=COFF_OPT_MAGIC;
|
||||
peoptheader.tsize:=TextExeSec.Size;
|
||||
peoptheader.dsize:=DataExeSec.Size;
|
||||
peoptheader.bsize:=BSSExeSec.Size;
|
||||
peoptheader.text_start:=TextExeSec.mempos;
|
||||
{$ifndef x86_64}
|
||||
peoptheader.data_start:=DataExeSec.mempos;
|
||||
{$endif x86_64}
|
||||
peoptheader.entry:=EntrySym.Address;
|
||||
peoptheader.ImageBase:=ImageBase;
|
||||
peoptheader.SectionAlignment:=SectionMemAlign;
|
||||
@ -1913,7 +1923,7 @@ const win32stub : array[0..131] of byte=(
|
||||
else
|
||||
begin
|
||||
fillchar(djoptheader,sizeof(djoptheader),0);
|
||||
djoptheader.magic:=$10b;
|
||||
djoptheader.magic:=COFF_OPT_MAGIC;
|
||||
djoptheader.tsize:=TextExeSec.Size;
|
||||
djoptheader.dsize:=DataExeSec.Size;
|
||||
djoptheader.bsize:=BSSExeSec.Size;
|
||||
@ -2073,10 +2083,10 @@ const win32stub : array[0..131] of byte=(
|
||||
internalobjdata.writebytes(afuncname[1],length(afuncname));
|
||||
internalobjdata.writebytes(emptyint,1);
|
||||
internalobjdata.writebytes(emptyint,align(internalobjdata.CurrObjSec.size,2)-internalobjdata.CurrObjSec.size);
|
||||
{ idata4, ref to import data }
|
||||
{ idata4, import lookup table }
|
||||
internalobjdata.SetSection(idata4objsection);
|
||||
internalobjdata.writereloc(0,sizeof(aint),idata6label,RELOC_RVA);
|
||||
{ idata5, import address }
|
||||
{ idata5, import address table }
|
||||
internalobjdata.SetSection(idata5objsection);
|
||||
idata5label:=internalobjdata.SymbolDefine('__imp_'+afuncname,AB_LOCAL,AT_DATA);
|
||||
internalobjdata.writereloc(0,sizeof(aint),idata6label,RELOC_RVA);
|
||||
|
Loading…
Reference in New Issue
Block a user