From 59ac157b508bccf12bc6ee54d2f2359b111246d1 Mon Sep 17 00:00:00 2001
From: sergei <gorelkin@nanoreflex.ru>
Date: Tue, 5 Jul 2011 13:25:51 +0000
Subject: [PATCH] sysinit*.pp: Factored common code into include file.

git-svn-id: trunk@17939 -
---
 .gitattributes            |  1 +
 rtl/win32/sysinit.inc     | 42 +++++++++++++++++++++++++++++++++++++++
 rtl/win32/sysinitcyg.pp   | 30 +---------------------------
 rtl/win32/sysinitgprof.pp | 30 +---------------------------
 rtl/win32/sysinitpas.pp   | 26 +-----------------------
 5 files changed, 46 insertions(+), 83 deletions(-)
 create mode 100644 rtl/win32/sysinit.inc

diff --git a/.gitattributes b/.gitattributes
index 1da177706e..3164a69efc 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -8167,6 +8167,7 @@ rtl/win32/gprt0.as svneol=native#text/plain
 rtl/win32/initc.pp svneol=native#text/plain
 rtl/win32/objinc.inc svneol=native#text/plain
 rtl/win32/signals.pp svneol=native#text/plain
+rtl/win32/sysinit.inc svneol=native#text/plain
 rtl/win32/sysinitcyg.pp svneol=native#text/plain
 rtl/win32/sysinitgprof.pp svneol=native#text/plain
 rtl/win32/sysinitpas.pp svneol=native#text/plain
diff --git a/rtl/win32/sysinit.inc b/rtl/win32/sysinit.inc
new file mode 100644
index 0000000000..4c3118b7a5
--- /dev/null
+++ b/rtl/win32/sysinit.inc
@@ -0,0 +1,42 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2006 by Florian Klaempfl and Pavel Ozerski
+    member of the Free Pascal development team.
+
+    Win32 startup code, shared part
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+ 
+   var
+      SysInstance : Longint;external name '_FPC_SysInstance';
+      EntryInformation : TEntryInformation;
+
+      InitFinalTable : record end; external name 'INITFINAL';
+      ThreadvarTablesTable : record end; external name 'FPC_THREADVARTABLES';
+      valgrind_used : boolean;external name '__fpc_valgrind';
+
+    procedure EXE_Entry(const info : TEntryInformation); external name '_FPC_EXE_Entry';
+    function DLL_Entry(const info : TEntryInformation) : longbool; external name '_FPC_DLL_Entry';
+    procedure PascalMain;stdcall;external name 'PASCALMAIN';
+
+    function GetStdHandle(nStdHandle:DWORD) : THandle; stdcall; external 'kernel32' name 'GetStdHandle';
+    function GetConsoleMode(hConsoleHandle: THandle; var lpMode: DWORD): Boolean; stdcall; external 'kernel32' name 'GetConsoleMode';
+
+    const
+      STD_INPUT_HANDLE = dword(-10);
+
+    procedure SetupEntryInformation;
+      begin
+        EntryInformation.InitFinalTable:=@InitFinalTable;
+        EntryInformation.ThreadvarTablesTable:=@ThreadvarTablesTable;
+        EntryInformation.asm_exit:=@asm_exit;
+        EntryInformation.PascalMain:=@PascalMain;
+        EntryInformation.valgrind_used:=valgrind_used;
+      end;
diff --git a/rtl/win32/sysinitcyg.pp b/rtl/win32/sysinitcyg.pp
index 6b81ebe074..1d4b11632d 100644
--- a/rtl/win32/sysinitcyg.pp
+++ b/rtl/win32/sysinitcyg.pp
@@ -20,42 +20,14 @@ unit sysinitcyg;
 
   implementation
 
-    var
-      SysInstance : Longint;external name '_FPC_SysInstance';
-      EntryInformation : TEntryInformation;
-
-      InitFinalTable : record end; external name 'INITFINAL';
-      ThreadvarTablesTable : record end; external name 'FPC_THREADVARTABLES';
-      valgrind_used : boolean;external name '__fpc_valgrind';
-
-    procedure EXE_Entry; external name '_FPC_EXE_Entry';
-    function DLL_Entry : longbool; external name '_FPC_DLL_Entry';
-
     procedure Cygwin_crt0(p : pointer);cdecl;external name 'cygwin_crt0';
     procedure __main;cdecl;external name '__main';
 
-    const
-      STD_INPUT_HANDLE = dword(-10);
-
-    function GetStdHandle(nStdHandle:DWORD) : THandle; stdcall; external 'kernel32' name 'GetStdHandle';
-    function GetConsoleMode(hConsoleHandle: THandle; var lpMode: DWORD): Boolean; stdcall; external 'kernel32' name 'GetConsoleMode';
-
-    procedure EXE_Entry(const info : TEntryInformation); external name '_FPC_EXE_Entry';
-    function DLL_entry(const info : TEntryInformation) : longbool; external name '_FPC_DLL_Entry';
-    procedure PascalMain;stdcall;external name 'PASCALMAIN';
-
     procedure asm_exit;stdcall;public name 'asm_exit';
       begin
       end;
 
-    procedure SetupEntryInformation;
-      begin
-        EntryInformation.InitFinalTable:=@InitFinalTable;
-        EntryInformation.ThreadvarTablesTable:=@ThreadvarTablesTable;
-        EntryInformation.asm_exit:=@asm_exit;
-        EntryInformation.PascalMain:=@PascalMain;
-        EntryInformation.valgrind_used:=valgrind_used;
-      end;
+{$i sysinit.inc}
 
 
     procedure CMainEXE;cdecl;
diff --git a/rtl/win32/sysinitgprof.pp b/rtl/win32/sysinitgprof.pp
index d049ec6758..dca5f806e2 100644
--- a/rtl/win32/sysinitgprof.pp
+++ b/rtl/win32/sysinitgprof.pp
@@ -24,18 +24,9 @@ unit sysinitgprof;
       monstarted : dword = 0;
 
     var
-      SysInstance : Longint;external name '_FPC_SysInstance';
-      EntryInformation : TEntryInformation;
-
-      InitFinalTable : record end; external name 'INITFINAL';
-      ThreadvarTablesTable : record end; external name 'FPC_THREADVARTABLES';
-      valgrind_used : boolean;external name '__fpc_valgrind';
       stext : record end;external name '__text_start__';
       etext : record end;external name 'etext';
 
-    procedure EXE_Entry; external name '_FPC_EXE_Entry';
-    function DLL_Entry : longbool; external name '_FPC_DLL_Entry';
-
     procedure Cygwin_crt0(p : pointer);cdecl;external name 'cygwin_crt0';
     procedure __main;cdecl;external name '__main';
     procedure _mcleanup;cdecl;external name '_mcleanup';
@@ -45,31 +36,12 @@ unit sysinitgprof;
     procedure CMainEXE;cdecl;forward;
     procedure CMainDLL;cdecl;forward;
 
-    const
-      STD_INPUT_HANDLE = dword(-10);
-
-    function GetStdHandle(nStdHandle:DWORD) : THandle; stdcall; external 'kernel32' name 'GetStdHandle';
-    function GetConsoleMode(hConsoleHandle: THandle; var lpMode: DWORD): Boolean; stdcall; external 'kernel32' name 'GetConsoleMode';
-
-    procedure EXE_Entry(const info : TEntryInformation); external name '_FPC_EXE_Entry';
-    function DLL_entry(const info : TEntryInformation) : longbool; external name '_FPC_DLL_Entry';
-    procedure PascalMain;stdcall;external name 'PASCALMAIN';
-
     procedure asm_exit;stdcall;public name 'asm_exit';
       begin
         _mcleanup;
       end;
 
-
-    procedure SetupEntryInformation;
-      begin
-        EntryInformation.InitFinalTable:=@InitFinalTable;
-        EntryInformation.ThreadvarTablesTable:=@ThreadvarTablesTable;
-        EntryInformation.asm_exit:=@asm_exit;
-        EntryInformation.PascalMain:=@PascalMain;
-        EntryInformation.valgrind_used:=valgrind_used;
-      end;
-
+{$i sysinit.inc}
 
     procedure EXEgmon_start;
       begin
diff --git a/rtl/win32/sysinitpas.pp b/rtl/win32/sysinitpas.pp
index 874e8d771e..91f7ba75b3 100644
--- a/rtl/win32/sysinitpas.pp
+++ b/rtl/win32/sysinitpas.pp
@@ -19,36 +19,12 @@ unit sysinitpas;
 
   implementation
 
-    var
-      SysInstance : Longint;external name '_FPC_SysInstance';
-      EntryInformation : TEntryInformation;
-
-      InitFinalTable : record end; external name 'INITFINAL';
-      ThreadvarTablesTable : record end; external name 'FPC_THREADVARTABLES';
-      valgrind_used : boolean;external name '__fpc_valgrind';
 
     procedure asm_exit;stdcall;public name 'asm_exit';
       begin
       end;
 
-    procedure EXE_Entry(const info : TEntryInformation); external name '_FPC_EXE_Entry';
-    function DLL_entry(const info : TEntryInformation) : longbool; external name '_FPC_DLL_Entry';
-    procedure PascalMain;stdcall;external name 'PASCALMAIN';
-
-    procedure SetupEntryInformation;
-      begin
-        EntryInformation.InitFinalTable:=@InitFinalTable;
-        EntryInformation.ThreadvarTablesTable:=@ThreadvarTablesTable;
-        EntryInformation.asm_exit:=@asm_exit;
-        EntryInformation.PascalMain:=@PascalMain;
-        EntryInformation.valgrind_used:=valgrind_used;
-      end;
-
-    const
-      STD_INPUT_HANDLE = dword(-10);
-
-    function GetStdHandle(nStdHandle:DWORD) : THandle; stdcall; external 'kernel32' name 'GetStdHandle';
-    function GetConsoleMode(hConsoleHandle: THandle; var lpMode: DWORD): Boolean; stdcall; external 'kernel32' name 'GetConsoleMode';
+{$i sysinit.inc}
 
     procedure _FPC_mainCRTStartup;stdcall;public name '_mainCRTStartup';
     begin