sbpf-coverage 0.1.4

A tool for computing test coverage of Solana programs, maintained by LimeChain
Documentation
diff --git a/src/bin/solana-coverage.rs b/src/bin/solana-coverage.rs
index d8f7011..7b80d98 100644
--- a/src/bin/solana-coverage.rs
+++ b/src/bin/solana-coverage.rs
@@ -38,7 +38,7 @@ SBF_PATHS=$PWD/target/deploy[;$PWD/fixtures;...] SBF_TRACE_DIR=sbf_trace_dir {0}
         current_dir.join("sbf_trace_dir")
     };
 
-    let regs_paths = find_files_with_extension(std::slice::from_ref(&sbf_trace_dir), "regs");
+    let regs_paths = find_files_with_extension(std::slice::from_ref(&sbf_trace_dir), &["regs"]);
 
     if regs_paths.is_empty() {
         bail!(
diff --git a/src/lib.rs b/src/lib.rs
index ce14861..b0fd93b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -73,7 +73,7 @@ pub fn run(sbf_trace_dir: PathBuf, debug: bool) -> Result<()> {
         return Ok(());
     }
 
-    let regs_paths = find_files_with_extension(std::slice::from_ref(&sbf_trace_dir), "regs");
+    let regs_paths = find_files_with_extension(std::slice::from_ref(&sbf_trace_dir), &["regs"]);
 
     for regs_path in &regs_paths {
         match process_regs_path(&dwarfs, regs_path, &src_paths) {
@@ -117,7 +117,7 @@ fn debug_paths() -> Result<Vec<PathBuf>> {
         .split(',')
         .map(PathBuf::from)
         .collect::<Vec<_>>();
-    let debug_files = find_files_with_extension(&sbf_paths, "debug");
+    let debug_files = find_files_with_extension(&sbf_paths, &["debug", "debug.so"]);
     Ok(debug_files)
 }
 
diff --git a/src/util.rs b/src/util.rs
index abc48fd..ead3fed 100644
--- a/src/util.rs
+++ b/src/util.rs
@@ -18,7 +18,7 @@ impl StripCurrentDir for Path {
     }
 }
 
-pub fn find_files_with_extension(dirs: &[PathBuf], extension: &str) -> Vec<PathBuf> {
+pub fn find_files_with_extension<'a>(dirs: &[PathBuf], extensions: &[&'a str]) -> Vec<PathBuf> {
     let mut so_files = Vec::new();
 
     for dir in dirs {
@@ -27,7 +27,14 @@ pub fn find_files_with_extension(dirs: &[PathBuf], extension: &str) -> Vec<PathB
         {
             for entry in entries.flatten() {
                 let path = entry.path();
-                if path.is_file() && path.extension().is_some_and(|ext| ext == extension) {
+                if path.is_file()
+                    && path
+                        .extension()
+                        .is_some_and(|ext| {
+                            eprintln!("file: {} ext: {}", path.to_string_lossy().to_string(), ext.to_string_lossy().to_string());
+                            extensions.iter().find(|e| ext == **e).is_some()
+            })
+                {
                     so_files.push(path);
                 }
             }