mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-29 22:19:21 +02:00
* keep the stack 16 byte aligned on winx64
* fixed some winx64 issues regarding exec git-svn-id: trunk@3213 -
This commit is contained in:
parent
2d3d4a66f6
commit
598853240c
@ -19,8 +19,6 @@ Const
|
||||
Max_Path = 260;
|
||||
|
||||
Type
|
||||
TWin32Handle = longint;
|
||||
|
||||
PWin32FileTime = ^TWin32FileTime;
|
||||
TWin32FileTime = record
|
||||
dwLowDateTime,
|
||||
@ -44,7 +42,7 @@ Type
|
||||
end;
|
||||
|
||||
Searchrec = Packed Record
|
||||
FindHandle : TWin32Handle;
|
||||
FindHandle : THandle;
|
||||
W32FindData : TWin32FindData;
|
||||
ExcludeAttr : longint;
|
||||
time : longint;
|
||||
@ -97,7 +95,7 @@ type
|
||||
|
||||
var
|
||||
versioninfo : OSVERSIONINFO;
|
||||
kernel32dll : TWin32Handle;
|
||||
kernel32dll : THandle;
|
||||
|
||||
{******************************************************************************
|
||||
--- Conversion ---
|
||||
@ -259,8 +257,8 @@ end;
|
||||
type
|
||||
PProcessInformation = ^TProcessInformation;
|
||||
TProcessInformation = record
|
||||
hProcess: TWin32Handle;
|
||||
hThread: TWin32Handle;
|
||||
hProcess: THandle;
|
||||
hThread: THandle;
|
||||
dwProcessId: DWORD;
|
||||
dwThreadId: DWORD;
|
||||
end;
|
||||
@ -271,24 +269,23 @@ type
|
||||
lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
|
||||
var lpProcessInformation: TProcessInformation): longbool;
|
||||
stdcall; external 'kernel32' name 'CreateProcessA';
|
||||
function getExitCodeProcess(h:TWin32Handle;var code:longint):longbool;
|
||||
function getExitCodeProcess(h:THandle;var code:longint):longbool;
|
||||
stdcall; external 'kernel32' name 'GetExitCodeProcess';
|
||||
function WaitForSingleObject(hHandle: TWin32Handle; dwMilliseconds: DWORD): DWORD;
|
||||
function WaitForSingleObject(hHandle: THandle; dwMilliseconds: DWORD): DWORD;
|
||||
stdcall; external 'kernel32' name 'WaitForSingleObject';
|
||||
function CloseHandle(h : TWin32Handle) : longint;
|
||||
function CloseHandle(h : THandle) : longint;
|
||||
stdcall; external 'kernel32' name 'CloseHandle';
|
||||
|
||||
procedure exec(const path : pathstr;const comline : comstr);
|
||||
var
|
||||
SI: TStartupInfo;
|
||||
PI: TProcessInformation;
|
||||
Proc : TWin32Handle;
|
||||
l : Longint;
|
||||
CommandLine : array[0..511] of char;
|
||||
AppParam : array[0..255] of char;
|
||||
pathlocal : string;
|
||||
begin
|
||||
DosError := 0;
|
||||
DosError:=0;
|
||||
FillChar(SI, SizeOf(SI), 0);
|
||||
SI.cb:=SizeOf(SI);
|
||||
SI.wShowWindow:=1;
|
||||
@ -315,13 +312,12 @@ begin
|
||||
DosError:=Last2DosError(GetLastError);
|
||||
exit;
|
||||
end;
|
||||
Proc:=PI.hProcess;
|
||||
CloseHandle(PI.hThread);
|
||||
if WaitForSingleObject(Proc, dword($ffffffff)) <> $ffffffff then
|
||||
GetExitCodeProcess(Proc,l)
|
||||
if WaitForSingleObject(PI.hProcess,dword($ffffffff))<>$ffffffff then
|
||||
GetExitCodeProcess(PI.hProcess,l)
|
||||
else
|
||||
l:=-1;
|
||||
CloseHandle(Proc);
|
||||
CloseHandle(PI.hProcess);
|
||||
CloseHandle(PI.hThread);
|
||||
LastDosExitCode:=l;
|
||||
end;
|
||||
|
||||
@ -421,11 +417,11 @@ end;
|
||||
|
||||
{ Needed kernel calls }
|
||||
|
||||
function FindFirstFile (lpFileName: PChar; var lpFindFileData: TWIN32FindData): TWin32Handle;
|
||||
function FindFirstFile (lpFileName: PChar; var lpFindFileData: TWIN32FindData): THandle;
|
||||
stdcall; external 'kernel32' name 'FindFirstFileA';
|
||||
function FindNextFile (hFindFile: TWin32Handle; var lpFindFileData: TWIN32FindData): LongBool;
|
||||
function FindNextFile (hFindFile: THandle; var lpFindFileData: TWIN32FindData): LongBool;
|
||||
stdcall; external 'kernel32' name 'FindNextFileA';
|
||||
function FindCloseFile (hFindFile: TWin32Handle): LongBool;
|
||||
function FindCloseFile (hFindFile: THandle): LongBool;
|
||||
stdcall; external 'kernel32' name 'FindClose';
|
||||
|
||||
Procedure StringToPchar (Var S : String);
|
||||
@ -775,13 +771,13 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function FreeLibrary(hLibModule : TWin32Handle) : longbool;
|
||||
function FreeLibrary(hLibModule : THandle) : longbool;
|
||||
stdcall; external 'kernel32' name 'FreeLibrary';
|
||||
function GetVersionEx(var VersionInformation:OSVERSIONINFO) : longbool;
|
||||
stdcall; external 'kernel32' name 'GetVersionExA';
|
||||
function LoadLibrary(lpLibFileName : pchar):TWin32Handle;
|
||||
function LoadLibrary(lpLibFileName : pchar):THandle;
|
||||
stdcall; external 'kernel32' name 'LoadLibraryA';
|
||||
function GetProcAddress(hModule : TWin32Handle;lpProcName : pchar) : pointer;
|
||||
function GetProcAddress(hModule : THandle;lpProcName : pchar) : pointer;
|
||||
stdcall; external 'kernel32' name 'GetProcAddress';
|
||||
|
||||
var
|
||||
|
@ -15,10 +15,10 @@
|
||||
|
||||
const
|
||||
{ constants for GetStdHandle }
|
||||
STD_INPUT_HANDLE = longint($fffffff6);
|
||||
STD_OUTPUT_HANDLE = longint($fffffff5);
|
||||
STD_ERROR_HANDLE = longint($fffffff4);
|
||||
INVALID_HANDLE_VALUE = longint($ffffffff);
|
||||
STD_INPUT_HANDLE = dword($fffffff6);
|
||||
STD_OUTPUT_HANDLE = dword($fffffff5);
|
||||
STD_ERROR_HANDLE = dword($fffffff4);
|
||||
INVALID_HANDLE_VALUE = dword($ffffffff);
|
||||
|
||||
IGNORE = 0; { Ignore signal }
|
||||
INFINITE = longint($FFFFFFFF); { Infinite timeout }
|
||||
|
@ -756,7 +756,7 @@ function ExecuteProcess(Const Path: AnsiString; Const ComLine: AnsiString):integ
|
||||
var
|
||||
SI: TStartupInfo;
|
||||
PI: TProcessInformation;
|
||||
Proc : TWin32Handle;
|
||||
Proc : THandle;
|
||||
l : DWord;
|
||||
CommandLine : ansistring;
|
||||
e : EOSError;
|
||||
@ -788,11 +788,11 @@ begin
|
||||
raise e;
|
||||
end;
|
||||
Proc:=PI.hProcess;
|
||||
CloseHandle(PI.hThread);
|
||||
if WaitForSingleObject(Proc, dword($ffffffff)) <> $ffffffff then
|
||||
begin
|
||||
GetExitCodeProcess(Proc,l);
|
||||
CloseHandle(Proc);
|
||||
CloseHandle(PI.hThread);
|
||||
result:=l;
|
||||
end
|
||||
else
|
||||
@ -800,6 +800,7 @@ begin
|
||||
e:=EOSError.CreateFmt(SExecuteProcessFailed,[CommandLine,GetLastError]);
|
||||
e.ErrorCode:=GetLastError;
|
||||
CloseHandle(Proc);
|
||||
CloseHandle(PI.hThread);
|
||||
raise e;
|
||||
end;
|
||||
end;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/04/02]
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/04/04]
|
||||
#
|
||||
default: all
|
||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince powerpc64-linux
|
||||
@ -246,121 +246,121 @@ endif
|
||||
OBJPASDIR=$(RTL)/objpas
|
||||
WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
|
||||
ifeq ($(FULL_TARGET),i386-linux)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-go32v2)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-win32)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-os2)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-freebsd)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-beos)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netbsd)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-solaris)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-qnx)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netware)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-openbsd)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wdosx)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-darwin)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-emx)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-watcom)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netwlibc)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wince)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-linux)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-freebsd)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-netbsd)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-amiga)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-atari)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-openbsd)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-palmos)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-linux)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-netbsd)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-macos)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-darwin)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-morphos)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-linux)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-netbsd)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-solaris)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-linux)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-freebsd)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-win64)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-linux)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-palmos)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-wince)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc64-linux)
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix windows winsock cmem dos objects rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
override TARGET_UNITS+=system ctypes objpas macpas strings lineinfo heaptrc matrix dos objects windows winsock cmem rtlconsts sysconst sysutils math types strutils convutils dateutils
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-linux)
|
||||
override TARGET_LOADERS+=$(LOADERS)
|
||||
|
@ -9,8 +9,8 @@ main=rtl
|
||||
loaders=$(LOADERS)
|
||||
units=system ctypes objpas macpas strings \
|
||||
lineinfo heaptrc matrix \
|
||||
windows winsock cmem \
|
||||
dos objects \
|
||||
windows winsock cmem \
|
||||
rtlconsts sysconst sysutils math types \
|
||||
strutils convutils dateutils
|
||||
# varutils variants typinfo classes \
|
||||
|
@ -62,7 +62,7 @@ const
|
||||
System_exception_frame : PEXCEPTION_FRAME =nil;
|
||||
|
||||
type
|
||||
TStartupInfo=packed record
|
||||
TStartupInfo = record
|
||||
cb : longint;
|
||||
lpReserved : Pointer;
|
||||
lpDesktop : Pointer;
|
||||
@ -78,9 +78,9 @@ type
|
||||
wShowWindow : Word;
|
||||
cbReserved2 : Word;
|
||||
lpReserved2 : Pointer;
|
||||
hStdInput : longint;
|
||||
hStdOutput : longint;
|
||||
hStdError : longint;
|
||||
hStdInput : THandle;
|
||||
hStdOutput : THandle;
|
||||
hStdError : THandle;
|
||||
end;
|
||||
|
||||
var
|
||||
@ -391,6 +391,7 @@ var
|
||||
procedure Exe_entry;[public,alias:'_FPC_EXE_Entry'];
|
||||
var
|
||||
ST : pointer;
|
||||
EBP : pointer;
|
||||
begin
|
||||
IsLibrary:=false;
|
||||
{ install the handlers for exe only ?
|
||||
@ -401,17 +402,19 @@ procedure Exe_entry;[public,alias:'_FPC_EXE_Entry'];
|
||||
ExitCode:=0;
|
||||
asm
|
||||
{ allocate space for an exception frame }
|
||||
pushl $0
|
||||
pushl %fs:(0)
|
||||
pushq $0
|
||||
pushq %fs:(0)
|
||||
{ movl %esp,%fs:(0)
|
||||
but don't insert it as it doesn't
|
||||
point to anything yet
|
||||
this will be used in signals unit }
|
||||
movl %esp,%eax
|
||||
movl %eax,System_exception_frame
|
||||
pushl %ebp
|
||||
movl %esp,%eax
|
||||
movl %eax,st
|
||||
{ keep stack aligned }
|
||||
pushq $0
|
||||
pushq %rbp
|
||||
movq %rsp,%rax
|
||||
movq %rax,st
|
||||
end;
|
||||
StackTop:=st;
|
||||
asm
|
||||
@ -419,9 +422,10 @@ procedure Exe_entry;[public,alias:'_FPC_EXE_Entry'];
|
||||
movw %ss,%ax
|
||||
movl %eax,_SS
|
||||
call SysResetFPU
|
||||
xorl %ebp,%ebp
|
||||
xorl %rbp,%rbp
|
||||
call PASCALMAIN
|
||||
popl %ebp
|
||||
popq %rbp
|
||||
popq %rax
|
||||
end;
|
||||
{ if we pass here there was no error ! }
|
||||
system_exit;
|
||||
@ -991,9 +995,6 @@ procedure fpc_cpucodeinit;
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
{****************************************************************************
|
||||
OS dependend widestrings
|
||||
****************************************************************************}
|
||||
@ -1150,9 +1151,9 @@ procedure SysInitStdIO;
|
||||
begin
|
||||
{ Setup stdin, stdout and stderr, for GUI apps redirect stderr,stdout to be
|
||||
displayed in a messagebox }
|
||||
StdInputHandle:=longint(GetStdHandle(cardinal(STD_INPUT_HANDLE)));
|
||||
StdOutputHandle:=longint(GetStdHandle(cardinal(STD_OUTPUT_HANDLE)));
|
||||
StdErrorHandle:=longint(GetStdHandle(cardinal(STD_ERROR_HANDLE)));
|
||||
StdInputHandle:=THandle(GetStdHandle(STD_INPUT_HANDLE));
|
||||
StdOutputHandle:=THandle(GetStdHandle(STD_OUTPUT_HANDLE));
|
||||
StdErrorHandle:=THandle(GetStdHandle(STD_ERROR_HANDLE));
|
||||
if not IsConsole then
|
||||
begin
|
||||
AssignError(stderr);
|
||||
@ -1220,5 +1221,5 @@ begin
|
||||
errno:=0;
|
||||
initvariantmanager;
|
||||
initwidestringmanager;
|
||||
InitWin32Widestrings
|
||||
InitWin32Widestrings;
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user