Index: experimental/visual_studio_plugin/third_party/breakpad/common/dwarf/dwarf2diehandler.cc |
diff --git a/experimental/visual_studio_plugin/third_party/breakpad/common/dwarf/dwarf2diehandler.cc b/experimental/visual_studio_plugin/third_party/breakpad/common/dwarf/dwarf2diehandler.cc |
deleted file mode 100644 |
index 099f5193a6cd39ea9747ae469100435ea8af26a5..0000000000000000000000000000000000000000 |
--- a/experimental/visual_studio_plugin/third_party/breakpad/common/dwarf/dwarf2diehandler.cc |
+++ /dev/null |
@@ -1,186 +0,0 @@ |
-// Copyright (c) 2010 Google Inc. All Rights Reserved. |
-// |
-// Redistribution and use in source and binary forms, with or without |
-// modification, are permitted provided that the following conditions are |
-// met: |
-// |
-// * Redistributions of source code must retain the above copyright |
-// notice, this list of conditions and the following disclaimer. |
-// * Redistributions in binary form must reproduce the above |
-// copyright notice, this list of conditions and the following disclaimer |
-// in the documentation and/or other materials provided with the |
-// distribution. |
-// * Neither the name of Google Inc. nor the names of its |
-// contributors may be used to endorse or promote products derived from |
-// this software without specific prior written permission. |
-// |
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- |
-// Original author: Jim Blandy <jimb@mozilla.com> <jimb@red-bean.com> |
- |
-// dwarf2diehandler.cc: Implement the dwarf2reader::DieDispatcher class. |
-// See dwarf2diehandler.h for details. |
- |
-#include <cassert> |
- |
-#include "common/dwarf/dwarf2diehandler.h" |
- |
-namespace dwarf2reader { |
- |
-DIEDispatcher::~DIEDispatcher() { |
- while (!die_handlers_.empty()) { |
- HandlerStack &entry = die_handlers_.top(); |
- if (entry.handler_ != root_handler_) |
- delete entry.handler_; |
- die_handlers_.pop(); |
- } |
-} |
- |
-bool DIEDispatcher::StartCompilationUnit(uint64 offset, uint8 address_size, |
- uint8 offset_size, uint64 cu_length, |
- uint8 dwarf_version) { |
- return root_handler_->StartCompilationUnit(offset, address_size, |
- offset_size, cu_length, |
- dwarf_version); |
-} |
- |
-bool DIEDispatcher::StartDIE(uint64 offset, enum DwarfTag tag, |
- const AttributeList& attrs) { |
- // The stack entry for the parent of this DIE, if there is one. |
- HandlerStack *parent = die_handlers_.empty() ? NULL : &die_handlers_.top(); |
- |
- // Does this call indicate that we're done receiving the parent's |
- // attributes' values? If so, call its EndAttributes member function. |
- if (parent && parent->handler_ && !parent->reported_attributes_end_) { |
- parent->reported_attributes_end_ = true; |
- if (!parent->handler_->EndAttributes()) { |
- // Finish off this handler now. and edit *PARENT to indicate that |
- // we don't want to visit any of the children. |
- parent->handler_->Finish(); |
- if (parent->handler_ != root_handler_) |
- delete parent->handler_; |
- parent->handler_ = NULL; |
- return false; |
- } |
- } |
- |
- // Find a handler for this DIE. |
- DIEHandler *handler; |
- if (parent) { |
- if (parent->handler_) |
- // Ask the parent to find a handler. |
- handler = parent->handler_->FindChildHandler(offset, tag, attrs); |
- else |
- // No parent handler means we're not interested in any of our |
- // children. |
- handler = NULL; |
- } else { |
- // This is the root DIE. For a non-root DIE, the parent's handler |
- // decides whether to visit it, but the root DIE has no parent |
- // handler, so we have a special method on the root DIE handler |
- // itself to decide. |
- if (root_handler_->StartRootDIE(offset, tag, attrs)) |
- handler = root_handler_; |
- else |
- handler = NULL; |
- } |
- |
- // Push a handler stack entry for this new handler. As an |
- // optimization, we don't push NULL-handler entries on top of other |
- // NULL-handler entries; we just let the oldest such entry stand for |
- // the whole subtree. |
- if (handler || !parent || parent->handler_) { |
- HandlerStack entry; |
- entry.offset_ = offset; |
- entry.handler_ = handler; |
- entry.reported_attributes_end_ = false; |
- die_handlers_.push(entry); |
- } |
- |
- return handler != NULL; |
-} |
- |
-void DIEDispatcher::EndDIE(uint64 offset) { |
- assert(!die_handlers_.empty()); |
- HandlerStack *entry = &die_handlers_.top(); |
- if (entry->handler_) { |
- // This entry had better be the handler for this DIE. |
- assert(entry->offset_ == offset); |
- // If a DIE has no children, this EndDIE call indicates that we're |
- // done receiving its attributes' values. |
- if (!entry->reported_attributes_end_) |
- entry->handler_->EndAttributes(); // Ignore return value: no children. |
- entry->handler_->Finish(); |
- if (entry->handler_ != root_handler_) |
- delete entry->handler_; |
- } else { |
- // If this DIE is within a tree we're ignoring, then don't pop the |
- // handler stack: that entry stands for the whole tree. |
- if (entry->offset_ != offset) |
- return; |
- } |
- die_handlers_.pop(); |
-} |
- |
-void DIEDispatcher::ProcessAttributeUnsigned(uint64 offset, |
- enum DwarfAttribute attr, |
- enum DwarfForm form, |
- uint64 data) { |
- HandlerStack ¤t = die_handlers_.top(); |
- // This had better be an attribute of the DIE we were meant to handle. |
- assert(offset == current.offset_); |
- current.handler_->ProcessAttributeUnsigned(attr, form, data); |
-} |
- |
-void DIEDispatcher::ProcessAttributeSigned(uint64 offset, |
- enum DwarfAttribute attr, |
- enum DwarfForm form, |
- int64 data) { |
- HandlerStack ¤t = die_handlers_.top(); |
- // This had better be an attribute of the DIE we were meant to handle. |
- assert(offset == current.offset_); |
- current.handler_->ProcessAttributeSigned(attr, form, data); |
-} |
- |
-void DIEDispatcher::ProcessAttributeReference(uint64 offset, |
- enum DwarfAttribute attr, |
- enum DwarfForm form, |
- uint64 data) { |
- HandlerStack ¤t = die_handlers_.top(); |
- // This had better be an attribute of the DIE we were meant to handle. |
- assert(offset == current.offset_); |
- current.handler_->ProcessAttributeReference(attr, form, data); |
-} |
- |
-void DIEDispatcher::ProcessAttributeBuffer(uint64 offset, |
- enum DwarfAttribute attr, |
- enum DwarfForm form, |
- const char* data, |
- uint64 len) { |
- HandlerStack ¤t = die_handlers_.top(); |
- // This had better be an attribute of the DIE we were meant to handle. |
- assert(offset == current.offset_); |
- current.handler_->ProcessAttributeBuffer(attr, form, data, len); |
-} |
- |
-void DIEDispatcher::ProcessAttributeString(uint64 offset, |
- enum DwarfAttribute attr, |
- enum DwarfForm form, |
- const string& data) { |
- HandlerStack ¤t = die_handlers_.top(); |
- // This had better be an attribute of the DIE we were meant to handle. |
- assert(offset == current.offset_); |
- current.handler_->ProcessAttributeString(attr, form, data); |
-} |
- |
-} // namespace dwarf2reader |