summaryrefslogtreecommitdiff
path: root/rust/examples/dwarf/shared/src
diff options
context:
space:
mode:
authorKyleMiles <krm504@nyu.edu>2023-07-31 23:08:38 -0400
committerKyleMiles <krm504@nyu.edu>2023-07-31 23:08:38 -0400
commit23f099266fc5b804675d7c9f66a71d2b7d1b662f (patch)
tree78aea5c41c47a864c631581ec6ab1945917971f5 /rust/examples/dwarf/shared/src
parent877436a87570d49bd4c694f2a8b45d9a1f9be989 (diff)
Add dSYM support
Diffstat (limited to 'rust/examples/dwarf/shared/src')
-rw-r--r--rust/examples/dwarf/shared/src/lib.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/rust/examples/dwarf/shared/src/lib.rs b/rust/examples/dwarf/shared/src/lib.rs
index cb3e9dde..6e667dfc 100644
--- a/rust/examples/dwarf/shared/src/lib.rs
+++ b/rust/examples/dwarf/shared/src/lib.rs
@@ -31,7 +31,7 @@ use std::{fmt, str};
// Dwarf Validation
pub fn is_non_dwo_dwarf(view: &BinaryView) -> bool {
- view.section_by_name(".debug_info").is_ok()
+ view.section_by_name(".debug_info").is_ok() || view.section_by_name("__debug_info").is_ok()
}
pub fn is_dwo_dwarf(view: &BinaryView) -> bool {
@@ -41,6 +41,7 @@ pub fn is_dwo_dwarf(view: &BinaryView) -> bool {
pub fn is_raw_non_dwo_dwarf(view: &BinaryView) -> bool {
if let Ok(raw_view) = view.raw_view() {
raw_view.section_by_name(".debug_info").is_ok()
+ || view.section_by_name("__debug_info").is_ok()
} else {
false
}
@@ -293,6 +294,11 @@ pub fn create_section_reader<'a, Endian: 'a + Endianity>(
} else {
Ok(DWARFReader::new(view.read_vec(offset, len), endian))
}
+ } else if let Ok(section) = view.section_by_name("__".to_string() + &section_name[1..]) {
+ Ok(DWARFReader::new(
+ view.read_vec(section.start(), section.len()),
+ endian,
+ ))
} else {
Ok(DWARFReader::new(vec![], endian))
}