This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFA: Use lrealpath instead of gdb_realpath


This patch will have no effect on any system except mingw32; on that system,
it will call GetFullPathName after the patch, since Danny Smith added bits
for that to libiberty last June.

Eli, I understand that you think this is a bad choice.  However, the mingw32
maintainers disagree.  My only motivation here is to get rid of the
duplicated function; I thought I'd done this in the first place, but
obviously I forgot to.  I don't want to leave both copies around, in case
they continue to diverge.

Chris, since mingw32 should be the only affected target, I'll ask you for
approval.  OK?  I verified that there is no change in behavior on
i686-linux.

-- 
Daniel Jacobowitz
CodeSourcery, LLC

2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>

	* defs.h (gdb_realpath): Remove prototype.
	* nto-tdep.c (nto_find_and_open_solib): Use lrealpath.
	* symtab.c (lookup_symtab, lookup_partial_symtab): Likewise.
	* utils.c (xfullpath): Likewise.
	(gdb_realpath): Delete.
	* source.c (openp): Update comment.

Index: defs.h
===================================================================
RCS file: /cvs/src/src/gdb/defs.h,v
retrieving revision 1.186
diff -u -p -r1.186 defs.h
--- defs.h	19 May 2005 17:55:53 -0000	1.186
+++ defs.h	28 May 2005 23:13:39 -0000
@@ -397,7 +397,6 @@ extern int yquery (const char *, ...) AT
 
 extern void init_page_info (void);
 
-extern char *gdb_realpath (const char *);
 extern char *xfullpath (const char *);
 
 extern unsigned long gnu_debuglink_crc32 (unsigned long crc,
Index: nto-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/nto-tdep.c,v
retrieving revision 1.13
diff -u -p -r1.13 nto-tdep.c
--- nto-tdep.c	17 Feb 2005 13:49:55 -0000	1.13
+++ nto-tdep.c	28 May 2005 23:13:39 -0000
@@ -148,7 +148,7 @@ nto_find_and_open_solib (char *solib, un
       if (temp_pathname)
 	{
 	  if (ret >= 0)
-	    *temp_pathname = gdb_realpath (arch_path);
+	    *temp_pathname = lrealpath (arch_path);
 	  else
 	    **temp_pathname = '\0';
 	}
Index: source.c
===================================================================
RCS file: /cvs/src/src/gdb/source.c,v
retrieving revision 1.68
diff -u -p -r1.68 source.c
--- source.c	27 May 2005 04:39:32 -0000	1.68
+++ source.c	28 May 2005 23:13:40 -0000
@@ -756,7 +756,7 @@ done:
   if (filename_opened)
     {
       /* If a file was opened, canonicalize its filename. Use xfullpath
-         rather than gdb_realpath to avoid resolving the basename part
+         rather than lrealpath 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.  */
Index: symtab.c
===================================================================
RCS file: /cvs/src/src/gdb/symtab.c,v
retrieving revision 1.145
diff -u -p -r1.145 symtab.c
--- symtab.c	8 Mar 2005 04:34:44 -0000	1.145
+++ symtab.c	28 May 2005 23:13:40 -0000
@@ -163,7 +163,7 @@ lookup_symtab (const char *name)
     {
       full_path = xfullpath (name);
       make_cleanup (xfree, full_path);
-      real_path = gdb_realpath (name);
+      real_path = lrealpath (name);
       make_cleanup (xfree, real_path);
     }
 
@@ -195,7 +195,7 @@ got_symtab:
         char *fullname = symtab_to_fullname (s);
         if (fullname != NULL)
           {
-            char *rp = gdb_realpath (fullname);
+            char *rp = lrealpath (fullname);
             make_cleanup (xfree, rp);
             if (FILENAME_CMP (real_path, rp) == 0)
               {
@@ -259,7 +259,7 @@ lookup_partial_symtab (const char *name)
     {
       full_path = xfullpath (name);
       make_cleanup (xfree, full_path);
-      real_path = gdb_realpath (name);
+      real_path = lrealpath (name);
       make_cleanup (xfree, real_path);
     }
 
@@ -288,7 +288,7 @@ lookup_partial_symtab (const char *name)
 	psymtab_to_fullname (pst);
         if (pst->fullname != NULL)
           {
-            rp = gdb_realpath (pst->fullname);
+            rp = lrealpath (pst->fullname);
             make_cleanup (xfree, rp);
           }
 	if (rp != NULL && FILENAME_CMP (real_path, rp) == 0)
Index: utils.c
===================================================================
RCS file: /cvs/src/src/gdb/utils.c,v
retrieving revision 1.160
diff -u -p -r1.160 utils.c
--- utils.c	18 Mar 2005 20:46:38 -0000	1.160
+++ utils.c	28 May 2005 23:13:41 -0000
@@ -2920,80 +2920,8 @@ string_to_core_addr (const char *my_stri
   return addr;
 }
 
-char *
-gdb_realpath (const char *filename)
-{
-  /* Method 1: The system has a compile time upper bound on a filename
-     path.  Use that and realpath() to canonicalize the name.  This is
-     the most common case.  Note that, if there isn't a compile time
-     upper bound, you want to avoid realpath() at all costs.  */
-#if defined(HAVE_REALPATH)
-  {
-# if defined (PATH_MAX)
-    char buf[PATH_MAX];
-#  define USE_REALPATH
-# elif defined (MAXPATHLEN)
-    char buf[MAXPATHLEN];
-#  define USE_REALPATH
-# endif
-# if defined (USE_REALPATH)
-    const char *rp = realpath (filename, buf);
-    if (rp == NULL)
-      rp = filename;
-    return xstrdup (rp);
-# endif
-  }
-#endif /* HAVE_REALPATH */
-
-  /* Method 2: The host system (i.e., GNU) has the function
-     canonicalize_file_name() which malloc's a chunk of memory and
-     returns that, use that.  */
-#if defined(HAVE_CANONICALIZE_FILE_NAME)
-  {
-    char *rp = canonicalize_file_name (filename);
-    if (rp == NULL)
-      return xstrdup (filename);
-    else
-      return rp;
-  }
-#endif
-
-  /* FIXME: cagney/2002-11-13:
-
-     Method 2a: Use realpath() with a NULL buffer.  Some systems, due
-     to the problems described in in method 3, have modified their
-     realpath() implementation so that it will allocate a buffer when
-     NULL is passed in.  Before this can be used, though, some sort of
-     configure time test would need to be added.  Otherwize the code
-     will likely core dump.  */
-
-  /* Method 3: Now we're getting desperate!  The system doesn't have a
-     compile time buffer size and no alternative function.  Query the
-     OS, using pathconf(), for the buffer limit.  Care is needed
-     though, some systems do not limit PATH_MAX (return -1 for
-     pathconf()) making it impossible to pass a correctly sized buffer
-     to realpath() (it could always overflow).  On those systems, we
-     skip this.  */
-#if defined (HAVE_REALPATH) && defined (HAVE_UNISTD_H) && defined(HAVE_ALLOCA)
-  {
-    /* Find out the max path size.  */
-    long path_max = pathconf ("/", _PC_PATH_MAX);
-    if (path_max > 0)
-      {
-	/* PATH_MAX is bounded.  */
-	char *buf = alloca (path_max);
-	char *rp = realpath (filename, buf);
-	return xstrdup (rp ? rp : filename);
-      }
-  }
-#endif
-
-  /* This system is a lost cause, just dup the buffer.  */
-  return xstrdup (filename);
-}
-
 /* Return a copy of FILENAME, with its directory prefix canonicalized
-   by gdb_realpath.  */
+   by lrealpath.  */
 
 char *
 xfullpath (const char *filename)
@@ -3028,7 +2956,7 @@ xfullpath (const char *filename)
   /* 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);
+  real_path = lrealpath (dir_name);
   if (IS_DIR_SEPARATOR (real_path[strlen (real_path) - 1]))
     result = concat (real_path, base_name, NULL);
   else


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]