summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp')
-rw-r--r--tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp231
1 files changed, 0 insertions, 231 deletions
diff --git a/tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp b/tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp
deleted file mode 100644
index 3d047e8..0000000
--- a/tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-
-//This code is need to get the WinMain function called. Current MinGW runtimes tries to call main
-//before WinMain. Untill such time as MinGw runtime has been changed this is need.
-//Most of this code is taken from the MinGw runtime sources.
-
-
-#include <signal.h>
-#include <process.h>
-#include <float.h>
-#include <io.h>
-
-
-/*
- * Setup the default file handles to have the _CRT_fmode mode, as well as
- * any new files created by the user.
- */
-
-extern int _fmode;
-extern "C" int* __p__fmode(void); /* To access the dll _fmode */
-extern int _CRT_fmode;
-
-static void _mingw32_init_fmode ()
-{
- /* Don't set the std file mode if the user hasn't set any value for it. */
- if (_CRT_fmode)
- {
- _fmode = _CRT_fmode;
-
- /*
- * This overrides the default file mode settings for stdin,
- * stdout and stderr. At first I thought you would have to
- * test with isatty, but it seems that the DOS console at
- * least is smart enough to handle _O_BINARY stdout and
- * still display correctly.
- */
- if (stdin)
- {
- _setmode (_fileno (stdin), _CRT_fmode);
- }
- if (stdout)
- {
- _setmode (_fileno (stdout), _CRT_fmode);
- }
- if (stderr)
- {
- _setmode (_fileno (stderr), _CRT_fmode);
- }
- }
-
- /* Now sync the dll _fmode to the one for this .exe. */
- *__p__fmode() = _fmode;
-
-}
-
-/* This function will be called when a trap occurs. Thanks to Jacob
- Navia for his contribution. */
-static CALLBACK long _gnu_exception_handler (EXCEPTION_POINTERS * exception_data)
-{
- void (*old_handler) (int);
- long action = EXCEPTION_CONTINUE_SEARCH;
- int reset_fpu = 0;
-
- switch (exception_data->ExceptionRecord->ExceptionCode)
- {
- case EXCEPTION_ACCESS_VIOLATION:
- /* test if the user has set SIGSEGV */
- old_handler = signal (SIGSEGV, SIG_DFL);
- if (old_handler == SIG_IGN)
- {
- /* this is undefined if the signal was raised by anything other
- than raise (). */
- signal (SIGSEGV, SIG_IGN);
- action = EXCEPTION_CONTINUE_EXECUTION;
- }
- else if (old_handler != SIG_DFL)
- {
- /* This means 'old' is a user defined function. Call it */
- (*old_handler) (SIGSEGV);
- action = EXCEPTION_CONTINUE_EXECUTION;
- }
- break;
-
- case EXCEPTION_FLT_INVALID_OPERATION:
- case EXCEPTION_FLT_DIVIDE_BY_ZERO:
- case EXCEPTION_FLT_DENORMAL_OPERAND:
- case EXCEPTION_FLT_OVERFLOW:
- case EXCEPTION_FLT_UNDERFLOW:
- case EXCEPTION_FLT_INEXACT_RESULT:
- reset_fpu = 1;
- /* fall through. */
-
- case EXCEPTION_INT_DIVIDE_BY_ZERO:
- /* test if the user has set SIGFPE */
- old_handler = signal (SIGFPE, SIG_DFL);
- if (old_handler == SIG_IGN)
- {
- signal (SIGFPE, SIG_IGN);
- if (reset_fpu)
- _fpreset ();
- action = EXCEPTION_CONTINUE_EXECUTION;
- }
- else if (old_handler != SIG_DFL)
- {
- /* This means 'old' is a user defined function. Call it */
- (*old_handler) (SIGFPE);
- action = EXCEPTION_CONTINUE_EXECUTION;
- }
- break;
-
- default:
- break;
- }
- return action;
-}
-
-
-extern char __RUNTIME_PSEUDO_RELOC_LIST__;
-extern char __RUNTIME_PSEUDO_RELOC_LIST_END__;
-extern char _image_base__;
-
-typedef struct {
- DWORD addend;
- DWORD target;
-} runtime_pseudo_reloc;
-
-static void do_pseudo_reloc (void* start, void* end, void* base)
-{
- DWORD reloc_target;
- runtime_pseudo_reloc* r;
- for (r = (runtime_pseudo_reloc*) start; r < (runtime_pseudo_reloc*) end; r++) {
- reloc_target = (DWORD) base + r->target;
- *((DWORD*) reloc_target) += r->addend;
- }
-}
-
-void _pei386_runtime_relocator ()
-{
- do_pseudo_reloc (&__RUNTIME_PSEUDO_RELOC_LIST__,
- &__RUNTIME_PSEUDO_RELOC_LIST_END__,
- &_image_base__);
-}
-
-
-#ifdef __MSVCRT__
-#define __UNKNOWN_APP 0
-#define __CONSOLE_APP 1
-#define __GUI_APP 2
-extern "C" void __set_app_type(int);
-#endif /* __MSVCRT__ */
-
-#define ISSPACE(a) (a == ' ' || a == '\t')
-
-int TQtWinMainCRTStartup()
-{
-#ifdef __MSVCRT__
- __set_app_type (__GUI_APP);
-#endif
-
- SetUnhandledExceptionFilter (_gnu_exception_handler);
-
- /*
- * Initialize floating point unit.
- */
- _fpreset (); /* Supplied by the runtime library. */
-
- /*
- * Sets the default file mode.
- * If _CRT_fmode is set, also set mode for stdin, stdout
- * and stderr, as well
- * NOTE: DLLs don't do this because that would be rude!
- */
- _mingw32_init_fmode ();
-
- /* Adust references to dllimported data that have non-zero offsets. */
- _pei386_runtime_relocator ();
-
- char *szCmd;
- STARTUPINFO startinfo;
- int nRet;
-
- /* Get the command line passed to the process. */
- szCmd = GetCommandLineA ();
- GetStartupInfo (&startinfo);
-
- /* Strip off the name of the application and any leading
- * whitespace. */
- if (szCmd) {
-
- while (ISSPACE (*szCmd)) {
- szCmd++;
- }
-
- /* On my system I always get the app name enclosed
- * in quotes... */
- if (*szCmd == '\"') {
- do {
- szCmd++;
- } while (*szCmd != '\"' && *szCmd != '\0');
-
- if (*szCmd == '\"') {
- szCmd++;
- }
- } else {
- /* If no quotes then assume first token is program
- * name. */
- while (!ISSPACE (*szCmd) && *szCmd != '\0') {
- szCmd++;
- }
- }
-
- while (ISSPACE (*szCmd)) {
- szCmd++;
- }
- }
-
- nRet = WinMain (GetModuleHandle (NULL), NULL, szCmd,
- (startinfo.dwFlags & STARTF_USESHOWWINDOW) ?
- startinfo.wShowWindow : SW_SHOWDEFAULT);
-
- /*
- * Perform exit processing for the C library. This means
- * flushing output and calling 'atexit' registered functions.
- */
- _cexit ();
-
- ExitProcess (nRet);
-
- return 0;
-
-}
-