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

Unified Diff: src/common/dwarf_cu_to_module.cc

Issue 2147523005: Initial support for dumping DWARF corresponding to Swift code (Closed) Base URL: https://chromium.googlesource.com/breakpad/breakpad.git@master
Patch Set: Pass through mangled Swift names; support DWARF 4's DW_AT_linkage_name Created 4 years, 3 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: src/common/dwarf_cu_to_module.cc
diff --git a/src/common/dwarf_cu_to_module.cc b/src/common/dwarf_cu_to_module.cc
index 479e39b221250bf37a84cbd8ecdbb652825757e6..bcda18afb2ff97a6b17c7e4dab7e7f3eb6cfe4ec 100644
--- a/src/common/dwarf_cu_to_module.cc
+++ b/src/common/dwarf_cu_to_module.cc
@@ -39,9 +39,6 @@
#include "common/dwarf_cu_to_module.h"
#include <assert.h>
-#if !defined(__ANDROID__)
-#include <cxxabi.h>
-#endif
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
@@ -350,20 +347,18 @@ void DwarfCUToModule::GenericDIEHandler::ProcessAttributeString(
case dwarf2reader::DW_AT_name:
name_attribute_ = AddStringToPool(data);
break;
- case dwarf2reader::DW_AT_MIPS_linkage_name: {
- char* demangled = NULL;
- int status = -1;
-#if !defined(__ANDROID__) // Android NDK doesn't provide abi::__cxa_demangle.
- demangled = abi::__cxa_demangle(data.c_str(), NULL, NULL, &status);
-#endif
+ case dwarf2reader::DW_AT_MIPS_linkage_name:
+ case dwarf2reader::DW_AT_linkage_name: {
+ string demangled;
+ int status = cu_context_->language->DemangleName(data,
+ &demangled);
if (status != 0) {
- cu_context_->reporter->DemangleError(data, status);
- demangled_name_ = "";
- break;
- }
- if (demangled) {
+ if (status != Language::kDontDemangle) {
Ted Mielczarek 2016/09/14 10:20:10 It's unfortunate that we lose the language context
Mark Mentovai 2016/09/21 17:56:55 Ted Mielczarek wrote:
+ cu_context_->reporter->DemangleError(data, status);
+ }
+ demangled_name_.clear();
+ } else {
demangled_name_ = AddStringToPool(demangled);
- free(reinterpret_cast<void*>(demangled));
}
break;
}
@@ -761,6 +756,7 @@ dwarf2reader::DIEHandler *DwarfCUToModule::FindChildHandler(
case dwarf2reader::DW_TAG_class_type:
case dwarf2reader::DW_TAG_structure_type:
case dwarf2reader::DW_TAG_union_type:
+ case dwarf2reader::DW_TAG_module:
return new NamedScopeHandler(cu_context_.get(), child_context_.get(),
offset);
default:
@@ -774,6 +770,10 @@ void DwarfCUToModule::SetLanguage(DwarfLanguage language) {
cu_context_->language = Language::Java;
break;
+ case dwarf2reader::DW_LANG_Swift:
+ cu_context_->language = Language::Swift;
+ break;
+
// DWARF has no generic language code for assembly language; this is
// what the GNU toolchain uses.
case dwarf2reader::DW_LANG_Mips_Assembler:
« no previous file with comments | « src/common/dwarf/dwarf2enums.h ('k') | src/common/language.h » ('j') | src/common/language.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698