xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/Process/Windows/Common/NtStructures.h (revision 061da546b983eb767bad15e67af1174fb0bcf31c)
1 //===-- NtStructures.h ------------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef liblldb_Plugins_Process_Windows_Common_NtStructures_h_
10 #define liblldb_Plugins_Process_Windows_Common_NtStructures_h_
11 
12 #include "lldb/Host/windows/windows.h"
13 
14 // This describes the layout of a TEB (Thread Environment Block) for a 64-bit
15 // process.  It's adapted from the 32-bit TEB in winternl.h.  Currently, we care
16 // only about the position of the TlsSlots.
17 struct TEB64 {
18   ULONG64 Reserved1[12];
19   ULONG64 ProcessEnvironmentBlock;
20   ULONG64 Reserved2[399];
21   BYTE Reserved3[1952];
22   ULONG64 TlsSlots[64];
23   BYTE Reserved4[8];
24   ULONG64 Reserved5[26];
25   ULONG64 ReservedForOle; // Windows 2000 only
26   ULONG64 Reserved6[4];
27   ULONG64 TlsExpansionSlots;
28 };
29 
30 #endif
31