Warn when we can't read compressed debug info.
diff --git a/src/bloaty.h b/src/bloaty.h
index 7f6be89..7d55bca 100644
--- a/src/bloaty.h
+++ b/src/bloaty.h
@@ -174,6 +174,12 @@
StringPiece debug_abbrev;
StringPiece debug_aranges;
StringPiece debug_line;
+ StringPiece zdebug_info;
+ StringPiece zdebug_types;
+ StringPiece zdebug_str;
+ StringPiece zdebug_abbrev;
+ StringPiece zdebug_aranges;
+ StringPiece zdebug_line;
};
} // namespace dwarf
diff --git a/src/dwarf.cc b/src/dwarf.cc
index d1ebd7f..1d5d164 100644
--- a/src/dwarf.cc
+++ b/src/dwarf.cc
@@ -1780,7 +1780,11 @@
bool ReadDWARFCompileUnits(const dwarf::File& file, const SymbolTable& symtab,
RangeSink* sink) {
if (!file.debug_info.size()) {
- fprintf(stderr, "bloaty: missing debug info\n");
+ if (file.zdebug_info.size()) {
+ fprintf(stderr, "bloaty: can't read compressed debug info: \n");
+ } else {
+ fprintf(stderr, "bloaty: missing debug info\n");
+ }
return false;
}
@@ -1805,7 +1809,11 @@
bool ReadDWARFInlines(const dwarf::File& file, RangeSink* sink,
bool include_line) {
if (!file.debug_info.size() || !file.debug_line.size()) {
- fprintf(stderr, "bloaty: missing debug info\n");
+ if (file.zdebug_info.size() && file.zdebug_line.size()) {
+ fprintf(stderr, "bloaty: can't read compressed debug info: \n");
+ } else {
+ fprintf(stderr, "bloaty: missing debug info\n");
+ }
return false;
}
diff --git a/src/elf.cc b/src/elf.cc
index b8fcb3f..3a50dc4 100644
--- a/src/elf.cc
+++ b/src/elf.cc
@@ -829,6 +829,16 @@
dwarf->debug_abbrev = section.contents();
} else if (name == ".debug_line") {
dwarf->debug_line = section.contents();
+ } else if (name == ".zdebug_aranges") {
+ dwarf->zdebug_aranges = section.contents();
+ } else if (name == ".zdebug_str") {
+ dwarf->zdebug_str = section.contents();
+ } else if (name == ".zdebug_info") {
+ dwarf->zdebug_info = section.contents();
+ } else if (name == ".zdebug_abbrev") {
+ dwarf->zdebug_abbrev = section.contents();
+ } else if (name == ".zdebug_line") {
+ dwarf->zdebug_line = section.contents();
}
}