summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.cpp')
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.cpp209
1 files changed, 92 insertions, 117 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.cpp
index 6773d0762a2..fe6df913b76 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.cpp
@@ -18,74 +18,63 @@ using namespace std;
//----------------------------------------------------------------------
// DWARFAbbreviationDeclarationSet::Clear()
//----------------------------------------------------------------------
-void
-DWARFAbbreviationDeclarationSet::Clear()
-{
- m_idx_offset = 0;
- m_decls.clear();
+void DWARFAbbreviationDeclarationSet::Clear() {
+ m_idx_offset = 0;
+ m_decls.clear();
}
-
//----------------------------------------------------------------------
// DWARFAbbreviationDeclarationSet::Extract()
//----------------------------------------------------------------------
-bool
-DWARFAbbreviationDeclarationSet::Extract(const DWARFDataExtractor& data, lldb::offset_t *offset_ptr)
-{
- const lldb::offset_t begin_offset = *offset_ptr;
- m_offset = begin_offset;
- Clear();
- DWARFAbbreviationDeclaration abbrevDeclaration;
- dw_uleb128_t prev_abbr_code = 0;
- while (abbrevDeclaration.Extract(data, offset_ptr))
- {
- m_decls.push_back(abbrevDeclaration);
- if (m_idx_offset == 0)
- m_idx_offset = abbrevDeclaration.Code();
- else
- {
- if (prev_abbr_code + 1 != abbrevDeclaration.Code())
- m_idx_offset = UINT32_MAX; // Out of order indexes, we can't do O(1) lookups...
- }
- prev_abbr_code = abbrevDeclaration.Code();
+bool DWARFAbbreviationDeclarationSet::Extract(const DWARFDataExtractor &data,
+ lldb::offset_t *offset_ptr) {
+ const lldb::offset_t begin_offset = *offset_ptr;
+ m_offset = begin_offset;
+ Clear();
+ DWARFAbbreviationDeclaration abbrevDeclaration;
+ dw_uleb128_t prev_abbr_code = 0;
+ while (abbrevDeclaration.Extract(data, offset_ptr)) {
+ m_decls.push_back(abbrevDeclaration);
+ if (m_idx_offset == 0)
+ m_idx_offset = abbrevDeclaration.Code();
+ else {
+ if (prev_abbr_code + 1 != abbrevDeclaration.Code())
+ m_idx_offset =
+ UINT32_MAX; // Out of order indexes, we can't do O(1) lookups...
}
- return begin_offset != *offset_ptr;
+ prev_abbr_code = abbrevDeclaration.Code();
+ }
+ return begin_offset != *offset_ptr;
}
-
//----------------------------------------------------------------------
// DWARFAbbreviationDeclarationSet::Dump()
//----------------------------------------------------------------------
-void
-DWARFAbbreviationDeclarationSet::Dump(Stream *s) const
-{
- std::for_each (m_decls.begin(), m_decls.end(), bind2nd(std::mem_fun_ref(&DWARFAbbreviationDeclaration::Dump),s));
+void DWARFAbbreviationDeclarationSet::Dump(Stream *s) const {
+ std::for_each(
+ m_decls.begin(), m_decls.end(),
+ bind2nd(std::mem_fun_ref(&DWARFAbbreviationDeclaration::Dump), s));
}
-
//----------------------------------------------------------------------
// DWARFAbbreviationDeclarationSet::GetAbbreviationDeclaration()
//----------------------------------------------------------------------
-const DWARFAbbreviationDeclaration*
-DWARFAbbreviationDeclarationSet::GetAbbreviationDeclaration(dw_uleb128_t abbrCode) const
-{
- if (m_idx_offset == UINT32_MAX)
- {
- DWARFAbbreviationDeclarationCollConstIter pos;
- DWARFAbbreviationDeclarationCollConstIter end = m_decls.end();
- for (pos = m_decls.begin(); pos != end; ++pos)
- {
- if (pos->Code() == abbrCode)
- return &(*pos);
- }
- }
- else
- {
- uint32_t idx = abbrCode - m_idx_offset;
- if (idx < m_decls.size())
- return &m_decls[idx];
+const DWARFAbbreviationDeclaration *
+DWARFAbbreviationDeclarationSet::GetAbbreviationDeclaration(
+ dw_uleb128_t abbrCode) const {
+ if (m_idx_offset == UINT32_MAX) {
+ DWARFAbbreviationDeclarationCollConstIter pos;
+ DWARFAbbreviationDeclarationCollConstIter end = m_decls.end();
+ for (pos = m_decls.begin(); pos != end; ++pos) {
+ if (pos->Code() == abbrCode)
+ return &(*pos);
}
- return NULL;
+ } else {
+ uint32_t idx = abbrCode - m_idx_offset;
+ if (idx < m_decls.size())
+ return &m_decls[idx];
+ }
+ return NULL;
}
//----------------------------------------------------------------------
@@ -94,22 +83,20 @@ DWARFAbbreviationDeclarationSet::GetAbbreviationDeclaration(dw_uleb128_t abbrCod
// Append an abbreviation declaration with a sequential code for O(n)
// lookups. Handy when creating an DWARFAbbreviationDeclarationSet.
//----------------------------------------------------------------------
-dw_uleb128_t
-DWARFAbbreviationDeclarationSet::AppendAbbrevDeclSequential(const DWARFAbbreviationDeclaration& abbrevDecl)
-{
- // Get the next abbreviation code based on our current array size
- dw_uleb128_t code = m_decls.size()+1;
+dw_uleb128_t DWARFAbbreviationDeclarationSet::AppendAbbrevDeclSequential(
+ const DWARFAbbreviationDeclaration &abbrevDecl) {
+ // Get the next abbreviation code based on our current array size
+ dw_uleb128_t code = m_decls.size() + 1;
- // Push the new declaration on the back
- m_decls.push_back(abbrevDecl);
+ // Push the new declaration on the back
+ m_decls.push_back(abbrevDecl);
- // Update the code for this new declaration
- m_decls.back().SetCode(code);
+ // Update the code for this new declaration
+ m_decls.back().SetCode(code);
- return code; // return the new abbreviation code!
+ return code; // return the new abbreviation code!
}
-
//----------------------------------------------------------------------
// Encode
//
@@ -117,8 +104,9 @@ DWARFAbbreviationDeclarationSet::AppendAbbrevDeclSequential(const DWARFAbbreviat
// into a byte representation as would be found in a ".debug_abbrev"
// debug information section.
//----------------------------------------------------------------------
-//void
-//DWARFAbbreviationDeclarationSet::Encode(BinaryStreamBuf& debug_abbrev_buf) const
+// void
+// DWARFAbbreviationDeclarationSet::Encode(BinaryStreamBuf& debug_abbrev_buf)
+// const
//{
// DWARFAbbreviationDeclarationCollConstIter pos;
// DWARFAbbreviationDeclarationCollConstIter end = m_decls.end();
@@ -127,76 +115,63 @@ DWARFAbbreviationDeclarationSet::AppendAbbrevDeclSequential(const DWARFAbbreviat
// debug_abbrev_buf.Append8(0);
//}
-
//----------------------------------------------------------------------
// DWARFDebugAbbrev constructor
//----------------------------------------------------------------------
-DWARFDebugAbbrev::DWARFDebugAbbrev() :
- m_abbrevCollMap(),
- m_prev_abbr_offset_pos(m_abbrevCollMap.end())
-{
-}
-
+DWARFDebugAbbrev::DWARFDebugAbbrev()
+ : m_abbrevCollMap(), m_prev_abbr_offset_pos(m_abbrevCollMap.end()) {}
//----------------------------------------------------------------------
// DWARFDebugAbbrev::Parse()
//----------------------------------------------------------------------
-void
-DWARFDebugAbbrev::Parse(const DWARFDataExtractor& data)
-{
- lldb::offset_t offset = 0;
+void DWARFDebugAbbrev::Parse(const DWARFDataExtractor &data) {
+ lldb::offset_t offset = 0;
- while (data.ValidOffset(offset))
- {
- uint32_t initial_cu_offset = offset;
- DWARFAbbreviationDeclarationSet abbrevDeclSet;
+ while (data.ValidOffset(offset)) {
+ uint32_t initial_cu_offset = offset;
+ DWARFAbbreviationDeclarationSet abbrevDeclSet;
- if (abbrevDeclSet.Extract(data, &offset))
- m_abbrevCollMap[initial_cu_offset] = abbrevDeclSet;
- else
- break;
- }
- m_prev_abbr_offset_pos = m_abbrevCollMap.end();
+ if (abbrevDeclSet.Extract(data, &offset))
+ m_abbrevCollMap[initial_cu_offset] = abbrevDeclSet;
+ else
+ break;
+ }
+ m_prev_abbr_offset_pos = m_abbrevCollMap.end();
}
//----------------------------------------------------------------------
// DWARFDebugAbbrev::Dump()
//----------------------------------------------------------------------
-void
-DWARFDebugAbbrev::Dump(Stream *s) const
-{
- if (m_abbrevCollMap.empty())
- {
- s->PutCString("< EMPTY >\n");
- return;
- }
-
- DWARFAbbreviationDeclarationCollMapConstIter pos;
- for (pos = m_abbrevCollMap.begin(); pos != m_abbrevCollMap.end(); ++pos)
- {
- s->Printf("Abbrev table for offset: 0x%8.8x\n", pos->first);
- pos->second.Dump(s);
- }
+void DWARFDebugAbbrev::Dump(Stream *s) const {
+ if (m_abbrevCollMap.empty()) {
+ s->PutCString("< EMPTY >\n");
+ return;
+ }
+
+ DWARFAbbreviationDeclarationCollMapConstIter pos;
+ for (pos = m_abbrevCollMap.begin(); pos != m_abbrevCollMap.end(); ++pos) {
+ s->Printf("Abbrev table for offset: 0x%8.8x\n", pos->first);
+ pos->second.Dump(s);
+ }
}
-
//----------------------------------------------------------------------
// DWARFDebugAbbrev::GetAbbreviationDeclarationSet()
//----------------------------------------------------------------------
-const DWARFAbbreviationDeclarationSet*
-DWARFDebugAbbrev::GetAbbreviationDeclarationSet(dw_offset_t cu_abbr_offset) const
-{
- DWARFAbbreviationDeclarationCollMapConstIter end = m_abbrevCollMap.end();
- DWARFAbbreviationDeclarationCollMapConstIter pos;
- if (m_prev_abbr_offset_pos != end && m_prev_abbr_offset_pos->first == cu_abbr_offset)
- return &(m_prev_abbr_offset_pos->second);
- else
- {
- pos = m_abbrevCollMap.find(cu_abbr_offset);
- m_prev_abbr_offset_pos = pos;
- }
-
- if (pos != m_abbrevCollMap.end())
- return &(pos->second);
- return NULL;
+const DWARFAbbreviationDeclarationSet *
+DWARFDebugAbbrev::GetAbbreviationDeclarationSet(
+ dw_offset_t cu_abbr_offset) const {
+ DWARFAbbreviationDeclarationCollMapConstIter end = m_abbrevCollMap.end();
+ DWARFAbbreviationDeclarationCollMapConstIter pos;
+ if (m_prev_abbr_offset_pos != end &&
+ m_prev_abbr_offset_pos->first == cu_abbr_offset)
+ return &(m_prev_abbr_offset_pos->second);
+ else {
+ pos = m_abbrevCollMap.find(cu_abbr_offset);
+ m_prev_abbr_offset_pos = pos;
+ }
+
+ if (pos != m_abbrevCollMap.end())
+ return &(pos->second);
+ return NULL;
}
OpenPOWER on IntegriCloud