diff options
author | Fred Fish <fnf@specifix.com> | 2001-10-30 04:05:36 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 2001-10-30 04:05:36 +0000 |
commit | affd3708205bbe0d5938493ad0fea17af4a65b84 (patch) | |
tree | 68523eb9b8e216973da10bc1f680d1851b2c3e46 /gdb/pa64solib.c | |
parent | 0765b50aeedee2f40d21928352b23fbc5f15db3e (diff) | |
download | gdb-affd3708205bbe0d5938493ad0fea17af4a65b84.tar.gz |
Changes approved by kev@cygnus.com, ezannoni@cygnus.com, eliz@is.elta.co.il.
Changelog:
2001-10-27 Fred Fish <fnf@redhat.com>
* symfile.c (auto_solib_add): Update comment to note that
this variable is now just used as a boolean to control shlib
autoloading, and clarify when it is used.
* symfile.h (auto_solib_add): Ditto.
* symfile.c (auto_solib_limit): New variable that holds the
autoloading threshold instead of overloading auto_solib_add.
* symfile.h (auto_solib_limit): Ditto.
* irix5-nat.c (_initialize_solib): Change auto-solib-add
variable from var_zinteger to var_boolean and update help.
* osfsolib.c (_initialize_solib): Ditto.
* pa64solib.c (_initialize_pa64_solib): Ditto.
* solib.c (_initialize_solib): Ditto.
* somsolib.c (_initialize_som_solib): Ditto.
* xcoffsolib.c (_initialize_solib): Ditto.
* pa64solib.c (pa64_solib_total_st_size): Update comment to
note that the new auto_solib_limit variable is used instead
of overloading auto_solib_add variable.
(_initialize_pa64_solib): Ditto.
* somsolib.c (som_solib_total_st_size): Ditto.
(_initialize_som_solib): Ditto.
* pa64solib.c (_initialize_pa64_solib): Add new set/show
commands for auto-solib-limit variable.
* somsolib.c (_initialize_som_solib): Ditto
* pa64solib.c (add_to_solist): Check that auto_solib_add is
set and use auto_solib_limit as the threshold size instead
of auto_solib_add.
* somsolib.c (som_solib_add): Ditto, and also change warning
text about size threshold exceeded.
doc/ChangeLog:
2001-10-28 Fred Fish <fnf@redhat.com>
* gdb.texinfo (auto-solib-add): Change docs to match
implementation change.
(auto-solib-limit): Add docs for new variable.
Diffstat (limited to 'gdb/pa64solib.c')
-rw-r--r-- | gdb/pa64solib.c | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/gdb/pa64solib.c b/gdb/pa64solib.c index cfafa288170..e39d9e32c78 100644 --- a/gdb/pa64solib.c +++ b/gdb/pa64solib.c @@ -89,20 +89,20 @@ static struct so_list *so_list_head; shared objects on the so_list_head list. (When we say size, here we mean of the information before it is brought into memory and potentially expanded by GDB.) When adding a new shlib, this value - is compared against the threshold size, held by auto_solib_add - (in megabytes). If adding symbols for the new shlib would cause - the total size to exceed the threshold, then the new shlib's symbols - are not loaded. */ + is compared against a threshold size, held by auto_solib_limit (in + megabytes). If adding symbols for the new shlib would cause the + total size to exceed the threshold, then the new shlib's symbols + are not loaded. */ static LONGEST pa64_solib_total_st_size; /* When the threshold is reached for any shlib, we refuse to add symbols for subsequent shlibs, even if those shlibs' symbols would - be small enough to fit under the threshold. (Although this may + be small enough to fit under the threshold. Although this may result in one, early large shlib preventing the loading of later, - smalller shlibs' symbols, it allows us to issue one informational + smaller shlibs' symbols, it allows us to issue one informational message. The alternative, to issue a message for each shlib whose symbols aren't loaded, could be a big annoyance where the threshold - is exceeded due to a very large number of shlibs.) */ + is exceeded due to a very large number of shlibs. */ static int pa64_solib_st_size_threshold_exceeded; /* When adding fields, be sure to clear them in _initialize_pa64_solib. */ @@ -368,7 +368,7 @@ pa64_solib_load_symbols (struct so_list *so, char *name, int from_tty, /* Add symbols from shared libraries into the symtab list, unless the - size threshold (specified by auto_solib_add, in megabytes) would + size threshold specified by auto_solib_limit (in megabytes) would be exceeded. */ void @@ -886,28 +886,37 @@ _initialize_pa64_solib (void) "Load shared object library symbols for files matching REGEXP."); add_info ("sharedlibrary", pa64_sharedlibrary_info_command, "Status of loaded shared object libraries."); + add_show_from_set - (add_set_cmd ("auto-solib-add", class_support, var_zinteger, + (add_set_cmd ("auto-solib-add", class_support, var_boolean, (char *) &auto_solib_add, - "Set autoloading size threshold (in megabytes) of shared library symbols.\n\ -If nonzero, symbols from all shared object libraries will be loaded\n\ -automatically when the inferior begins execution or when the dynamic linker\n\ -informs gdb that a new library has been loaded, until the symbol table\n\ -of the program and libraries exceeds this threshold.\n\ -Otherwise, symbols must be loaded manually, using `sharedlibrary'.", + "Set autoloading of shared library symbols.\n\ +If \"on\", symbols from all shared object libraries will be loaded\n\ +automatically when the inferior begins execution, when the dynamic linker\n\ +informs gdb that a new library has been loaded, or when attaching to the\n\ +inferior. Otherwise, symbols must be loaded manually, using `sharedlibrary'.", + &setlist), + &showlist); + + add_show_from_set + (add_set_cmd ("auto-solib-limit", class_support, var_zinteger, + (char *) &auto_solib_limit, + "Set threshold (in Mb) for autoloading shared library symbols.\n\ +When shared library autoloading is enabled, new libraries will be loaded\n\ +only until the total size of shared library symbols exceeds this\n\ +threshold in megabytes. Is ignored when using `sharedlibrary'.", &setlist), &showlist); - /* ??rehrauer: On HP-UX, the kernel parameter MAXDSIZ limits how much - data space a process can use. We ought to be reading MAXDSIZ and - setting auto_solib_add to some large fraction of that value. If - not that, we maybe ought to be setting it smaller than the default - for MAXDSIZ (that being 64Mb, I believe). However, [1] this threshold - is only crudely approximated rather than actually measured, and [2] - 50 Mbytes is too small for debugging gdb itself. Thus, the arbitrary - 100 figure. - */ - auto_solib_add = 100; /* Megabytes */ + /* ??rehrauer: On HP-UX, the kernel parameter MAXDSIZ limits how + much data space a process can use. We ought to be reading + MAXDSIZ and setting auto_solib_limit to some large fraction of + that value. If not that, we maybe ought to be setting it smaller + than the default for MAXDSIZ (that being 64Mb, I believe). + However, [1] this threshold is only crudely approximated rather + than actually measured, and [2] 50 Mbytes is too small for + debugging gdb itself. Thus, the arbitrary 100 figure. */ + auto_solib_limit = 100; /* Megabytes */ pa64_solib_restart (); } @@ -1157,8 +1166,9 @@ add_to_solist (boolean from_tty, char *dll_path, st_size = pa64_solib_sizeof_symbol_table (dll_path); pa64_solib_st_size_threshhold_exceeded = !from_tty + && auto_solib_add && ( (st_size + pa64_solib_total_st_size) - > (auto_solib_add * (LONGEST)1000000)); + > (auto_solib_limit * (LONGEST)1000000)); if (pa64_solib_st_size_threshhold_exceeded) { pa64_solib_add_solib_objfile (new_so, dll_path, from_tty, 1); |