diff --git a/headers/private/debugger/arch/Architecture.h b/headers/private/debugger/arch/Architecture.h index f86bc89590..8c6d7aa07d 100644 --- a/headers/private/debugger/arch/Architecture.h +++ b/headers/private/debugger/arch/Architecture.h @@ -1,6 +1,6 @@ /* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. - * Copyright 2011-2015, Rene Gollent, rene@gollent.com. + * Copyright 2011-2016, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ #ifndef ARCHITECTURE_H @@ -50,12 +50,17 @@ enum { class Architecture : public BReferenceable { public: Architecture(TeamMemory* teamMemory, - uint8 addressSize, bool bigEndian); + uint8 addressSize, + size_t debugCpuStateSize, + bool bigEndian); + virtual ~Architecture(); virtual status_t Init(); inline uint8 AddressSize() const { return fAddressSize; } + inline size_t DebugCpuStateSize() const + { return fDebugCpuStateSize; } inline bool IsBigEndian() const { return fBigEndian; } inline bool IsHostEndian() const; @@ -136,6 +141,7 @@ public: protected: TeamMemory* fTeamMemory; uint8 fAddressSize; + size_t fDebugCpuStateSize; bool fBigEndian; }; diff --git a/src/kits/debugger/arch/Architecture.cpp b/src/kits/debugger/arch/Architecture.cpp index 162002466b..df7b2d51ac 100644 --- a/src/kits/debugger/arch/Architecture.cpp +++ b/src/kits/debugger/arch/Architecture.cpp @@ -1,5 +1,6 @@ /* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2016, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ @@ -24,10 +25,11 @@ Architecture::Architecture(TeamMemory* teamMemory, uint8 addressSize, - bool bigEndian) + size_t debugCpuStateSize, bool bigEndian) : fTeamMemory(teamMemory), fAddressSize(addressSize), + fDebugCpuStateSize(debugCpuStateSize), fBigEndian(bigEndian) { } diff --git a/src/kits/debugger/arch/x86/ArchitectureX86.cpp b/src/kits/debugger/arch/x86/ArchitectureX86.cpp index b423501fed..8f0ddb2215 100644 --- a/src/kits/debugger/arch/x86/ArchitectureX86.cpp +++ b/src/kits/debugger/arch/x86/ArchitectureX86.cpp @@ -1,6 +1,6 @@ /* * Copyright 2009-2012, Ingo Weinhold, ingo_weinhold@gmx.de. - * Copyright 2011-2015, Rene Gollent, rene@gollent.com. + * Copyright 2011-2016, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ @@ -127,7 +127,7 @@ struct ArchitectureX86::FromDwarfRegisterMap : RegisterMap { ArchitectureX86::ArchitectureX86(TeamMemory* teamMemory) : - Architecture(teamMemory, 4, false), + Architecture(teamMemory, 4, sizeof(x86_debug_cpu_state), false), fFeatureFlags(0), fAssemblyLanguage(NULL), fToDwarfRegisterMap(NULL), @@ -155,6 +155,9 @@ ArchitectureX86::Init() return B_NO_MEMORY; #if defined(__INTEL__) + // TODO: this needs to be determined/retrieved indirectly from the + // target host interface, as in the remote case the CPU features may + // differ from those of the local CPU. cpuid_info info; status_t error = get_cpuid(&info, 1, 0); if (error != B_OK) diff --git a/src/kits/debugger/arch/x86_64/ArchitectureX8664.cpp b/src/kits/debugger/arch/x86_64/ArchitectureX8664.cpp index 4ec4e6a678..c6208b6503 100644 --- a/src/kits/debugger/arch/x86_64/ArchitectureX8664.cpp +++ b/src/kits/debugger/arch/x86_64/ArchitectureX8664.cpp @@ -1,7 +1,7 @@ /* * Copyright 2012, Alex Smith, alex@alex-smith.me.uk. * Copyright 2009-2012, Ingo Weinhold, ingo_weinhold@gmx.de. - * Copyright 2011-2015, Rene Gollent, rene@gollent.com. + * Copyright 2011-2016, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ @@ -144,7 +144,7 @@ struct ArchitectureX8664::FromDwarfRegisterMap : RegisterMap { ArchitectureX8664::ArchitectureX8664(TeamMemory* teamMemory) : - Architecture(teamMemory, 8, false), + Architecture(teamMemory, 8, sizeof(x86_64_debug_cpu_state), false), fAssemblyLanguage(NULL), fToDwarfRegisterMap(NULL), fFromDwarfRegisterMap(NULL)