gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 3 Feb 2013 15:54:18 +0000 (15:54 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 3 Feb 2013 15:54:18 +0000 (15:54 +0000)
Replace xfullpath calls by gdb_realpath calls.
* cli/cli-cmds.c (find_and_open_script): Remove xfullpath from the
function comment.
* dwarf2read.c (dw2_map_expand_apply): Remove parameter full_path.
Remove it from the iterate_over_some_symtabs call.
(dw2_map_symtabs_matching_filename): Remove parameter full_path.
Remove it from the dw2_map_expand_apply calls, remove a block handling
it.
* psymtab.c (partial_map_expand_apply): Remove parameter full_path.
Remove it from the iterate_over_some_symtabs call.
(partial_map_symtabs_matching_filename): Remove parameter full_path.
Remove it from the partial_map_expand_apply calls, remove a block
handling it.  Drop gdb_realpath call and cleanups from the real_path
handling.
* source.c (openp): Drop the comment part about xfullpath.  Replace
xfullpath calls by gdb_realpath calls.
(find_and_open_source): Replace xfullpath call by gdb_realpath call.
* symfile.h (struct quick_symbol_functions): Remove parameter full_path
from method map_symtabs_matching_filename and its comment.
* symmisc.c (maintenance_print_msymbols): Replace xfullpath call by
gdb_realpath call.
* symtab.c (iterate_over_some_symtabs): Remove parameter full_path,
remove it also from the function comment, remove a block handling it.
Drop gdb_realpath call and cleanups from the real_path handling.
(iterate_over_symtabs): Drop variable full_path and its use.
* symtab.h (iterate_over_some_symtabs): Remove parameter full_path.
* utils.c (xfullpath): Remove.
* utils.h (xfullpath): Remove.

gdb/testsuite/
* gdb.gdb/xfullpath.exp: Replace xfullpath calls by gdb_realpath calls.

13 files changed:
gdb/ChangeLog
gdb/cli/cli-cmds.c
gdb/dwarf2read.c
gdb/psymtab.c
gdb/source.c
gdb/symfile.h
gdb/symmisc.c
gdb/symtab.c
gdb/symtab.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.gdb/xfullpath.exp
gdb/utils.c
gdb/utils.h

index baa3ea3..6c7a153 100644 (file)
@@ -1,3 +1,34 @@
+2013-02-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Replace xfullpath calls by gdb_realpath calls.
+       * cli/cli-cmds.c (find_and_open_script): Remove xfullpath from the
+       function comment.
+       * dwarf2read.c (dw2_map_expand_apply): Remove parameter full_path.
+       Remove it from the iterate_over_some_symtabs call.
+       (dw2_map_symtabs_matching_filename): Remove parameter full_path.
+       Remove it from the dw2_map_expand_apply calls, remove a block handling
+       it.
+       * psymtab.c (partial_map_expand_apply): Remove parameter full_path.
+       Remove it from the iterate_over_some_symtabs call.
+       (partial_map_symtabs_matching_filename): Remove parameter full_path.
+       Remove it from the partial_map_expand_apply calls, remove a block
+       handling it.  Drop gdb_realpath call and cleanups from the real_path
+       handling.
+       * source.c (openp): Drop the comment part about xfullpath.  Replace
+       xfullpath calls by gdb_realpath calls.
+       (find_and_open_source): Replace xfullpath call by gdb_realpath call.
+       * symfile.h (struct quick_symbol_functions): Remove parameter full_path
+       from method map_symtabs_matching_filename and its comment.
+       * symmisc.c (maintenance_print_msymbols): Replace xfullpath call by
+       gdb_realpath call.
+       * symtab.c (iterate_over_some_symtabs): Remove parameter full_path,
+       remove it also from the function comment, remove a block handling it.
+       Drop gdb_realpath call and cleanups from the real_path handling.
+       (iterate_over_symtabs): Drop variable full_path and its use.
+       * symtab.h (iterate_over_some_symtabs): Remove parameter full_path.
+       * utils.c (xfullpath): Remove.
+       * utils.h (xfullpath): Remove.
+
 2013-02-01  Andreas Tobler  <andreast@fgznet.ch>
 
        * Makefile.in (ALL_TARGET_OBS): Add ppc64-tdep.o.
index 50d9de7..8f78641 100644 (file)
@@ -463,10 +463,7 @@ show_script_ext_mode (struct ui_file *file, int from_tty,
    we tried to open.
 
    If SEARCH_PATH is non-zero, and the file isn't found in cwd,
-   search for it in the source search path.
-
-   NOTE: This calls openp which uses xfullpath to compute the full path
-   instead of gdb_realpath.  Symbolic links are not resolved.  */
+   search for it in the source search path.  */
 
 int
 find_and_open_script (const char *script_file, int search_path,
index cef20e2..5f958a9 100644 (file)
@@ -3020,8 +3020,7 @@ dw2_forget_cached_source_info (struct objfile *objfile)
 static int
 dw2_map_expand_apply (struct objfile *objfile,
                      struct dwarf2_per_cu_data *per_cu,
-                     const char *name,
-                     const char *full_path, const char *real_path,
+                     const char *name, const char *real_path,
                      int (*callback) (struct symtab *, void *),
                      void *data)
 {
@@ -3035,7 +3034,7 @@ dw2_map_expand_apply (struct objfile *objfile,
      all of them.  */
   dw2_instantiate_symtab (per_cu);
 
-  return iterate_over_some_symtabs (name, full_path, real_path, callback, data,
+  return iterate_over_some_symtabs (name, real_path, callback, data,
                                    objfile->symtabs, last_made);
 }
 
@@ -3043,7 +3042,7 @@ dw2_map_expand_apply (struct objfile *objfile,
 
 static int
 dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
-                                  const char *full_path, const char *real_path,
+                                  const char *real_path,
                                   int (*callback) (struct symtab *, void *),
                                   void *data)
 {
@@ -3077,8 +3076,7 @@ dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
          if (FILENAME_CMP (name, this_name) == 0
              || (!is_abs && compare_filenames_for_search (this_name, name)))
            {
-             if (dw2_map_expand_apply (objfile, per_cu,
-                                       name, full_path, real_path,
+             if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
                                        callback, data))
                return 1;
            }
@@ -3089,24 +3087,6 @@ dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
              && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
            continue;
 
-         if (full_path != NULL)
-           {
-             const char *this_real_name = dw2_get_real_path (objfile,
-                                                             file_data, j);
-
-             if (this_real_name != NULL
-                 && (FILENAME_CMP (full_path, this_real_name) == 0
-                     || (!is_abs
-                         && compare_filenames_for_search (this_real_name,
-                                                          name))))
-               {
-                 if (dw2_map_expand_apply (objfile, per_cu,
-                                           name, full_path, real_path,
-                                           callback, data))
-                   return 1;
-               }
-           }
-
          if (real_path != NULL)
            {
              const char *this_real_name = dw2_get_real_path (objfile,
@@ -3118,8 +3098,7 @@ dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
                          && compare_filenames_for_search (this_real_name,
                                                           name))))
                {
-                 if (dw2_map_expand_apply (objfile, per_cu,
-                                           name, full_path, real_path,
+                 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
                                            callback, data))
                    return 1;
                }
index 861512e..efe8b13 100644 (file)
@@ -131,7 +131,6 @@ require_partial_symbols (struct objfile *objfile, int verbose)
 static int
 partial_map_expand_apply (struct objfile *objfile,
                          const char *name,
-                         const char *full_path,
                          const char *real_path,
                          struct partial_symtab *pst,
                          int (*callback) (struct symtab *, void *),
@@ -151,7 +150,7 @@ partial_map_expand_apply (struct objfile *objfile,
      all of them.  */
   psymtab_to_symtab (objfile, pst);
 
-  return iterate_over_some_symtabs (name, full_path, real_path, callback, data,
+  return iterate_over_some_symtabs (name, real_path, callback, data,
                                    objfile->symtabs, last_made);
 }
 
@@ -160,7 +159,6 @@ partial_map_expand_apply (struct objfile *objfile,
 static int
 partial_map_symtabs_matching_filename (struct objfile *objfile,
                                       const char *name,
-                                      const char *full_path,
                                       const char *real_path,
                                       int (*callback) (struct symtab *,
                                                        void *),
@@ -184,7 +182,7 @@ partial_map_symtabs_matching_filename (struct objfile *objfile,
     if (FILENAME_CMP (name, pst->filename) == 0
        || (!is_abs && compare_filenames_for_search (pst->filename, name)))
       {
-       if (partial_map_expand_apply (objfile, name, full_path, real_path,
+       if (partial_map_expand_apply (objfile, name, real_path,
                                      pst, callback, data))
          return 1;
       }
@@ -197,34 +195,14 @@ partial_map_symtabs_matching_filename (struct objfile *objfile,
 
     /* If the user gave us an absolute path, try to find the file in
        this symtab and use its absolute path.  */
-    if (full_path != NULL)
-      {
-       psymtab_to_fullname (pst);
-       if (pst->fullname != NULL
-           && (FILENAME_CMP (full_path, pst->fullname) == 0
-               || (!is_abs && compare_filenames_for_search (pst->fullname,
-                                                            name))))
-         {
-           if (partial_map_expand_apply (objfile, name, full_path, real_path,
-                                         pst, callback, data))
-             return 1;
-         }
-      }
-
     if (real_path != NULL)
       {
-        char *rp = NULL;
        psymtab_to_fullname (pst);
-        if (pst->fullname != NULL)
-          {
-            rp = gdb_realpath (pst->fullname);
-            make_cleanup (xfree, rp);
-          }
-       if (rp != NULL
-           && (FILENAME_CMP (real_path, rp) == 0
+       if (pst->fullname != NULL
+           && (FILENAME_CMP (real_path, pst->fullname) == 0
                || (!is_abs && compare_filenames_for_search (real_path, name))))
          {
-           if (partial_map_expand_apply (objfile, name, full_path, real_path,
+           if (partial_map_expand_apply (objfile, name, real_path,
                                          pst, callback, data))
              return 1;
          }
index 54d5693..13cc7c8 100644 (file)
@@ -825,15 +825,11 @@ openp (const char *path, int opts, const char *string,
 done:
   if (filename_opened)
     {
-      /* If a file was opened, canonicalize its filename.  Use xfullpath
-         rather than gdb_realpath to avoid resolving the basename part
-         of filenames when the associated file is a symbolic link.  This
-         fixes a potential inconsistency between the filenames known to
-         GDB and the filenames it prints in the annotations.  */
+      /* If a file was opened, canonicalize its filename.  */
       if (fd < 0)
        *filename_opened = NULL;
       else if (IS_ABSOLUTE_PATH (filename))
-       *filename_opened = xfullpath (filename);
+       *filename_opened = gdb_realpath (filename);
       else
        {
          /* Beware the // my son, the Emacs barfs, the botch that catch...  */
@@ -843,7 +839,7 @@ done:
                            ? "" : SLASH_STRING,
                            filename, (char *)NULL);
 
-         *filename_opened = xfullpath (f);
+         *filename_opened = gdb_realpath (f);
          xfree (f);
        }
     }
@@ -986,9 +982,7 @@ find_and_open_source (const char *filename,
       result = open (*fullname, OPEN_MODE);
       if (result >= 0)
        {
-         /* Call xfullpath here to be consistent with openp
-            which we use below.  */
-         char *lpath = xfullpath (*fullname);
+         char *lpath = gdb_realpath (*fullname);
 
          xfree (*fullname);
          *fullname = lpath;
index 8caec8e..b70438e 100644 (file)
@@ -160,8 +160,8 @@ struct quick_symbol_functions
      where the source file is named NAME.
 
      If NAME is not absolute, a match after a '/' in the symbol
-     table's file name will also work.  FULL_PATH is the absolute file
-     name, and REAL_PATH is the same, run through gdb_realpath.
+     table's file name will also work.  REAL_PATH is the absolute file
+     name run through gdb_realpath.
 
      If a match is found, the "partial" symbol table is expanded.
      Then, this calls iterate_over_some_symtabs (or equivalent) over
@@ -169,7 +169,6 @@ struct quick_symbol_functions
      The result of this call is returned.  */
   int (*map_symtabs_matching_filename) (struct objfile *objfile,
                                        const char *name,
-                                       const char *full_path,
                                        const char *real_path,
                                        int (*callback) (struct symtab *,
                                                         void *),
index df77e79..2abaa5d 100644 (file)
@@ -655,7 +655,7 @@ maintenance_print_msymbols (char *args, int from_tty)
       /* If a second arg is supplied, it is a source file name to match on.  */
       if (argv[1] != NULL)
        {
-         symname = xfullpath (argv[1]);
+         symname = gdb_realpath (argv[1]);
          make_cleanup (xfree, symname);
          if (symname && stat (symname, &sym_st))
            perror_with_name (symname);
index a471fc3..3615cbf 100644 (file)
@@ -179,7 +179,7 @@ compare_filenames_for_search (const char *filename, const char *search_name)
 /* Check for a symtab of a specific name by searching some symtabs.
    This is a helper function for callbacks of iterate_over_symtabs.
 
-   The return value, NAME, FULL_PATH, REAL_PATH, CALLBACK, and DATA
+   The return value, NAME, REAL_PATH, CALLBACK, and DATA
    are identical to the `map_symtabs_matching_filename' method of
    quick_symbol_functions.
 
@@ -189,7 +189,6 @@ compare_filenames_for_search (const char *filename, const char *search_name)
 
 int
 iterate_over_some_symtabs (const char *name,
-                          const char *full_path,
                           const char *real_path,
                           int (*callback) (struct symtab *symtab,
                                            void *data),
@@ -225,47 +224,21 @@ iterate_over_some_symtabs (const char *name,
     /* If the user gave us an absolute path, try to find the file in
        this symtab and use its absolute path.  */
 
-    if (full_path != NULL)
-      {
-        const char *fp = symtab_to_fullname (s);
-
-        if (FILENAME_CMP (full_path, fp) == 0)
-          {
-           if (callback (s, data))
-             return 1;
-          }
-
-       if (!is_abs && compare_filenames_for_search (fp, name))
-         {
-           if (callback (s, data))
-             return 1;
-         }
-      }
-
     if (real_path != NULL)
       {
         const char *fullname = symtab_to_fullname (s);
-       char *rp = gdb_realpath (fullname);
-       struct cleanup *cleanups = make_cleanup (xfree, rp);
 
-       if (FILENAME_CMP (real_path, rp) == 0)
+       if (FILENAME_CMP (real_path, fullname) == 0)
          {
            if (callback (s, data))
-             {
-               do_cleanups (cleanups);
-               return 1;
-             }
+             return 1;
          }
 
-       if (!is_abs && compare_filenames_for_search (rp, name))
+       if (!is_abs && compare_filenames_for_search (fullname, name))
          {
            if (callback (s, data))
-             {
-               do_cleanups (cleanups);
-               return 1;
-             }
+             return 1;
          }
-       do_cleanups (cleanups);
       }
     }
 
@@ -287,22 +260,19 @@ iterate_over_symtabs (const char *name,
 {
   struct objfile *objfile;
   char *real_path = NULL;
-  char *full_path = NULL;
   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
 
   /* Here we are interested in canonicalizing an absolute path, not
      absolutizing a relative path.  */
   if (IS_ABSOLUTE_PATH (name))
     {
-      full_path = xfullpath (name);
-      make_cleanup (xfree, full_path);
       real_path = gdb_realpath (name);
       make_cleanup (xfree, real_path);
     }
 
   ALL_OBJFILES (objfile)
   {
-    if (iterate_over_some_symtabs (name, full_path, real_path, callback, data,
+    if (iterate_over_some_symtabs (name, real_path, callback, data,
                                   objfile->symtabs, NULL))
       {
        do_cleanups (cleanups);
@@ -318,7 +288,6 @@ iterate_over_symtabs (const char *name,
     if (objfile->sf
        && objfile->sf->qf->map_symtabs_matching_filename (objfile,
                                                           name,
-                                                          full_path,
                                                           real_path,
                                                           callback,
                                                           data))
index 3861051..378e933 100644 (file)
@@ -1284,7 +1284,6 @@ int compare_filenames_for_search (const char *filename,
                                  const char *search_name);
 
 int iterate_over_some_symtabs (const char *name,
-                              const char *full_path,
                               const char *real_path,
                               int (*callback) (struct symtab *symtab,
                                                void *data),
index 176ac03..165dd53 100644 (file)
@@ -1,3 +1,7 @@
+2013-02-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * gdb.gdb/xfullpath.exp: Replace xfullpath calls by gdb_realpath calls.
+
 2013-02-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * lib/java.exp (compile_java_from_source): Initialize ARGS as a list.
index 9c39a71..9516a4f 100644 (file)
@@ -103,37 +103,37 @@ proc test_with_self { executable } {
     }
 
     # A file which contains a directory prefix
-    gdb_test "print xfullpath (\"./xfullpath.exp\")" \
+    gdb_test "print gdb_realpath (\"./xfullpath.exp\")" \
              ".\[0-9\]+ =.*\".*/xfullpath.exp\"" \
              "A filename with ./ as the directory prefix"
 
     # A file which contains a directory prefix
-    gdb_test "print xfullpath (\"../../defs.h\")" \
+    gdb_test "print gdb_realpath (\"../../defs.h\")" \
              ".\[0-9\]+ =.*\".*/defs.h\"" \
              "A filename with ../ in the directory prefix"
 
     # A one-character filename
-    gdb_test "print xfullpath (\"./a\")" \
+    gdb_test "print gdb_realpath (\"./a\")" \
              ".\[0-9\]+ =.*\".*/a\"" \
              "A one-char filename in the current directory"
           
     # A file in the root directory
-    gdb_test "print xfullpath (\"/root_file_which_should_exist\")" \
+    gdb_test "print gdb_realpath (\"/root_file_which_should_exist\")" \
              ".\[0-9\]+ =.*\"/root_file_which_should_exist\"" \
              "A filename in the root directory"
           
     # A file which does not have a directory prefix
-    gdb_test "print xfullpath (\"xfullpath.exp\")" \
+    gdb_test "print gdb_realpath (\"xfullpath.exp\")" \
              ".\[0-9\]+ =.*\"xfullpath.exp\"" \
              "A filename without any directory prefix"
 
     # A one-char filename without any directory prefix
-    gdb_test "print xfullpath (\"a\")" \
+    gdb_test "print gdb_realpath (\"a\")" \
              ".\[0-9\]+ =.*\"a\"" \
              "A one-char filename without any directory prefix"
 
     # An empty filename
-    gdb_test "print xfullpath (\"\")" \
+    gdb_test "print gdb_realpath (\"\")" \
              ".\[0-9\]+ =.*\"\"" \
              "An empty filename"
 
index 0efa15f..282ab8b 100644 (file)
@@ -3286,52 +3286,6 @@ gdb_realpath (const char *filename)
   return xstrdup (filename);
 }
 
-/* Return a copy of FILENAME, with its directory prefix canonicalized
-   by gdb_realpath.  */
-
-char *
-xfullpath (const char *filename)
-{
-  const char *base_name = lbasename (filename);
-  char *dir_name;
-  char *real_path;
-  char *result;
-
-  /* Extract the basename of filename, and return immediately 
-     a copy of filename if it does not contain any directory prefix.  */
-  if (base_name == filename)
-    return xstrdup (filename);
-
-  dir_name = alloca ((size_t) (base_name - filename + 2));
-  /* Allocate enough space to store the dir_name + plus one extra
-     character sometimes needed under Windows (see below), and
-     then the closing \000 character.  */
-  strncpy (dir_name, filename, base_name - filename);
-  dir_name[base_name - filename] = '\000';
-
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
-  /* We need to be careful when filename is of the form 'd:foo', which
-     is equivalent of d:./foo, which is totally different from d:/foo.  */
-  if (strlen (dir_name) == 2 && isalpha (dir_name[0]) && dir_name[1] == ':')
-    {
-      dir_name[2] = '.';
-      dir_name[3] = '\000';
-    }
-#endif
-
-  /* Canonicalize the directory prefix, and build the resulting
-     filename.  If the dirname realpath already contains an ending
-     directory separator, avoid doubling it.  */
-  real_path = gdb_realpath (dir_name);
-  if (IS_DIR_SEPARATOR (real_path[strlen (real_path) - 1]))
-    result = concat (real_path, base_name, (char *) NULL);
-  else
-    result = concat (real_path, SLASH_STRING, base_name, (char *) NULL);
-
-  xfree (real_path);
-  return result;
-}
-
 ULONGEST
 align_up (ULONGEST v, int n)
 {
index 3ae4efd..52bcaff 100644 (file)
@@ -124,8 +124,6 @@ extern struct cleanup *make_bpstat_clear_actions_cleanup (void);
 
 extern char *gdb_realpath (const char *);
 
-extern char *xfullpath (const char *);
-
 extern int gdb_filename_fnmatch (const char *pattern, const char *string,
                                 int flags);