Some systems apparently don't provide canonicalize_file_name. Since
canonicalize_file_name (path) is defined as realpath(path, NULL) just
use realpath everywhere.

https://sourceware.org/bugzilla/show_bug.cgi?id=21009

Signed-off-by: Mark Wielaard <m...@klomp.org>
---
 libdwfl/ChangeLog                | 6 ++++++
 libdwfl/dwfl_build_id_find_elf.c | 2 +-
 libdwfl/find-debuginfo.c         | 2 +-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index b2a7497..1515c41 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,9 @@
+2018-03-05  Mark Wielaard  <m...@klomp.org>
+
+       * dwfl_build_id_find_elf.c (__libdwfl_open_by_build_id): Use
+       realpath (name, NULL) instead of canonicalize_file_name (name).
+       * find-debuginfo.c (dwfl_standard_find_debuginfo): Likewise.
+
 2018-01-29  Mark Wielaard  <m...@klomp.org>
 
        * cu.c (cudie_offset): Use __libdw_first_die_off_from_cu instead of
diff --git a/libdwfl/dwfl_build_id_find_elf.c b/libdwfl/dwfl_build_id_find_elf.c
index ee0c164..cc6c3f6 100644
--- a/libdwfl/dwfl_build_id_find_elf.c
+++ b/libdwfl/dwfl_build_id_find_elf.c
@@ -99,7 +99,7 @@ __libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug, 
char **file_name,
        {
          if (*file_name != NULL)
            free (*file_name);
-         *file_name = canonicalize_file_name (name);
+         *file_name = realpath (name, NULL);
          if (*file_name == NULL)
            {
              *file_name = name;
diff --git a/libdwfl/find-debuginfo.c b/libdwfl/find-debuginfo.c
index 6d5a42a..9267788 100644
--- a/libdwfl/find-debuginfo.c
+++ b/libdwfl/find-debuginfo.c
@@ -389,7 +389,7 @@ dwfl_standard_find_debuginfo (Dwfl_Module *mod,
       /* If FILE_NAME is a symlink, the debug file might be associated
         with the symlink target name instead.  */
 
-      char *canon = canonicalize_file_name (file_name);
+      char *canon = realpath (file_name, NULL);
       if (canon != NULL && strcmp (file_name, canon))
        fd = find_debuginfo_in_path (mod, canon,
                                     debuglink_file, debuglink_crc,
-- 
1.8.3.1

Reply via email to