diff options
Diffstat (limited to 'libdwfl/find-debuginfo.c')
-rw-r--r-- | libdwfl/find-debuginfo.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/libdwfl/find-debuginfo.c b/libdwfl/find-debuginfo.c index 1faa494d..6b8d1ac4 100644 --- a/libdwfl/find-debuginfo.c +++ b/libdwfl/find-debuginfo.c @@ -252,7 +252,15 @@ find_debuginfo_in_path (Dwfl_Module *mod, const char *file_name, dir = p; if (mod->dw == NULL) { - subdir = file_dirname + 1; + subdir = file_dirname; + /* We want to explore all sub-subdirs. Chop off one slash + at a time. */ + explore_dir: + subdir = strchr (subdir, '/'); + if (subdir != NULL) + subdir = subdir + 1; + if (subdir && *subdir == 0) + continue; file = debuglink_file; } else @@ -292,6 +300,9 @@ find_debuginfo_in_path (Dwfl_Module *mod, const char *file_name, } break; } + /* If possible try again with a sub-subdir. */ + if (mod->dw == NULL && subdir) + goto explore_dir; continue; default: goto fail_free; |