diff --git a/src/bin/solana-coverage.rs b/src/bin/solana-coverage.rs
index d8f7011..7b80d98 100644
@@ -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
@@ -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 ®s_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
@@ -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);
}
}