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.
This commit is contained in:
parent
310a798eb8
commit
b7209cb4ed
@ -1,3 +1,39 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
2001-10-21 Mark Kettenis <kettenis@gnu.org>
|
2001-10-21 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
* config/i386/tm-i386v.h: Don't include "regcache.h".
|
* config/i386/tm-i386v.h: Don't include "regcache.h".
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
2001-10-15 Andrew Cagney <ac131313@redhat.com>
|
2001-10-15 Andrew Cagney <ac131313@redhat.com>
|
||||||
|
|
||||||
* gdbint.texinfo (Target Architecture Definition): Function
|
* gdbint.texinfo (Target Architecture Definition): Function
|
||||||
|
@ -8965,6 +8965,31 @@ automatically loads the symbols at the time of the @code{shl_load} call.
|
|||||||
@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
|
@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
|
||||||
@c FIXME...lib; check this from time to time when updating manual
|
@c FIXME...lib; check this from time to time when updating manual
|
||||||
|
|
||||||
|
There are times, however, when you may wish to not automatically load
|
||||||
|
symbol definitions from shared libraries, such as when they are
|
||||||
|
particularly large or there are many of them.
|
||||||
|
|
||||||
|
To control the automatic loading of shared library symbols, use the
|
||||||
|
commands:
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@kindex set auto-solib-add
|
||||||
|
@item set auto-solib-add @var{mode}
|
||||||
|
If @var{mode} is @code{on}, symbols from all shared object libraries
|
||||||
|
will be loaded automatically when the inferior begins execution, you
|
||||||
|
attach to an independently started inferior, or when the dynamic linker
|
||||||
|
informs @value{GDBN} that a new library has been loaded. If @var{mode}
|
||||||
|
is @code{off}, symbols must be loaded manually, using the
|
||||||
|
@code{sharedlibrary} command. The default value is @code{on}.
|
||||||
|
|
||||||
|
@kindex show auto-solib-add
|
||||||
|
@item show auto-solib-add
|
||||||
|
Display the current autoloading mode.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
To explicitly load shared library symbols, use the @code{sharedlibrary}
|
||||||
|
command:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@kindex info sharedlibrary
|
@kindex info sharedlibrary
|
||||||
@kindex info share
|
@kindex info share
|
||||||
@ -8984,9 +9009,12 @@ required by your program for a core file or after typing @code{run}. If
|
|||||||
loaded.
|
loaded.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
On HP-UX systems, @value{GDBN} detects the loading of a shared library
|
On some systems, such as HP-UX systems, @value{GDBN} supports
|
||||||
and automatically reads in symbols from the newly loaded library, up to
|
autoloading shared library symbols until a limiting threshold size is
|
||||||
a threshold that is initially set but that you can modify if you wish.
|
reached. This provides the benefit of allowing autoloading to remain on
|
||||||
|
by default, but avoids autoloading excessively large shared libraries,
|
||||||
|
up to a threshold that is initially set, but which you can modify if you
|
||||||
|
wish.
|
||||||
|
|
||||||
Beyond that threshold, symbols from shared libraries must be explicitly
|
Beyond that threshold, symbols from shared libraries must be explicitly
|
||||||
loaded. To load these symbols, use the command @code{sharedlibrary
|
loaded. To load these symbols, use the command @code{sharedlibrary
|
||||||
@ -8996,18 +9024,18 @@ automatically by @value{GDBN} and need not be specified.
|
|||||||
To display or set the threshold, use the commands:
|
To display or set the threshold, use the commands:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@kindex set auto-solib-add
|
@kindex set auto-solib-limit
|
||||||
@item set auto-solib-add @var{threshold}
|
@item set auto-solib-limit @var{threshold}
|
||||||
Set the autoloading size threshold, in megabytes. If @var{threshold} is
|
Set the autoloading size threshold, in an integral number of megabytes.
|
||||||
nonzero, symbols from all shared object libraries will be loaded
|
If @var{threshold} is nonzero and shared library autoloading is enabled,
|
||||||
automatically when the inferior begins execution or when the dynamic
|
symbols from all shared object libraries will be loaded until the total
|
||||||
linker informs @value{GDBN} that a new library has been loaded, until
|
size of the loaded shared library symbols exceeds this threshold.
|
||||||
the symbol table of the program and libraries exceeds this threshold.
|
|
||||||
Otherwise, symbols must be loaded manually, using the
|
Otherwise, symbols must be loaded manually, using the
|
||||||
@code{sharedlibrary} command. The default threshold is 100 megabytes.
|
@code{sharedlibrary} command. The default threshold is 100 (i.e. 100
|
||||||
|
Mb).
|
||||||
|
|
||||||
@kindex show auto-solib-add
|
@kindex show auto-solib-limit
|
||||||
@item show auto-solib-add
|
@item show auto-solib-limit
|
||||||
Display the current autoloading size threshold, in megabytes.
|
Display the current autoloading size threshold, in megabytes.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
|
@ -1287,13 +1287,13 @@ _initialize_solib (void)
|
|||||||
"Status of loaded shared object libraries.");
|
"Status of loaded shared object libraries.");
|
||||||
|
|
||||||
add_show_from_set
|
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,
|
(char *) &auto_solib_add,
|
||||||
"Set autoloading of shared library symbols.\n\
|
"Set autoloading of shared library symbols.\n\
|
||||||
If nonzero, symbols from all shared object libraries will be loaded\n\
|
If \"on\", symbols from all shared object libraries will be loaded\n\
|
||||||
automatically when the inferior begins execution or when the dynamic linker\n\
|
automatically when the inferior begins execution, when the dynamic linker\n\
|
||||||
informs gdb that a new library has been loaded. Otherwise, symbols\n\
|
informs gdb that a new library has been loaded, or when attaching to the\n\
|
||||||
must be loaded manually, using `sharedlibrary'.",
|
inferior. Otherwise, symbols must be loaded manually, using `sharedlibrary'.",
|
||||||
&setlist),
|
&setlist),
|
||||||
&showlist);
|
&showlist);
|
||||||
}
|
}
|
||||||
|
@ -924,13 +924,13 @@ _initialize_solib (void)
|
|||||||
"Status of loaded shared object libraries.");
|
"Status of loaded shared object libraries.");
|
||||||
|
|
||||||
add_show_from_set
|
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,
|
(char *) &auto_solib_add,
|
||||||
"Set autoloading of shared library symbols.\n\
|
"Set autoloading of shared library symbols.\n\
|
||||||
If nonzero, symbols from all shared object libraries will be loaded\n\
|
If \"on\", symbols from all shared object libraries will be loaded\n\
|
||||||
automatically when the inferior begins execution or when the dynamic linker\n\
|
automatically when the inferior begins execution, when the dynamic linker\n\
|
||||||
informs gdb that a new library has been loaded. Otherwise, symbols\n\
|
informs gdb that a new library has been loaded, or when attaching to the\n\
|
||||||
must be loaded manually, using `sharedlibrary'.",
|
inferior. Otherwise, symbols must be loaded manually, using `sharedlibrary'.",
|
||||||
&setlist),
|
&setlist),
|
||||||
&showlist);
|
&showlist);
|
||||||
}
|
}
|
||||||
|
@ -89,20 +89,20 @@ static struct so_list *so_list_head;
|
|||||||
shared objects on the so_list_head list. (When we say size, here
|
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
|
we mean of the information before it is brought into memory and
|
||||||
potentially expanded by GDB.) When adding a new shlib, this value
|
potentially expanded by GDB.) When adding a new shlib, this value
|
||||||
is compared against the threshold size, held by auto_solib_add
|
is compared against a threshold size, held by auto_solib_limit (in
|
||||||
(in megabytes). If adding symbols for the new shlib would cause
|
megabytes). If adding symbols for the new shlib would cause the
|
||||||
the total size to exceed the threshold, then the new shlib's symbols
|
total size to exceed the threshold, then the new shlib's symbols
|
||||||
are not loaded. */
|
are not loaded. */
|
||||||
static LONGEST pa64_solib_total_st_size;
|
static LONGEST pa64_solib_total_st_size;
|
||||||
|
|
||||||
/* When the threshold is reached for any shlib, we refuse to add
|
/* When the threshold is reached for any shlib, we refuse to add
|
||||||
symbols for subsequent shlibs, even if those shlibs' symbols would
|
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,
|
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
|
message. The alternative, to issue a message for each shlib whose
|
||||||
symbols aren't loaded, could be a big annoyance where the threshold
|
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;
|
static int pa64_solib_st_size_threshold_exceeded;
|
||||||
|
|
||||||
/* When adding fields, be sure to clear them in _initialize_pa64_solib. */
|
/* 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
|
/* 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. */
|
be exceeded. */
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -886,28 +886,37 @@ _initialize_pa64_solib (void)
|
|||||||
"Load shared object library symbols for files matching REGEXP.");
|
"Load shared object library symbols for files matching REGEXP.");
|
||||||
add_info ("sharedlibrary", pa64_sharedlibrary_info_command,
|
add_info ("sharedlibrary", pa64_sharedlibrary_info_command,
|
||||||
"Status of loaded shared object libraries.");
|
"Status of loaded shared object libraries.");
|
||||||
|
|
||||||
add_show_from_set
|
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,
|
(char *) &auto_solib_add,
|
||||||
"Set autoloading size threshold (in megabytes) of shared library symbols.\n\
|
"Set autoloading of shared library symbols.\n\
|
||||||
If nonzero, symbols from all shared object libraries will be loaded\n\
|
If \"on\", symbols from all shared object libraries will be loaded\n\
|
||||||
automatically when the inferior begins execution or when the dynamic linker\n\
|
automatically when the inferior begins execution, when the dynamic linker\n\
|
||||||
informs gdb that a new library has been loaded, until the symbol table\n\
|
informs gdb that a new library has been loaded, or when attaching to the\n\
|
||||||
of the program and libraries exceeds this threshold.\n\
|
inferior. Otherwise, symbols must be loaded manually, using `sharedlibrary'.",
|
||||||
Otherwise, symbols must be loaded manually, using `sharedlibrary'.",
|
|
||||||
&setlist),
|
&setlist),
|
||||||
&showlist);
|
&showlist);
|
||||||
|
|
||||||
/* ??rehrauer: On HP-UX, the kernel parameter MAXDSIZ limits how much
|
add_show_from_set
|
||||||
data space a process can use. We ought to be reading MAXDSIZ and
|
(add_set_cmd ("auto-solib-limit", class_support, var_zinteger,
|
||||||
setting auto_solib_add to some large fraction of that value. If
|
(char *) &auto_solib_limit,
|
||||||
not that, we maybe ought to be setting it smaller than the default
|
"Set threshold (in Mb) for autoloading shared library symbols.\n\
|
||||||
for MAXDSIZ (that being 64Mb, I believe). However, [1] this threshold
|
When shared library autoloading is enabled, new libraries will be loaded\n\
|
||||||
is only crudely approximated rather than actually measured, and [2]
|
only until the total size of shared library symbols exceeds this\n\
|
||||||
50 Mbytes is too small for debugging gdb itself. Thus, the arbitrary
|
threshold in megabytes. Is ignored when using `sharedlibrary'.",
|
||||||
100 figure.
|
&setlist),
|
||||||
*/
|
&showlist);
|
||||||
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 ();
|
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);
|
st_size = pa64_solib_sizeof_symbol_table (dll_path);
|
||||||
pa64_solib_st_size_threshhold_exceeded =
|
pa64_solib_st_size_threshhold_exceeded =
|
||||||
!from_tty
|
!from_tty
|
||||||
|
&& auto_solib_add
|
||||||
&& ( (st_size + pa64_solib_total_st_size)
|
&& ( (st_size + pa64_solib_total_st_size)
|
||||||
> (auto_solib_add * (LONGEST)1000000));
|
> (auto_solib_limit * (LONGEST)1000000));
|
||||||
if (pa64_solib_st_size_threshhold_exceeded)
|
if (pa64_solib_st_size_threshhold_exceeded)
|
||||||
{
|
{
|
||||||
pa64_solib_add_solib_objfile (new_so, dll_path, from_tty, 1);
|
pa64_solib_add_solib_objfile (new_so, dll_path, from_tty, 1);
|
||||||
|
10
gdb/solib.c
10
gdb/solib.c
@ -841,13 +841,13 @@ _initialize_solib (void)
|
|||||||
"Unload all shared object library symbols.");
|
"Unload all shared object library symbols.");
|
||||||
|
|
||||||
add_show_from_set
|
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,
|
(char *) &auto_solib_add,
|
||||||
"Set autoloading of shared library symbols.\n\
|
"Set autoloading of shared library symbols.\n\
|
||||||
If nonzero, symbols from all shared object libraries will be loaded\n\
|
If \"on\", symbols from all shared object libraries will be loaded\n\
|
||||||
automatically when the inferior begins execution or when the dynamic linker\n\
|
automatically when the inferior begins execution, when the dynamic linker\n\
|
||||||
informs gdb that a new library has been loaded. Otherwise, symbols\n\
|
informs gdb that a new library has been loaded, or when attaching to the\n\
|
||||||
must be loaded manually, using `sharedlibrary'.",
|
inferior. Otherwise, symbols must be loaded manually, using `sharedlibrary'.",
|
||||||
&setlist),
|
&setlist),
|
||||||
&showlist);
|
&showlist);
|
||||||
|
|
||||||
|
@ -161,11 +161,10 @@ static struct so_list *so_list_head;
|
|||||||
shared objects on the so_list_head list. (When we say size, here
|
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
|
we mean of the information before it is brought into memory and
|
||||||
potentially expanded by GDB.) When adding a new shlib, this value
|
potentially expanded by GDB.) When adding a new shlib, this value
|
||||||
is compared against the threshold size, held by auto_solib_add
|
is compared against the threshold size, held by auto_solib_limit
|
||||||
(in megabytes). If adding symbols for the new shlib would cause
|
(in megabytes). If adding symbols for the new shlib would cause
|
||||||
the total size to exceed the threshold, then the new shlib's symbols
|
the total size to exceed the threshold, then the new shlib's
|
||||||
are not loaded.
|
symbols are not loaded. */
|
||||||
*/
|
|
||||||
static LONGEST som_solib_total_st_size;
|
static LONGEST som_solib_total_st_size;
|
||||||
|
|
||||||
/* When the threshold is reached for any shlib, we refuse to add
|
/* When the threshold is reached for any shlib, we refuse to add
|
||||||
@ -403,7 +402,7 @@ som_solib_load_symbols (struct so_list *so, char *name, int from_tty,
|
|||||||
|
|
||||||
|
|
||||||
/* Add symbols from shared libraries into the symtab list, unless the
|
/* 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. */
|
be exceeded. */
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -778,12 +777,13 @@ som_solib_add (char *arg_string, int from_tty, struct target_ops *target)
|
|||||||
st_size = som_solib_sizeof_symbol_table (name);
|
st_size = som_solib_sizeof_symbol_table (name);
|
||||||
som_solib_st_size_threshold_exceeded =
|
som_solib_st_size_threshold_exceeded =
|
||||||
!from_tty &&
|
!from_tty &&
|
||||||
((st_size + som_solib_total_st_size) > (auto_solib_add * (LONGEST) 1000000));
|
auto_solib_add &&
|
||||||
|
((st_size + som_solib_total_st_size) > (auto_solib_limit * (LONGEST) 1000000));
|
||||||
|
|
||||||
if (som_solib_st_size_threshold_exceeded)
|
if (som_solib_st_size_threshold_exceeded)
|
||||||
{
|
{
|
||||||
if (!threshold_warning_given)
|
if (!threshold_warning_given)
|
||||||
warning ("Symbols for some libraries have not been loaded, because\ndoing so would exceed the size threshold specified by auto-solib-add.\nTo manually load symbols, use the 'sharedlibrary' command.\nTo raise the threshold, set auto-solib-add to a larger value and rerun\nthe program.\n");
|
warning ("Symbols for some libraries have not been loaded, because\ndoing so would exceed the size threshold specified by auto-solib-limit.\nTo manually load symbols, use the 'sharedlibrary' command.\nTo raise the threshold, set auto-solib-limit to a larger value and rerun\nthe program.\n");
|
||||||
threshold_warning_given = 1;
|
threshold_warning_given = 1;
|
||||||
|
|
||||||
/* We'll still make note of this shlib, even if we don't
|
/* We'll still make note of this shlib, even if we don't
|
||||||
@ -1571,28 +1571,37 @@ _initialize_som_solib (void)
|
|||||||
"Load shared object library symbols for files matching REGEXP.");
|
"Load shared object library symbols for files matching REGEXP.");
|
||||||
add_info ("sharedlibrary", som_sharedlibrary_info_command,
|
add_info ("sharedlibrary", som_sharedlibrary_info_command,
|
||||||
"Status of loaded shared object libraries.");
|
"Status of loaded shared object libraries.");
|
||||||
|
|
||||||
add_show_from_set
|
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,
|
(char *) &auto_solib_add,
|
||||||
"Set autoloading size threshold (in megabytes) of shared library symbols.\n\
|
"Set autoloading of shared library symbols.\n\
|
||||||
If nonzero, symbols from all shared object libraries will be loaded\n\
|
If \"on\", symbols from all shared object libraries will be loaded\n\
|
||||||
automatically when the inferior begins execution or when the dynamic linker\n\
|
automatically when the inferior begins execution, when the dynamic linker\n\
|
||||||
informs gdb that a new library has been loaded, until the symbol table\n\
|
informs gdb that a new library has been loaded, or when attaching to the\n\
|
||||||
of the program and libraries exceeds this threshold.\n\
|
inferior. Otherwise, symbols must be loaded manually, using `sharedlibrary'.",
|
||||||
Otherwise, symbols must be loaded manually, using `sharedlibrary'.",
|
|
||||||
&setlist),
|
&setlist),
|
||||||
&showlist);
|
&showlist);
|
||||||
|
|
||||||
/* ??rehrauer: On HP-UX, the kernel parameter MAXDSIZ limits how much
|
add_show_from_set
|
||||||
data space a process can use. We ought to be reading MAXDSIZ and
|
(add_set_cmd ("auto-solib-limit", class_support, var_zinteger,
|
||||||
setting auto_solib_add to some large fraction of that value. If
|
(char *) &auto_solib_limit,
|
||||||
not that, we maybe ought to be setting it smaller than the default
|
"Set threshold (in Mb) for autoloading shared library symbols.\n\
|
||||||
for MAXDSIZ (that being 64Mb, I believe). However, [1] this threshold
|
When shared library autoloading is enabled, new libraries will be loaded\n\
|
||||||
is only crudely approximated rather than actually measured, and [2]
|
only until the total size of shared library symbols exceeds this\n\
|
||||||
50 Mbytes is too small for debugging gdb itself. Thus, the arbitrary
|
threshold in megabytes. Is ignored when using `sharedlibrary'.",
|
||||||
100 figure.
|
&setlist),
|
||||||
*/
|
&showlist);
|
||||||
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 */
|
||||||
|
|
||||||
som_solib_restart ();
|
som_solib_restart ();
|
||||||
}
|
}
|
||||||
|
@ -177,27 +177,27 @@ int symbol_reloading = SYMBOL_RELOADING_DEFAULT;
|
|||||||
int symbol_reloading = 0;
|
int symbol_reloading = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* If non-zero, then on HP-UX (i.e., platforms that use somsolib.c),
|
/* If non-zero, shared library symbols will be added automatically
|
||||||
this variable is interpreted as a threshhold. If adding a new
|
when the inferior is created, new libraries are loaded, or when
|
||||||
library's symbol table to those already known to the debugger would
|
attaching to the inferior. This is almost always what users will
|
||||||
exceed this threshhold, then the shlib's symbols are not added.
|
want to have happen; but for very large programs, the startup time
|
||||||
|
will be excessive, and so if this is a problem, the user can clear
|
||||||
If non-zero on other platforms, shared library symbols will be added
|
this flag and then add the shared library symbols as needed. Note
|
||||||
automatically when the inferior is created, new libraries are loaded,
|
that there is a potential for confusion, since if the shared
|
||||||
or when attaching to the inferior. This is almost always what users
|
|
||||||
will want to have happen; but for very large programs, the startup
|
|
||||||
time will be excessive, and so if this is a problem, the user can
|
|
||||||
clear this flag and then add the shared library symbols as needed.
|
|
||||||
Note that there is a potential for confusion, since if the shared
|
|
||||||
library symbols are not loaded, commands like "info fun" will *not*
|
library symbols are not loaded, commands like "info fun" will *not*
|
||||||
report all the functions that are actually present.
|
report all the functions that are actually present. */
|
||||||
|
|
||||||
Note that HP-UX interprets this variable to mean, "threshhold size
|
|
||||||
in megabytes, where zero means never add". Other platforms interpret
|
|
||||||
this variable to mean, "always add if non-zero, never add if zero."
|
|
||||||
*/
|
|
||||||
|
|
||||||
int auto_solib_add = 1;
|
int auto_solib_add = 1;
|
||||||
|
|
||||||
|
/* For systems that support it, a threshold size in megabytes. If
|
||||||
|
automatically adding a new library's symbol table to those already
|
||||||
|
known to the debugger would cause the total shared library symbol
|
||||||
|
size to exceed this threshhold, then the shlib's symbols are not
|
||||||
|
added. The threshold is ignored if the user explicitly asks for a
|
||||||
|
shlib to be added, such as when using the "sharedlibrary"
|
||||||
|
command. */
|
||||||
|
|
||||||
|
int auto_solib_limit;
|
||||||
|
|
||||||
|
|
||||||
/* Since this function is called from within qsort, in an ANSI environment
|
/* Since this function is called from within qsort, in an ANSI environment
|
||||||
|
@ -218,19 +218,28 @@ extern char *obconcat (struct obstack *obstackp, const char *, const char *,
|
|||||||
|
|
||||||
/* Variables */
|
/* Variables */
|
||||||
|
|
||||||
/* whether to auto load solibs at startup time: 0/1.
|
/* If non-zero, shared library symbols will be added automatically
|
||||||
|
when the inferior is created, new libraries are loaded, or when
|
||||||
On all platforms, 0 means "don't auto load".
|
attaching to the inferior. This is almost always what users will
|
||||||
|
want to have happen; but for very large programs, the startup time
|
||||||
On HP-UX, > 0 means a threshhold, in megabytes, of symbol table which will
|
will be excessive, and so if this is a problem, the user can clear
|
||||||
be auto loaded. When the cumulative size of solib symbol table exceeds
|
this flag and then add the shared library symbols as needed. Note
|
||||||
this threshhold, solibs' symbol tables will not be loaded.
|
that there is a potential for confusion, since if the shared
|
||||||
|
library symbols are not loaded, commands like "info fun" will *not*
|
||||||
On other platforms, > 0 means, "always auto load".
|
report all the functions that are actually present. */
|
||||||
*/
|
|
||||||
|
|
||||||
extern int auto_solib_add;
|
extern int auto_solib_add;
|
||||||
|
|
||||||
|
/* For systems that support it, a threshold size in megabytes. If
|
||||||
|
automatically adding a new library's symbol table to those already
|
||||||
|
known to the debugger would cause the total shared library symbol
|
||||||
|
size to exceed this threshhold, then the shlib's symbols are not
|
||||||
|
added. The threshold is ignored if the user explicitly asks for a
|
||||||
|
shlib to be added, such as when using the "sharedlibrary"
|
||||||
|
command. */
|
||||||
|
|
||||||
|
extern int auto_solib_limit;
|
||||||
|
|
||||||
/* From symfile.c */
|
/* From symfile.c */
|
||||||
|
|
||||||
extern CORE_ADDR entry_point_address (void);
|
extern CORE_ADDR entry_point_address (void);
|
||||||
|
@ -184,13 +184,13 @@ _initialize_solib (void)
|
|||||||
"Status of loaded shared object libraries");
|
"Status of loaded shared object libraries");
|
||||||
|
|
||||||
add_show_from_set
|
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,
|
(char *) &auto_solib_add,
|
||||||
"Set autoloading of shared library symbols.\n\
|
"Set autoloading of shared library symbols.\n\
|
||||||
If nonzero, symbols from all shared object libraries will be loaded\n\
|
If \"on\", symbols from all shared object libraries will be loaded\n\
|
||||||
automatically when the inferior begins execution or when the dynamic linker\n\
|
automatically when the inferior begins execution, when the dynamic linker\n\
|
||||||
informs gdb that a new library has been loaded. Otherwise, symbols\n\
|
informs gdb that a new library has been loaded, or when attaching to the\n\
|
||||||
must be loaded manually, using `sharedlibrary'.",
|
inferior. Otherwise, symbols must be loaded manually, using `sharedlibrary'.",
|
||||||
&setlist),
|
&setlist),
|
||||||
&showlist);
|
&showlist);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user