Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Unified Diff: third_party/crashpad/crashpad/minidump/minidump_context_writer.cc

Issue 2710663006: Update Crashpad to 4a2043ea65e2641ef1a921801c0aaa15ada02fc7 (Closed)
Patch Set: Update Crashpad to 4a2043ea65e2 Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/crashpad/crashpad/minidump/minidump_context_writer.cc
diff --git a/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc b/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc
index 4d3bf8a459d3345c5f24915bb6d048d8d81ce99b..c6c29d969e1754501531417ad1e5b997a3277f50 100644
--- a/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc
+++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc
@@ -14,6 +14,8 @@
#include "minidump/minidump_context_writer.h"
+#include <windows.h>
+#include <dbghelp.h>
#include <stdint.h>
#include <string.h>
@@ -24,6 +26,28 @@
namespace crashpad {
+namespace {
+
+// Sanity-check complex structures to ensure interoperability.
+static_assert(sizeof(MinidumpContextX86) == 716, "MinidumpContextX86 size");
+static_assert(sizeof(MinidumpContextAMD64) == 1232,
+ "MinidumpContextAMD64 size");
+
+// These structures can also be checked against definitions in the Windows SDK.
+#if defined(OS_WIN)
+#if defined(ARCH_CPU_X86_FAMILY)
+static_assert(sizeof(MinidumpContextX86) == sizeof(WOW64_CONTEXT),
+ "WOW64_CONTEXT size");
+#if defined(ARCH_CPU_X86)
+static_assert(sizeof(MinidumpContextX86) == sizeof(CONTEXT), "CONTEXT size");
+#elif defined(ARCH_CPU_X86_64)
+static_assert(sizeof(MinidumpContextAMD64) == sizeof(CONTEXT), "CONTEXT size");
+#endif
+#endif // ARCH_CPU_X86_FAMILY
+#endif // OS_WIN
+
+} // namespace
+
MinidumpContextWriter::~MinidumpContextWriter() {
}
@@ -89,28 +113,11 @@ void MinidumpContextX86Writer::InitializeFromSnapshot(
context_.dr6 = context_snapshot->dr6;
context_.dr7 = context_snapshot->dr7;
- // The contents of context_.float_save effectively alias everything in
- // context_.fxsave that’s related to x87 FPU state. context_.float_save
- // doesn’t carry state specific to SSE (or later), such as mxcsr and the xmm
+ // The contents of context_.fsave effectively alias everything in
+ // context_.fxsave that’s related to x87 FPU state. context_.fsave doesn’t
+ // carry state specific to SSE (or later), such as mxcsr and the xmm
// registers.
- context_.float_save.control_word = context_snapshot->fxsave.fcw;
- context_.float_save.status_word = context_snapshot->fxsave.fsw;
- context_.float_save.tag_word =
- CPUContextX86::FxsaveToFsaveTagWord(context_snapshot->fxsave.fsw,
- context_snapshot->fxsave.ftw,
- context_snapshot->fxsave.st_mm);
- context_.float_save.error_offset = context_snapshot->fxsave.fpu_ip;
- context_.float_save.error_selector = context_snapshot->fxsave.fpu_cs;
- context_.float_save.data_offset = context_snapshot->fxsave.fpu_dp;
- context_.float_save.data_selector = context_snapshot->fxsave.fpu_ds;
-
- for (size_t index = 0, offset = 0;
- index < arraysize(context_snapshot->fxsave.st_mm);
- offset += sizeof(context_snapshot->fxsave.st_mm[index].st), ++index) {
- memcpy(&context_.float_save.register_area[offset],
- &context_snapshot->fxsave.st_mm[index].st,
- sizeof(context_snapshot->fxsave.st_mm[index].st));
- }
+ CPUContextX86::FxsaveToFsave(context_snapshot->fxsave, &context_.fsave);
context_.gs = context_snapshot->gs;
context_.fs = context_snapshot->fs;

Powered by Google App Engine
This is Rietveld 408576698