mirror of
https://github.com/reactos/reactos.git
synced 2025-04-27 17:10:22 +00:00
[CRT] Sync tlssup.c with mingw-w64
This allows amd64 built binary to be loaded.
This commit is contained in:
parent
fe3278d4d6
commit
439aefb31d
1 changed files with 15 additions and 25 deletions
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
* This file has no copyright assigned and is placed in the Public Domain.
|
* This file has no copyright assigned and is placed in the Public Domain.
|
||||||
* This file is part of the w64 mingw-runtime package.
|
* This file is part of the mingw-w64 runtime package.
|
||||||
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
||||||
*
|
*
|
||||||
* Written by Kai Tietz <kai.tietz@onevision.com>
|
* Written by Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
@ -12,27 +12,18 @@
|
||||||
|
|
||||||
#include <sect_attribs.h>
|
#include <sect_attribs.h>
|
||||||
|
|
||||||
/*#ifndef WIN32_LEAN_AND_MEAN
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#endif
|
#endif
|
||||||
#include <windows.h>*/
|
#include <windows.h>
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <windef.h>
|
|
||||||
#include <winbase.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#ifndef _WIN64
|
#ifndef __REACTOS__
|
||||||
#include <stdlib.h> /* for _winmajor */
|
#include <corecrt_startup.h>
|
||||||
#endif
|
#else
|
||||||
|
#include <internal.h>
|
||||||
#ifndef __INTERNAL_FUNC_DEFINED
|
|
||||||
#define __INTERNAL_FUNC_DEFINED
|
|
||||||
typedef void (__cdecl *_PVFV)(void);
|
|
||||||
typedef int (__cdecl *_PIFV)(void);
|
|
||||||
typedef void (__cdecl *_PVFI)(int);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern WINBOOL __mingw_TLScallback (HANDLE hDllHandle, DWORD reason, LPVOID reserved);
|
extern WINBOOL __mingw_TLScallback (HANDLE hDllHandle, DWORD reason, LPVOID reserved);
|
||||||
|
@ -47,15 +38,18 @@ typedef struct TlsDtorNode {
|
||||||
|
|
||||||
ULONG _tls_index = 0;
|
ULONG _tls_index = 0;
|
||||||
|
|
||||||
/* TLS raw template data start and end. */
|
/* TLS raw template data start and end.
|
||||||
_CRTALLOC(".tls") char _tls_start = 0;
|
We use here pointer-types for start/end so that tls-data remains
|
||||||
_CRTALLOC(".tls$ZZZ") char _tls_end = 0;
|
aligned on pointer-size-width. This seems to be required for
|
||||||
|
pe-loader. */
|
||||||
|
_CRTALLOC(".tls") char *_tls_start = NULL;
|
||||||
|
_CRTALLOC(".tls$ZZZ") char *_tls_end = NULL;
|
||||||
|
|
||||||
_CRTALLOC(".CRT$XLA") PIMAGE_TLS_CALLBACK __xl_a = 0;
|
_CRTALLOC(".CRT$XLA") PIMAGE_TLS_CALLBACK __xl_a = 0;
|
||||||
_CRTALLOC(".CRT$XLZ") PIMAGE_TLS_CALLBACK __xl_z = 0;
|
_CRTALLOC(".CRT$XLZ") PIMAGE_TLS_CALLBACK __xl_z = 0;
|
||||||
|
|
||||||
_CRTALLOC(".rdata$T") const IMAGE_TLS_DIRECTORY _tls_used = {
|
const IMAGE_TLS_DIRECTORY _tls_used = {
|
||||||
(ULONG_PTR) &_tls_start+1, (ULONG_PTR) &_tls_end,
|
(ULONG_PTR) &_tls_start, (ULONG_PTR) &_tls_end,
|
||||||
(ULONG_PTR) &_tls_index, (ULONG_PTR) (&__xl_a+1),
|
(ULONG_PTR) &_tls_index, (ULONG_PTR) (&__xl_a+1),
|
||||||
(ULONG) 0, (ULONG) 0
|
(ULONG) 0, (ULONG) 0
|
||||||
};
|
};
|
||||||
|
@ -80,10 +74,6 @@ static __CRT_THREAD TlsDtorNode dtor_list_head;
|
||||||
|
|
||||||
extern int _CRT_MT;
|
extern int _CRT_MT;
|
||||||
|
|
||||||
#ifndef _WIN64
|
|
||||||
int __mingw_usemthread_dll;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
BOOL WINAPI __dyn_tls_init (HANDLE, DWORD, LPVOID);
|
BOOL WINAPI __dyn_tls_init (HANDLE, DWORD, LPVOID);
|
||||||
|
|
||||||
BOOL WINAPI
|
BOOL WINAPI
|
||||||
|
|
Loading…
Reference in a new issue