Chromium Code Reviews| Index: components/crash/content/app/crashpad.cc |
| diff --git a/components/crash/content/app/crashpad.cc b/components/crash/content/app/crashpad.cc |
| index e3b4124affd8182b1d160d42f109363bab717612..345dced18decc078b70e0c57b2cc454b619bac18 100644 |
| --- a/components/crash/content/app/crashpad.cc |
| +++ b/components/crash/content/app/crashpad.cc |
| @@ -19,6 +19,7 @@ |
| #include "base/strings/string_piece.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/sys_string_conversions.h" |
| +#include "base/strings/utf_string_conversions.h" |
| #include "build/build_config.h" |
| #include "components/crash/content/app/crash_reporter_client.h" |
| #include "third_party/crashpad/crashpad/client/crash_report_database.h" |
| @@ -143,8 +144,15 @@ void InitializeCrashpad(bool initial_client, const std::string& process_type) { |
| g_simple_string_dictionary = new crashpad::SimpleStringDictionary(); |
| crashpad_info->set_simple_annotations(g_simple_string_dictionary); |
| +#if !defined(OS_WIN) || !defined(COMPONENT_BUILD) |
| + // chrome/common/child_process_logging_win.cc registers crash keys for |
| + // chrome.dll. In a component build, that is sufficient as chrome.dll and |
| + // chrome.exe share a copy of base (in base.dll). In a static build, the EXE |
| + // must separately initialize the crash keys configuration as it has its own |
| + // statically linked copy of base. |
| base::debug::SetCrashKeyReportingFunctions(SetCrashKeyValue, ClearCrashKey); |
| crash_reporter_client->RegisterCrashKeys(); |
| +#endif |
| SetCrashKeyValue("ptype", browser_process ? base::StringPiece("browser") |
| : base::StringPiece(process_type)); |
| @@ -234,3 +242,25 @@ void GetUploadedReports(std::vector<UploadedReport>* uploaded_reports) { |
| } |
| } // namespace crash_reporter |
| + |
| +#if defined(OS_WIN) |
| + |
| +extern "C" { |
| + |
| +// NOTE: This function is used by SyzyASAN to annotate crash reports. If you |
| +// change the name or signature of this function you will break SyzyASAN |
| +// instrumented releases of Chrome. Please contact syzygy-team@chromium.org |
| +// before doing so! See also http://crbug.com/567781. |
| +void __declspec(dllexport) __cdecl SetCrashKeyValueImpl(const wchar_t* key, |
| + const wchar_t* value) { |
|
scottmg
2015/12/10 01:11:29
These also happen to be functions that SyzyASAN re
|
| + crash_reporter::SetCrashKeyValue(base::UTF16ToUTF8(key), |
| + base::UTF16ToUTF8(value)); |
| +} |
| + |
| +void __declspec(dllexport) __cdecl ClearCrashKeyValueImpl(const wchar_t* key) { |
| + crash_reporter::ClearCrashKey(base::UTF16ToUTF8(key)); |
| +} |
| + |
| +} // extern "C" |
| + |
| +#endif // OS_WIN |