42 lines
972 B
C
42 lines
972 B
C
/*
|
|
*
|
|
* xapitls.c
|
|
*
|
|
* Xapi TLS data
|
|
*
|
|
*/
|
|
|
|
#include "dllp.h"
|
|
|
|
ULONG _tls_index = 0;
|
|
|
|
/* Special symbols to mark start and end of Thread Local Storage area. */
|
|
|
|
#pragma data_seg(".tls")
|
|
|
|
char _tls_start = 0;
|
|
|
|
#pragma data_seg(".tls$ZZZ")
|
|
|
|
char _tls_end = 0;
|
|
|
|
/*
|
|
* Mark the .tls section as discardable so that IMAGEBLD throws the
|
|
* section (non-zero Thread Local Storage data is moved to a different
|
|
* location in the image).
|
|
*/
|
|
|
|
#pragma comment(linker, "/SECTION:.tls,D")
|
|
|
|
#pragma data_seg(".rdata$T")
|
|
|
|
const IMAGE_TLS_DIRECTORY _tls_used =
|
|
{
|
|
(ULONG)(ULONG_PTR) &_tls_start, // start of tls data
|
|
(ULONG)(ULONG_PTR) &_tls_end, // end of tls data
|
|
(ULONG)(ULONG_PTR) &_tls_index, // address of tls_index
|
|
(ULONG)(ULONG_PTR) NULL, // pointer to call back array
|
|
(ULONG) 0, // size of tls zero fill
|
|
(ULONG) 0 // characteristics
|
|
};
|