/*1* Copyright 2026 Jacek Caban for CodeWeavers2*3* This library is free software; you can redistribute it and/or4* modify it under the terms of the GNU Lesser General Public5* License as published by the Free Software Foundation; either6* version 2.1 of the License, or (at your option) any later version.7*8* This library is distributed in the hope that it will be useful,9* but WITHOUT ANY WARRANTY; without even the implied warranty of10* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU11* Lesser General Public License for more details.12*13* You should have received a copy of the GNU Lesser General Public14* License along with this library; if not, write to the Free Software15* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA16*/1718#ifdef __WINE_PE_BUILD1920#include <stdarg.h>21#include "windef.h"22#include "winbase.h"23#include "wine/asm.h"2425#ifdef __i386__26/* Offset of ThreadLocalStoragePointer in the TEB, the compiler uses %fs:_tls_array to access it. */27asm( ".globl " __ASM_NAME("_tls_array") "\n\t"28__ASM_NAME("_tls_array") "=44" );29#endif3031int _tls_index = 0;3233__attribute__((section(".tls"))) char _tls_start = 0;34__attribute__((section(".tls$ZZZ"))) char _tls_end = 0;3536__attribute__((section(".CRT$XLA"))) void *__xl_a = 0;37__attribute__((section(".CRT$XLZ"))) void *__xl_z = 0;3839const struct40{41void *StartAddressOfRawData;42void *EndAddressOfRawData;43void *AddressOfIndex;44void *AddressOfCallBacks;45ULONG SizeOfZeroFill;46ULONG Characteristics;47} _tls_used = {48&_tls_start,49&_tls_end,50&_tls_index,51&__xl_a + 1,52};5354#endif555657