1 | #ifndef LLDB_SOURCE_PLUGINS_PROCESS_MINIDUMP_NTSTRUCTURES_H |
2 | |
3 | #define LLDB_SOURCE_PLUGINS_PROCESS_MINIDUMP_NTSTRUCTURES_H |
4 | |
5 | //===-- NtStructures.h ------------------------------------------*- C++ -*-===// |
6 | // |
7 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
8 | // See https://llvm.org/LICENSE.txt for license information. |
9 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
10 | // |
11 | //===----------------------------------------------------------------------===// |
12 | |
13 | #ifndef liblldb_Plugins_Process_Minidump_NtStructures_h_ |
14 | #define liblldb_Plugins_Process_Minidump_NtStructures_h_ |
15 | |
16 | #include "llvm/Support/Endian.h" |
17 | |
18 | namespace lldb_private { |
19 | |
20 | namespace minidump { |
21 | |
22 | // This describes the layout of a TEB (Thread Environment Block) for a 64-bit |
23 | // process. It's adapted from the 32-bit TEB in winternl.h. Currently, we care |
24 | // only about the position of the tls_slots. |
25 | struct TEB64 { |
26 | llvm::support::ulittle64_t reserved1[12]; |
27 | llvm::support::ulittle64_t process_environment_block; |
28 | llvm::support::ulittle64_t reserved2[399]; |
29 | uint8_t reserved3[1952]; |
30 | llvm::support::ulittle64_t tls_slots[64]; |
31 | uint8_t reserved4[8]; |
32 | llvm::support::ulittle64_t reserved5[26]; |
33 | llvm::support::ulittle64_t reserved_for_ole; // Windows 2000 only |
34 | llvm::support::ulittle64_t reserved6[4]; |
35 | llvm::support::ulittle64_t tls_expansion_slots; |
36 | }; |
37 | |
38 | #endif // liblldb_Plugins_Process_Minidump_NtStructures_h_ |
39 | } // namespace minidump |
40 | } // namespace lldb_private |
41 | |
42 | #endif |
43 | |