2003-06-19 Kris Warkentin <kewarken@qnx.com>
authorKris Warkentin <kewarken@qnx.com>
Fri, 20 Jun 2003 12:23:18 +0000 (12:23 +0000)
committerKris Warkentin <kewarken@qnx.com>
Fri, 20 Jun 2003 12:23:18 +0000 (12:23 +0000)
* solib.c (solib_open): Change tests for whether to search
LD_LIBRARY_PATH and PATH to better deal with remotes.  Update
comments.

gdb/ChangeLog
gdb/solib.c

index db61705..cd076e8 100644 (file)
@@ -1,3 +1,9 @@
+2003-06-19  Kris Warkentin  <kewarken@qnx.com>
+
+       * solib.c (solib_open): Change tests for whether to search
+       LD_LIBRARY_PATH and PATH to better deal with remotes.  Update
+       comments.
+
 2003-06-19  Theodore A. Roth  <troth@openavr.org>
 
        * avr-tdep.c (avr_frame_address): Delete function.
index 6428a7c..82df65a 100644 (file)
@@ -87,13 +87,19 @@ static char *solib_search_path = NULL;
    (or set of directories, as in LD_LIBRARY_PATH) to search for all
    shared libraries if not found in SOLIB_ABSOLUTE_PREFIX.
 
-   Search order:
-   * If path is absolute, look in SOLIB_ABSOLUTE_PREFIX.
-   * If path is absolute or relative, look for it literally (unmodified).
+   Search algorithm:
+   * If there is a solib_absolute_prefix and path is absolute:
+   *   Search for solib_absolute_prefix/path.
+   * else
+   *   Look for it literally (unmodified).
    * Look in SOLIB_SEARCH_PATH.
    * If available, use target defined search function.
-   * Look in inferior's $PATH.
-   * Look in inferior's $LD_LIBRARY_PATH.
+   * If solib_absolute_prefix is NOT set, perform the following two searches:
+   *   Look in inferior's $PATH.
+   *   Look in inferior's $LD_LIBRARY_PATH.
+   *   
+   * The last check avoids doing this search when targetting remote
+   * machines since solib_absolute_prefix will almost always be set.
 
    RETURNS
 
@@ -148,7 +154,7 @@ solib_open (char *in_pathname, char **found_pathname)
         in_pathname++;
     }
   
-  /* If not found, next search the solib_search_path (if any).  */
+  /* If not found, search the solib_search_path (if any).  */
   if (found_file < 0 && solib_search_path != NULL)
     found_file = openp (solib_search_path,
                        1, in_pathname, O_RDONLY, 0, &temp_pathname);
@@ -167,13 +173,13 @@ solib_open (char *in_pathname, char **found_pathname)
                  (in_pathname, O_RDONLY, &temp_pathname);
 
   /* If not found, next search the inferior's $PATH environment variable. */
-  if (found_file < 0 && solib_search_path != NULL)
+  if (found_file < 0 && solib_absolute_prefix == NULL)
     found_file = openp (get_in_environ (inferior_environ, "PATH"),
                        1, in_pathname, O_RDONLY, 0, &temp_pathname);
 
   /* If not found, next search the inferior's $LD_LIBRARY_PATH 
      environment variable. */
-  if (found_file < 0 && solib_search_path != NULL)
+  if (found_file < 0 && solib_absolute_prefix == NULL)
     found_file = openp (get_in_environ (inferior_environ, "LD_LIBRARY_PATH"),
                        1, in_pathname, O_RDONLY, 0, &temp_pathname);