From ed2d80d0c2d559df2ae3361f59212d24409c54b4 Mon Sep 17 00:00:00 2001
From: Lars Volker <lv@cloudera.com>
Date: Mon, 19 Sep 2016 13:20:53 -0700
Subject: [PATCH 1/2] Add basic support for dwz dwarf extension

The dwz tool [1] can be used to compress symbols that occur in multiple object files by moving them into a shared object file. It introduces new DWARF macros to reference to those symbols.

Breakpad currently does not support those macros, which can lead to
crashes.

This change makes breakpad ignore these symbols.

[1] https://sourceware.org/git/?p=dwz.git;a=summary

BUG:google-breakpad:717
---
 src/common/dwarf/dwarf2enums.h   |  7 ++++++-
 src/common/dwarf/dwarf2reader.cc | 17 +++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/common/dwarf/dwarf2enums.h b/src/common/dwarf/dwarf2enums.h
index 4316a89..fae01f7 100644
--- a/src/common/dwarf/dwarf2enums.h
+++ b/src/common/dwarf/dwarf2enums.h
@@ -152,7 +152,12 @@ enum DwarfForm {
   DW_FORM_ref_sig8 = 0x20,
   // Extensions for Fission.  See http://gcc.gnu.org/wiki/DebugFission.
   DW_FORM_GNU_addr_index = 0x1f01,
-  DW_FORM_GNU_str_index = 0x1f02
+  DW_FORM_GNU_str_index = 0x1f02,
+
+  // Extensions for dwz compression tool. See
+  // https://fedoraproject.org/wiki/Features/DwarfCompressor
+  DW_FORM_GNU_ref_alt = 0x1f20,
+  DW_FORM_GNU_strp_alt = 0x1f21
 };

 // Attribute names and codes
diff --git a/src/common/dwarf/dwarf2reader.cc b/src/common/dwarf/dwarf2reader.cc
index fda049d..974e13a 100644
--- a/src/common/dwarf/dwarf2reader.cc
+++ b/src/common/dwarf/dwarf2reader.cc
@@ -224,6 +224,11 @@ const uint8_t *CompilationUnit::SkipAttribute(const uint8_t *start,
       }
       break;

+    case DW_FORM_GNU_ref_alt:
+    case DW_FORM_GNU_strp_alt:
+      return start + reader_->OffsetSize();
+      break;
+
     case DW_FORM_block1:
       return start + 1 + reader_->ReadOneByte(start);
     case DW_FORM_block2:
@@ -519,7 +524,19 @@ const uint8_t *CompilationUnit::ProcessAttribute(
       ProcessAttributeUnsigned(dieoffset, attr, form,
                                reader_->ReadAddress(addr_ptr));
       return start + len;
+      break;
     }
+    case DW_FORM_GNU_ref_alt: {
+      // TODO: This effectively ignores attributes stored in alternate object
+      // files. We should process them properly instead.
+      return start + reader_->OffsetSize();
+      break;
+    }
+    case DW_FORM_GNU_strp_alt: {
+      return start + reader_->OffsetSize();
+      break;
+    }
+
   }
   fprintf(stderr, "Unhandled form type\n");
   return NULL;
--
2.10.2
