+2011-08-09 Pedro Alves <pedro@codesourcery.com>
+
+ * elfread.c (elf_symtab_read): Ditto.
+ * maint.c (maintenance_command): Ditto.
+ * somread.c (som_symtab_read): Ditto.
+ * solib.c (solib_find, solib_map_sections, update_solib_list)
+ (solib_add, info_sharedlibrary_command, solib_name_from_address)
+ (solib_create_inferior_hook, in_solib_dynsym_resolve_code)
+ (sharedlibrary_command, no_shared_libraries): Rework comments.
+ * solib-irix.c (locate_base, disable_break, enable_break)
+ (irix_solib_create_inferior_hook, irix_solib_create_inferior_hook)
+ (irix_current_sos, irix_open_symbol_file_object)
+ (irix_special_symbol_handling): Ditto.
+ * solib-sunos.c (locate_base, first_link_map_member)
+ (sunos_current_sos, disable_break, enable_break)
+ (sunos_special_symbol_handling, sunos_solib_create_inferior_hook):
+ Ditto.
+ * solib-svr4.c (bfd_lookup_symbol, elf_locate_base, locate_base)
+ (open_symbol_file_object, svr4_current_sos, enable_break)
+ (svr4_special_symbol_handling, svr4_solib_create_inferior_hook):
+ Ditto.
+ * solib-frv.c (bfd_lookup_symbol, open_symbol_file_object)
+ (frv_current_sos, enable_break, frv_special_symbol_handling)
+ (frv_solib_create_inferior_hook): Ditto.
+ * solist.h (struct target_so_ops): Extend the comments of the
+ special_symbol_handling, current_sos and open_symbol_file_object
+ methods.
+
2011-08-09 Phil Muldoon <pmuldoon@redhat.com>
* python/lib/gdb/__init__.py: Auto-load files in command and
bfd_section, objfile);
}
-/*
-
- LOCAL FUNCTION
-
- elf_symtab_read -- read the symbol table of an ELF file
-
- SYNOPSIS
-
- void elf_symtab_read (struct objfile *objfile, int type,
- long number_of_symbols, asymbol **symbol_table)
-
- DESCRIPTION
+/* Read the symbol table of an ELF file.
Given an objfile, a symbol table, and a flag indicating whether the
symbol table contains regular, dynamic, or synthetic symbols, add all
defined in the ELF symbol table, which can be used to locate
the beginnings of sections from each ".o" file that was linked to
form the executable objfile. We gather any such info and record it
- in data structures hung off the objfile's private data.
-
- */
+ in data structures hung off the objfile's private data. */
#define ST_REGULAR 0
#define ST_DYNAMIC 1
fprintf_filtered (file, _("Watchdog timer is %s.\n"), value);
}
-/*
-
- LOCAL FUNCTION
-
- maintenance_command -- access the maintenance subcommands
-
- SYNOPSIS
-
- void maintenance_command (char *args, int from_tty)
-
- DESCRIPTION
-
- */
+/* Access the maintenance subcommands. */
static void
maintenance_command (char *args, int from_tty)
static CORE_ADDR main_got (void);
static int enable_break2 (void);
-/*
-
- LOCAL FUNCTION
-
- bfd_lookup_symbol -- lookup the value for a specific symbol
-
- SYNOPSIS
-
- CORE_ADDR bfd_lookup_symbol (bfd *abfd, char *symname)
-
- DESCRIPTION
+/* Lookup the value for a specific symbol.
An expensive way to lookup the value of a single symbol for
bfd's that are only temporary anyway. This is used by the
interface structures in the shared library.
Note that 0 is specifically allowed as an error return (no
- such symbol).
- */
+ such symbol). */
static CORE_ADDR
bfd_lookup_symbol (bfd *abfd, char *symname)
return symaddr;
}
-
-/*
-
- LOCAL FUNCTION
-
- open_symbol_file_object
-
- SYNOPSIS
-
- void open_symbol_file_object (void *from_tty)
-
- DESCRIPTION
-
- If no open symbol file, attempt to locate and open the main symbol
- file.
-
- If FROM_TTYP dereferences to a non-zero integer, allow messages to
- be printed. This parameter is a pointer rather than an int because
- open_symbol_file_object() is called via catch_errors() and
- catch_errors() requires a pointer argument. */
+/* Implement the "open_symbol_file_object" target_so_ops method. */
static int
open_symbol_file_object (void *from_ttyp)
}
-/* LOCAL FUNCTION
-
- frv_current_sos -- build a list of currently loaded shared objects
-
- SYNOPSIS
-
- struct so_list *frv_current_sos ()
-
- DESCRIPTION
-
- Build a list of `struct so_list' objects describing the shared
- objects currently loaded in the inferior. This list does not
- include an entry for the main executable file.
-
- Note that we only gather information directly available from the
- inferior --- we don't examine any of the shared library files
- themselves. The declaration of `struct so_list' says which fields
- we provide values for. */
+/* Implement the "current_sos" target_so_ops method. */
static struct so_list *
frv_current_sos (void)
"and track explicitly loaded dynamic code."));
}
-/*
-
- LOCAL FUNCTION
-
- enable_break -- arrange for dynamic linker to hit breakpoint
-
- SYNOPSIS
-
- int enable_break (void)
-
- DESCRIPTION
+/* Arrange for dynamic linker to hit breakpoint.
The dynamic linkers has, as part of its debugger interface, support
for arranging for the inferior to hit a breakpoint after mapping in
using the interpreter's loadmap. Once the relocated address
is known, we fetch the value (address) corresponding to r_brk
and then use that value to fetch the entry point of the function
- we're interested in.
-
- */
+ we're interested in. */
static int enable_break2_done = 0;
return 1;
}
-/*
-
- LOCAL FUNCTION
-
- special_symbol_handling -- additional shared library symbol handling
-
- SYNOPSIS
-
- void special_symbol_handling ()
-
- DESCRIPTION
-
- Once the symbols from a shared object have been loaded in the usual
- way, we are called to do any system specific symbol handling that
- is needed.
-
- */
+/* Implement the "special_symbol_handling" target_so_ops method. */
static void
frv_special_symbol_handling (void)
{
- /* Nothing needed (yet) for FRV. */
+ /* Nothing needed for FRV. */
}
static void
main_executable_lm_info->got_value = main_got ();
}
-/*
-
- GLOBAL FUNCTION
-
- frv_solib_create_inferior_hook -- shared library startup support
-
- SYNOPSIS
-
- void frv_solib_create_inferior_hook ()
-
- DESCRIPTION
-
- When gdb starts up the inferior, it nurses it along (through the
- shell) until it is ready to execute it's first instruction. At this
- point, this function gets called via expansion of the macro
- SOLIB_CREATE_INFERIOR_HOOK.
+/* Implement the "create_inferior_hook" target_solib_ops method.
- For the FR-V shared library ABI (FDPIC), the main executable
- needs to be relocated. The shared library breakpoints also need
- to be enabled.
- */
+ For the FR-V shared library ABI (FDPIC), the main executable needs
+ to be relocated. The shared library breakpoints also need to be
+ enabled. */
static void
frv_solib_create_inferior_hook (int from_tty)
static CORE_ADDR debug_base; /* Base of dynamic linker structures. */
-/*
-
- LOCAL FUNCTION
-
- locate_base -- locate the base address of dynamic linker structs
-
- SYNOPSIS
-
- CORE_ADDR locate_base (void)
-
- DESCRIPTION
+/* Locate the base address of dynamic linker structs.
For both the SunOS and SVR4 shared library implementations, if the
inferior executable has been linked dynamically, there is a single
we need to find this address. We may be stopped on the first instruc-
tion of the interpreter (C shared library), the first instruction of
the executable itself, or somewhere else entirely (if we attached
- to the process for example).
-
- */
+ to the process for example). */
static CORE_ADDR
locate_base (void)
return (address);
}
-/*
-
- LOCAL FUNCTION
-
- disable_break -- remove the "mapping changed" breakpoint
-
- SYNOPSIS
-
- static int disable_break ()
-
- DESCRIPTION
+/* Remove the "mapping changed" breakpoint.
Removes the breakpoint that gets hit when the dynamic linker
- completes a mapping change.
-
- */
+ completes a mapping change. */
static int
disable_break (void)
return (status);
}
-/*
-
- LOCAL FUNCTION
-
- enable_break -- arrange for dynamic linker to hit breakpoint
-
- SYNOPSIS
-
- int enable_break (void)
-
- DESCRIPTION
+/* Arrange for dynamic linker to hit breakpoint.
This functions inserts a breakpoint at the entry point of the
- main executable, where all shared libraries are mapped in.
- */
+ main executable, where all shared libraries are mapped in. */
static int
enable_break (void)
return 0;
}
-/*
-
- LOCAL FUNCTION
-
- irix_solib_create_inferior_hook -- shared library startup support
-
- SYNOPSIS
-
- void solib_create_inferior_hook (int from_tty)
-
- DESCRIPTION
-
- When gdb starts up the inferior, it nurses it along (through the
- shell) until it is ready to execute it's first instruction. At this
- point, this function gets called via expansion of the macro
- SOLIB_CREATE_INFERIOR_HOOK.
+/* Implement the "create_inferior_hook" target_solib_ops method.
For SunOS executables, this first instruction is typically the
one at "_start", or a similar text label, regardless of whether
handling will probably have to wait until the implementation is
changed to use the "breakpoint handler function" method.
- Also, what if child has exit()ed? Must exit loop somehow.
- */
+ Also, what if child has exit()ed? Must exit loop somehow. */
static void
irix_solib_create_inferior_hook (int from_tty)
inf->control.stop_soon = NO_STOP_QUIETLY;
}
-/* LOCAL FUNCTION
-
- current_sos -- build a list of currently loaded shared objects
-
- SYNOPSIS
-
- struct so_list *current_sos ()
-
- DESCRIPTION
-
- Build a list of `struct so_list' objects describing the shared
- objects currently loaded in the inferior. This list does not
- include an entry for the main executable file.
-
- Note that we only gather information directly available from the
- inferior --- we don't examine any of the shared library files
- themselves. The declaration of `struct so_list' says which fields
- we provide values for. */
+/* Implement the "current_sos" target_so_ops method. */
static struct so_list *
irix_current_sos (void)
return head;
}
-/*
-
- LOCAL FUNCTION
-
- irix_open_symbol_file_object
-
- SYNOPSIS
-
- void irix_open_symbol_file_object (void *from_tty)
+/* Implement the "open_symbol_file_object" target_so_ops method.
- DESCRIPTION
-
- If no open symbol file, attempt to locate and open the main symbol
- file. On IRIX, this is the first link map entry. If its name is
- here, we can open it. Useful when attaching to a process without
- first loading its symbol file.
-
- If FROM_TTYP dereferences to a non-zero integer, allow messages to
- be printed. This parameter is a pointer rather than an int because
- open_symbol_file_object() is called via catch_errors() and
- catch_errors() requires a pointer argument. */
+ If no open symbol file, attempt to locate and open the main symbol
+ file. On IRIX, this is the first link map entry. If its name is
+ here, we can open it. Useful when attaching to a process without
+ first loading its symbol file. */
static int
irix_open_symbol_file_object (void *from_ttyp)
return 1;
}
+/* Implement the "special_symbol_handling" target_so_ops method.
-/*
-
- LOCAL FUNCTION
-
- irix_special_symbol_handling -- additional shared library symbol handling
-
- SYNOPSIS
-
- void irix_special_symbol_handling ()
-
- DESCRIPTION
-
- Once the symbols from a shared object have been loaded in the usual
- way, we are called to do any system specific symbol handling that
- is needed.
-
- For SunOS4, this consisted of grunging around in the dynamic
- linkers structures to find symbol definitions for "common" symbols
- and adding them to the minimal symbol table for the runtime common
- objfile.
-
- However, for IRIX, there's nothing to do.
-
- */
+ For IRIX, there's nothing to do. */
static void
irix_special_symbol_handling (void)
}
-/*
-
- LOCAL FUNCTION
-
- locate_base -- locate the base address of dynamic linker structs
-
- SYNOPSIS
-
- CORE_ADDR locate_base (void)
-
- DESCRIPTION
+/* Locate the base address of dynamic linker structs.
For both the SunOS and SVR4 shared library implementations, if the
inferior executable has been linked dynamically, there is a single
to a lot more work to discover the address of the debug base symbol.
Because of this complexity, we cache the value we find and return that
value on subsequent invocations. Note there is no copy in the
- executable symbol tables.
-
- */
+ executable symbol tables. */
static CORE_ADDR
locate_base (void)
return (0);
}
-/*
-
- LOCAL FUNCTION
-
- first_link_map_member -- locate first member in dynamic linker's map
-
- SYNOPSIS
-
- static CORE_ADDR first_link_map_member (void)
-
- DESCRIPTION
+/* Locate first member in dynamic linker's map.
Find the first element in the inferior's dynamic link map, and
return its address in the inferior. This function doesn't copy the
}
-/* LOCAL FUNCTION
-
- current_sos -- build a list of currently loaded shared objects
-
- SYNOPSIS
-
- struct so_list *current_sos ()
-
- DESCRIPTION
-
- Build a list of `struct so_list' objects describing the shared
- objects currently loaded in the inferior. This list does not
- include an entry for the main executable file.
-
- Note that we only gather information directly available from the
- inferior --- we don't examine any of the shared library files
- themselves. The declaration of `struct so_list' says which fields
- we provide values for. */
+/* Implement the "current_sos" target_so_ops method. */
static struct so_list *
sunos_current_sos (void)
return 0;
}
-/*
-
- LOCAL FUNCTION
-
- disable_break -- remove the "mapping changed" breakpoint
-
- SYNOPSIS
-
- static int disable_break ()
-
- DESCRIPTION
+/* Remove the "mapping changed" breakpoint.
Removes the breakpoint that gets hit when the dynamic linker
- completes a mapping change.
-
- */
+ completes a mapping change. */
static int
disable_break (void)
return 1;
}
-
-/*
-
- LOCAL FUNCTION
-
- enable_break -- arrange for dynamic linker to hit breakpoint
-
- SYNOPSIS
-
- int enable_break (void)
-
- DESCRIPTION
+/* Arrange for dynamic linker to hit breakpoint.
Both the SunOS and the SVR4 dynamic linkers have, as part of their
debugger interface, support for arranging for the inferior to hit
The debugger interface structure also contains an enumeration which
is set to either RT_ADD or RT_DELETE prior to changing the mapping,
- depending upon whether or not the library is being mapped or unmapped,
- and then set to RT_CONSISTENT after the library is mapped/unmapped.
- */
+ depending upon whether or not the library is being mapped or
+ unmapped, and then set to RT_CONSISTENT after the library is
+ mapped/unmapped. */
static int
enable_break (void)
return (success);
}
-/*
-
- LOCAL FUNCTION
-
- special_symbol_handling -- additional shared library symbol handling
-
- SYNOPSIS
-
- void special_symbol_handling ()
-
- DESCRIPTION
-
- Once the symbols from a shared object have been loaded in the usual
- way, we are called to do any system specific symbol handling that
- is needed.
+/* Implement the "special_symbol_handling" target_so_ops method.
For SunOS4, this consists of grunging around in the dynamic
linkers structures to find symbol definitions for "common" symbols
and adding them to the minimal symbol table for the runtime common
- objfile.
-
- */
+ objfile. */
static void
sunos_special_symbol_handling (void)
}
}
-/*
-
- GLOBAL FUNCTION
-
- sunos_solib_create_inferior_hook -- shared library startup support
-
- SYNOPSIS
-
- void sunos_solib_create_inferior_hook ()
-
- DESCRIPTION
-
- When gdb starts up the inferior, it nurses it along (through the
- shell) until it is ready to execute it's first instruction. At this
- point, this function gets called via expansion of the macro
- SOLIB_CREATE_INFERIOR_HOOK.
+/* Implement the "create_inferior_hook" target_solib_ops method.
For SunOS executables, this first instruction is typically the
one at "_start", or a similar text label, regardless of whether
startup code takes care of dynamically linking in any shared
libraries, once gdb allows the inferior to continue.
- For SVR4 executables, this first instruction is either the first
- instruction in the dynamic linker (for dynamically linked
- executables) or the instruction at "start" for statically linked
- executables. For dynamically linked executables, the system
- first exec's /lib/libc.so.N, which contains the dynamic linker,
- and starts it running. The dynamic linker maps in any needed
- shared libraries, maps in the actual user executable, and then
- jumps to "start" in the user executable.
-
- For both SunOS shared libraries, and SVR4 shared libraries, we
- can arrange to cooperate with the dynamic linker to discover the
- names of shared libraries that are dynamically linked, and the
- base addresses to which they are linked.
+ We can arrange to cooperate with the dynamic linker to discover the
+ names of shared libraries that are dynamically linked, and the base
+ addresses to which they are linked.
This function is responsible for discovering those names and
addresses, and saving sufficient information about them to allow
handling will probably have to wait until the implementation is
changed to use the "breakpoint handler function" method.
- Also, what if child has exit()ed? Must exit loop somehow.
- */
+ Also, what if child has exit()ed? Must exit loop somehow. */
static void
sunos_solib_create_inferior_hook (int from_tty)
static int match_main (const char *);
-/*
-
- LOCAL FUNCTION
-
- bfd_lookup_symbol -- lookup the value for a specific symbol
-
- SYNOPSIS
-
- CORE_ADDR bfd_lookup_symbol (bfd *abfd, char *symname)
-
- DESCRIPTION
+/* Lookup the value for a specific symbol.
An expensive way to lookup the value of a single symbol for
bfd's that are only temporary anyway. This is used by the
if this architecture uses function descriptors.
Note that 0 is specifically allowed as an error return (no
- such symbol).
- */
+ such symbol). */
static CORE_ADDR
bfd_lookup_symbol (bfd *abfd, const char *symname)
return 0;
}
-
-/*
-
- LOCAL FUNCTION
-
- elf_locate_base -- locate the base address of dynamic linker structs
- for SVR4 elf targets.
-
- SYNOPSIS
-
- CORE_ADDR elf_locate_base (void)
-
- DESCRIPTION
+/* Locate the base address of dynamic linker structs for SVR4 elf
+ targets.
For SVR4 elf targets the address of the dynamic linker's runtime
structure is contained within the dynamic info section in the
real address before starting the inferior, we have to read in the
dynamic info section from the inferior address space.
If there are any errors while trying to find the address, we
- silently return 0, otherwise the found address is returned.
-
- */
+ silently return 0, otherwise the found address is returned. */
static CORE_ADDR
elf_locate_base (void)
return 0;
}
-/*
-
- LOCAL FUNCTION
-
- locate_base -- locate the base address of dynamic linker structs
-
- SYNOPSIS
-
- CORE_ADDR locate_base (struct svr4_info *)
-
- DESCRIPTION
+/* Locate the base address of dynamic linker structs.
For both the SunOS and SVR4 shared library implementations, if the
inferior executable has been linked dynamically, there is a single
to a lot more work to discover the address of the debug base symbol.
Because of this complexity, we cache the value we find and return that
value on subsequent invocations. Note there is no copy in the
- executable symbol tables.
-
- */
+ executable symbol tables. */
static CORE_ADDR
locate_base (struct svr4_info *info)
return (name_lm >= vaddr && name_lm < vaddr + size);
}
-/*
-
- LOCAL FUNCTION
-
- open_symbol_file_object
+/* Implement the "open_symbol_file_object" target_so_ops method.
- SYNOPSIS
-
- void open_symbol_file_object (void *from_tty)
-
- DESCRIPTION
-
- If no open symbol file, attempt to locate and open the main symbol
- file. On SVR4 systems, this is the first link map entry. If its
- name is here, we can open it. Useful when attaching to a process
- without first loading its symbol file.
-
- If FROM_TTYP dereferences to a non-zero integer, allow messages to
- be printed. This parameter is a pointer rather than an int because
- open_symbol_file_object() is called via catch_errors() and
- catch_errors() requires a pointer argument. */
+ If no open symbol file, attempt to locate and open the main symbol
+ file. On SVR4 systems, this is the first link map entry. If its
+ name is here, we can open it. Useful when attaching to a process
+ without first loading its symbol file. */
static int
open_symbol_file_object (void *from_ttyp)
return head;
}
-/* LOCAL FUNCTION
-
- current_sos -- build a list of currently loaded shared objects
-
- SYNOPSIS
-
- struct so_list *current_sos ()
-
- DESCRIPTION
-
- Build a list of `struct so_list' objects describing the shared
- objects currently loaded in the inferior. This list does not
- include an entry for the main executable file.
-
- Note that we only gather information directly available from the
- inferior --- we don't examine any of the shared library files
- themselves. The declaration of `struct so_list' says which fields
- we provide values for. */
+/* Implement the "current_sos" target_so_ops method. */
static struct so_list *
svr4_current_sos (void)
targ);
}
-/*
-
- LOCAL FUNCTION
-
- enable_break -- arrange for dynamic linker to hit breakpoint
-
- SYNOPSIS
-
- int enable_break (void)
-
- DESCRIPTION
+/* Arrange for dynamic linker to hit breakpoint.
Both the SunOS and the SVR4 dynamic linkers have, as part of their
debugger interface, support for arranging for the inferior to hit
The debugger interface structure also contains an enumeration which
is set to either RT_ADD or RT_DELETE prior to changing the mapping,
depending upon whether or not the library is being mapped or unmapped,
- and then set to RT_CONSISTENT after the library is mapped/unmapped.
- */
+ and then set to RT_CONSISTENT after the library is mapped/unmapped. */
static int
enable_break (struct svr4_info *info, int from_tty)
return 0;
}
-/*
-
- LOCAL FUNCTION
-
- special_symbol_handling -- additional shared library symbol handling
-
- SYNOPSIS
-
- void special_symbol_handling ()
-
- DESCRIPTION
-
- Once the symbols from a shared object have been loaded in the usual
- way, we are called to do any system specific symbol handling that
- is needed.
-
- For SunOS4, this consisted of grunging around in the dynamic
- linkers structures to find symbol definitions for "common" symbols
- and adding them to the minimal symbol table for the runtime common
- objfile.
-
- However, for SVR4, there's nothing to do.
-
- */
+/* Implement the "special_symbol_handling" target_so_ops method. */
static void
svr4_special_symbol_handling (void)
{
+ /* Nothing to do. */
}
/* Read the ELF program headers from ABFD. Return the contents and
}
}
-/*
-
- GLOBAL FUNCTION
-
- svr4_solib_create_inferior_hook -- shared library startup support
-
- SYNOPSIS
-
- void svr4_solib_create_inferior_hook (int from_tty)
-
- DESCRIPTION
-
- When gdb starts up the inferior, it nurses it along (through the
- shell) until it is ready to execute it's first instruction. At this
- point, this function gets called via expansion of the macro
- SOLIB_CREATE_INFERIOR_HOOK.
-
- For SunOS executables, this first instruction is typically the
- one at "_start", or a similar text label, regardless of whether
- the executable is statically or dynamically linked. The runtime
- startup code takes care of dynamically linking in any shared
- libraries, once gdb allows the inferior to continue.
+/* Implement the "create_inferior_hook" target_solib_ops method.
For SVR4 executables, this first instruction is either the first
instruction in the dynamic linker (for dynamically linked
shared libraries, maps in the actual user executable, and then
jumps to "start" in the user executable.
- For both SunOS shared libraries, and SVR4 shared libraries, we
- can arrange to cooperate with the dynamic linker to discover the
- names of shared libraries that are dynamically linked, and the
- base addresses to which they are linked.
+ We can arrange to cooperate with the dynamic linker to discover the
+ names of shared libraries that are dynamically linked, and the base
+ addresses to which they are linked.
This function is responsible for discovering those names and
addresses, and saving sufficient information about them to allow
handling will probably have to wait until the implementation is
changed to use the "breakpoint handler function" method.
- Also, what if child has exit()ed? Must exit loop somehow.
- */
+ Also, what if child has exit()ed? Must exit loop somehow. */
static void
svr4_solib_create_inferior_hook (int from_tty)
# define DOS_BASED_FILE_SYSTEM 0
#endif
-/*
-
- GLOBAL FUNCTION
-
- solib_find -- Find a shared library file.
-
- SYNOPSIS
-
- char *solib_find (char *in_pathname, int *fd);
-
- DESCRIPTION
+/* Returns the full pathname of the shared library file, or NULL if
+ not found. (The pathname is malloc'ed; it needs to be freed by the
+ caller.) *FD is set to either -1 or an open file handle for the
+ library.
Global variable GDB_SYSROOT is used as a prefix directory
to search for shared libraries if they have an absolute path.
*
* The last check avoids doing this search when targetting remote
* machines since gdb_sysroot will almost always be set.
-
- RETURNS
-
- Full pathname of the shared library file, or NULL if not found.
- (The pathname is malloc'ed; it needs to be freed by the caller.)
- *FD is set to either -1 or an open file handle for the library. */
+*/
char *
solib_find (char *in_pathname, int *fd)
return abfd;
}
+/* Given a pointer to one of the shared objects in our list of mapped
+ objects, use the recorded name to open a bfd descriptor for the
+ object, build a section table, relocate all the section addresses
+ by the base address at which the shared object was mapped, and then
+ add the sections to the target's section table.
-/*
-
- LOCAL FUNCTION
-
- solib_map_sections -- open bfd and build sections for shared lib
-
- SYNOPSIS
-
- static int solib_map_sections (struct so_list *so)
-
- DESCRIPTION
-
- Given a pointer to one of the shared objects in our list
- of mapped objects, use the recorded name to open a bfd
- descriptor for the object, build a section table, and then
- relocate all the section addresses by the base address at
- which the shared object was mapped.
-
- FIXMES
-
- In most (all?) cases the shared object file name recorded in the
- dynamic linkage tables will be a fully qualified pathname. For
+ FIXME: In most (all?) cases the shared object file name recorded in
+ the dynamic linkage tables will be a fully qualified pathname. For
cases where it isn't, do we really mimic the systems search
mechanism correctly in the below code (particularly the tilde
- expansion stuff?).
- */
+ expansion stuff?). */
static int
solib_map_sections (struct so_list *so)
strcpy (so->so_name, so->so_original_name);
}
-/* LOCAL FUNCTION
-
- free_so --- free a `struct so_list' object
-
- SYNOPSIS
-
- void free_so (struct so_list *so)
-
- DESCRIPTION
-
- Free the storage associated with the `struct so_list' object SO.
+/* Free the storage associated with the `struct so_list' object SO.
If we have opened a BFD for SO, close it.
The caller is responsible for removing SO from whatever list it is
return 0;
}
-/* LOCAL FUNCTION
-
- update_solib_list --- synchronize GDB's shared object list with inferior's
-
- SYNOPSIS
-
- void update_solib_list (int from_tty, struct target_ops *TARGET)
+/* Synchronize GDB's shared object list with inferior's.
Extract the list of currently loaded shared objects from the
inferior, and compare it with the list of shared objects currently
return libpthread_name_p (so->so_name);
}
-/* GLOBAL FUNCTION
-
- solib_add -- read in symbol info for newly added shared libraries
-
- SYNOPSIS
-
- void solib_add (char *pattern, int from_tty, struct target_ops
- *TARGET, int readsyms)
-
- DESCRIPTION
-
- Read in symbolic information for any shared objects whose names
+/* Read in symbolic information for any shared objects whose names
match PATTERN. (If we've already read a shared object's symbol
info, leave it alone.) If PATTERN is zero, read them all.
}
}
-
-/*
-
- LOCAL FUNCTION
-
- info_sharedlibrary_command -- code for "info sharedlibrary"
-
- SYNOPSIS
-
- static void info_sharedlibrary_command ()
-
- DESCRIPTION
-
- Walk through the shared library list and print information
- about each attached library matching PATTERN. If PATTERN is elided,
- print them all.
- */
+/* Implement the "info sharedlibrary" command. Walk through the
+ shared library list and print information about each attached
+ library matching PATTERN. If PATTERN is elided, print them
+ all. */
static void
info_sharedlibrary_command (char *pattern, int from_tty)
return 0;
}
-/*
-
- GLOBAL FUNCTION
-
- solib_name_from_address -- if an address is in a shared lib, return
- its name.
-
- SYNOPSIS
+/* If ADDRESS is in a shared lib in program space PSPACE, return its
+ name.
- char * solib_name_from_address (CORE_ADDR address)
-
- DESCRIPTION
-
- Provides a hook for other gdb routines to discover whether or
- not a particular address is within the mapped address space of
- a shared library.
+ Provides a hook for other gdb routines to discover whether or not a
+ particular address is within the mapped address space of a shared
+ library.
For example, this routine is called at one point to disable
breakpoints which are in shared libraries that are not currently
- mapped in.
- */
+ mapped in. */
char *
solib_name_from_address (struct program_space *pspace, CORE_ADDR address)
ops->clear_solib ();
}
-/* GLOBAL FUNCTION
-
- solib_create_inferior_hook -- shared library startup support
-
- SYNOPSIS
-
- void solib_create_inferior_hook (int from_tty)
-
- DESCRIPTION
-
- When gdb starts up the inferior, it nurses it along (through the
- shell) until it is ready to execute it's first instruction. At this
- point, this function gets called via expansion of the macro
- SOLIB_CREATE_INFERIOR_HOOK. */
+/* Shared library startup support. When GDB starts up the inferior,
+ it nurses it along (through the shell) until it is ready to execute
+ its first instruction. At this point, this function gets
+ called. */
void
solib_create_inferior_hook (int from_tty)
ops->solib_create_inferior_hook (from_tty);
}
-/* GLOBAL FUNCTION
-
- in_solib_dynsym_resolve_code -- check to see if an address is in
- dynamic loader's dynamic symbol
- resolution code
-
- SYNOPSIS
-
- int in_solib_dynsym_resolve_code (CORE_ADDR pc)
-
- DESCRIPTION
-
- Determine if PC is in the dynamic linker's symbol resolution
- code. Return 1 if so, 0 otherwise.
-*/
+/* Check to see if an address is in the dynamic loader's dynamic
+ symbol resolution code. Return 1 if so, 0 otherwise. */
int
in_solib_dynsym_resolve_code (CORE_ADDR pc)
return ops->in_dynsym_resolve_code (pc);
}
-/*
-
- LOCAL FUNCTION
-
- sharedlibrary_command -- handle command to explicitly add library
-
- SYNOPSIS
-
- static void sharedlibrary_command (char *args, int from_tty)
-
- DESCRIPTION
-
- */
+/* Implements the "sharedlibrary" command. */
static void
sharedlibrary_command (char *args, int from_tty)
solib_add (args, from_tty, (struct target_ops *) 0, 1);
}
-/* LOCAL FUNCTION
-
- no_shared_libraries -- handle command to explicitly discard symbols
- from shared libraries.
-
- DESCRIPTION
-
- Implements the command "nosharedlibrary", which discards symbols
+/* Implements the command "nosharedlibrary", which discards symbols
that have been auto-loaded from shared libraries. Symbols from
shared libraries that were added by explicit request of the user
are not discarded. Also called from remote.c. */
/* Target dependent code to run after child process fork. */
void (*solib_create_inferior_hook) (int from_tty);
- /* Do additional symbol handling, lookup, etc. after symbols
- for a shared object have been loaded. */
+ /* Do additional symbol handling, lookup, etc. after symbols for a
+ shared object have been loaded in the usual way. This is
+ called to do any system specific symbol handling that might be
+ needed. */
void (*special_symbol_handling) (void);
- /* Construct a list of the currently loaded shared objects. */
+ /* Construct a list of the currently loaded shared objects. This
+ list does not include an entry for the main executable file.
+
+ Note that we only gather information directly available from the
+ inferior --- we don't examine any of the shared library files
+ themselves. The declaration of `struct so_list' says which fields
+ we provide values for. */
struct so_list *(*current_sos) (void);
- /* Find, open, and read the symbols for the main executable. */
+ /* Find, open, and read the symbols for the main executable. If
+ FROM_TTYP dereferences to a non-zero integer, allow messages to
+ be printed. This parameter is a pointer rather than an int
+ because open_symbol_file_object is called via catch_errors and
+ catch_errors requires a pointer argument. */
int (*open_symbol_file_object) (void *from_ttyp);
/* Determine if PC lies in the dynamic symbol resolution code of
#include "solib-som.h"
-/*
-
- LOCAL FUNCTION
-
- som_symtab_read -- read the symbol table of a SOM file
-
- SYNOPSIS
-
- void som_symtab_read (bfd *abfd, struct objfile *objfile,
- struct section_offsets *section_offsets)
-
- DESCRIPTION
+/* Read the symbol table of a SOM file.
Given an open bfd, a base address to relocate symbols to, and a
flag that specifies whether or not this bfd is for an executable
or not (may be shared library for example), add all the global
- function and data symbols to the minimal symbol table.
- */
+ function and data symbols to the minimal symbol table. */
static void
som_symtab_read (bfd *abfd, struct objfile *objfile,