summaryrefslogtreecommitdiff
path: root/gdb/solib.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2007-01-08 18:56:30 +0000
committerDaniel Jacobowitz <dan@debian.org>2007-01-08 18:56:30 +0000
commitcff7e4bfae7e7a03f8129116c29238220f233c11 (patch)
treed37e4fba82e71e4fe788fab8a35de0f0a60da038 /gdb/solib.c
parent952ca5dd8cd35440dcf47ee1cdb1b0271212fe37 (diff)
downloadgdb-cff7e4bfae7e7a03f8129116c29238220f233c11.tar.gz
* NEWS: Add "set sysroot" and "show sysroot".
* solib.c (solib_absolute_prefix): Delete. Replace all uses with gdb_sysroot. (_initialize_solib): Add "set sysroot" and "show sysroot". Make "solib-absolute-prefix" an alias to it. * gdb.texinfo (Commands to specify files): Describe "set sysroot" and "show sysroot". (Using the `gdbserver' program): Lowercase argument to @var. Expand description of setting up GDB on the host.
Diffstat (limited to 'gdb/solib.c')
-rw-r--r--gdb/solib.c54
1 files changed, 26 insertions, 28 deletions
diff --git a/gdb/solib.c b/gdb/solib.c
index 215d82bcbc9..bb4138bba58 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -85,10 +85,6 @@ static int solib_cleanup_queued = 0; /* make_run_cleanup called */
static void do_clear_solib (void *);
-/* If non-zero, this is a prefix that will be added to the front of the name
- shared libraries with an absolute filename for loading. */
-static char *solib_absolute_prefix = NULL;
-
/* If non-empty, this is a search path for loading non-absolute shared library
symbol files. This takes precedence over the environment variables PATH
and LD_LIBRARY_PATH. */
@@ -114,26 +110,26 @@ The search path for loading non-absolute shared library symbol files is %s.\n"),
DESCRIPTION
- Global variable SOLIB_ABSOLUTE_PREFIX is used as a prefix directory
+ Global variable GDB_SYSROOT is used as a prefix directory
to search for shared libraries if they have an absolute path.
Global variable SOLIB_SEARCH_PATH is used as a prefix directory
(or set of directories, as in LD_LIBRARY_PATH) to search for all
- shared libraries if not found in SOLIB_ABSOLUTE_PREFIX.
+ shared libraries if not found in GDB_SYSROOT.
Search algorithm:
- * If there is a solib_absolute_prefix and path is absolute:
- * Search for solib_absolute_prefix/path.
+ * If there is a gdb_sysroot and path is absolute:
+ * Search for gdb_sysroot/path.
* else
* Look for it literally (unmodified).
* Look in SOLIB_SEARCH_PATH.
* If available, use target defined search function.
- * If solib_absolute_prefix is NOT set, perform the following two searches:
+ * If gdb_sysroot 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.
+ * machines since gdb_sysroot will almost always be set.
RETURNS
@@ -146,25 +142,24 @@ solib_open (char *in_pathname, char **found_pathname)
int found_file = -1;
char *temp_pathname = NULL;
char *p = in_pathname;
- int solib_absolute_prefix_is_empty;
+ int gdb_sysroot_is_empty;
- solib_absolute_prefix_is_empty = (solib_absolute_prefix == NULL
- || *solib_absolute_prefix == 0);
+ gdb_sysroot_is_empty = (gdb_sysroot == NULL || *gdb_sysroot == 0);
- if (! IS_ABSOLUTE_PATH (in_pathname) || solib_absolute_prefix_is_empty)
+ if (! IS_ABSOLUTE_PATH (in_pathname) || gdb_sysroot_is_empty)
temp_pathname = in_pathname;
else
{
- int prefix_len = strlen (solib_absolute_prefix);
+ int prefix_len = strlen (gdb_sysroot);
/* Remove trailing slashes from absolute prefix. */
while (prefix_len > 0
- && IS_DIR_SEPARATOR (solib_absolute_prefix[prefix_len - 1]))
+ && IS_DIR_SEPARATOR (gdb_sysroot[prefix_len - 1]))
prefix_len--;
/* Cat the prefixed pathname together. */
temp_pathname = alloca (prefix_len + strlen (in_pathname) + 1);
- strncpy (temp_pathname, solib_absolute_prefix, prefix_len);
+ strncpy (temp_pathname, gdb_sysroot, prefix_len);
temp_pathname[prefix_len] = '\0';
strcat (temp_pathname, in_pathname);
}
@@ -172,7 +167,7 @@ solib_open (char *in_pathname, char **found_pathname)
/* Now see if we can open it. */
found_file = open (temp_pathname, O_RDONLY | O_BINARY, 0);
- /* If the search in solib_absolute_prefix failed, and the path name is
+ /* If the search in gdb_sysroot failed, and the path name is
absolute at this point, make it relative. (openp will try and open the
file according to its absolute path otherwise, which is not what we want.)
Affects subsequent searches for this solib. */
@@ -206,14 +201,14 @@ solib_open (char *in_pathname, char **found_pathname)
&temp_pathname);
/* If not found, next search the inferior's $PATH environment variable. */
- if (found_file < 0 && solib_absolute_prefix_is_empty)
+ if (found_file < 0 && gdb_sysroot_is_empty)
found_file = openp (get_in_environ (inferior_environ, "PATH"),
OPF_TRY_CWD_FIRST, in_pathname, O_RDONLY | O_BINARY, 0,
&temp_pathname);
/* If not found, next search the inferior's $LD_LIBRARY_PATH
environment variable. */
- if (found_file < 0 && solib_absolute_prefix_is_empty)
+ if (found_file < 0 && gdb_sysroot_is_empty)
found_file = openp (get_in_environ (inferior_environ, "LD_LIBRARY_PATH"),
OPF_TRY_CWD_FIRST, in_pathname, O_RDONLY | O_BINARY, 0,
&temp_pathname);
@@ -979,18 +974,21 @@ inferior. Otherwise, symbols must be loaded manually, using `sharedlibrary'."),
show_auto_solib_add,
&setlist, &showlist);
- add_setshow_filename_cmd ("solib-absolute-prefix", class_support,
- &solib_absolute_prefix, _("\
-Set prefix for loading absolute shared library symbol files."), _("\
-Show prefix for loading absolute shared library symbol files."), _("\
-For other (relative) files, you can add values using `set solib-search-path'."),
+ add_setshow_filename_cmd ("sysroot", class_support,
+ &gdb_sysroot, _("\
+Set an alternate system root."), _("\
+Show the current system root."), _("\
+The system root is used to load absolute shared library symbol files.\n\
+For other (relative) files, you can add directories using\n\
+`set solib-search-path'."),
reload_shared_libraries,
NULL,
&setlist, &showlist);
- /* Set the default value of "solib-absolute-prefix" from the sysroot, if
- one is set. */
- solib_absolute_prefix = xstrdup (gdb_sysroot);
+ add_alias_cmd ("solib-absolute-prefix", "sysroot", class_support, 0,
+ &setlist);
+ add_alias_cmd ("solib-absolute-prefix", "sysroot", class_support, 0,
+ &showlist);
add_setshow_optional_filename_cmd ("solib-search-path", class_support,
&solib_search_path, _("\