1 //===-- NtStructures.h ------------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_Plugins_Process_Minidump_NtStructures_h_ 11 #define liblldb_Plugins_Process_Minidump_NtStructures_h_ 12 13 #include "llvm/Support/Endian.h" 14 15 namespace lldb_private { 16 17 namespace minidump { 18 19 // This describes the layout of a TEB (Thread Environment Block) for a 64-bit 20 // process. It's adapted from the 32-bit TEB in winternl.h. Currently, we care 21 // only about the position of the tls_slots. 22 struct TEB64 { 23 llvm::support::ulittle64_t reserved1[12]; 24 llvm::support::ulittle64_t process_environment_block; 25 llvm::support::ulittle64_t reserved2[399]; 26 uint8_t reserved3[1952]; 27 llvm::support::ulittle64_t tls_slots[64]; 28 uint8_t reserved4[8]; 29 llvm::support::ulittle64_t reserved5[26]; 30 llvm::support::ulittle64_t reserved_for_ole; // Windows 2000 only 31 llvm::support::ulittle64_t reserved6[4]; 32 llvm::support::ulittle64_t tls_expansion_slots; 33 }; 34 35 #endif // liblldb_Plugins_Process_Minidump_NtStructures_h_ 36 } // namespace minidump 37 } // namespace lldb_private 38