diff options
author | Joel Brobecker <brobecker@gnat.com> | 2013-05-06 14:15:50 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2013-05-06 14:15:50 +0000 |
commit | 4d1eb6b4d299f3e46aab18e08fe4ef3063a39565 (patch) | |
tree | 3f3c26c9dc0c529c96fc4d2b5ddfa6ca61fabc1d /gdb/xcoffsolib.c | |
parent | 0c4f667cfe5118bf3a2690502a9a40ff3309abed (diff) | |
download | gdb-4d1eb6b4d299f3e46aab18e08fe4ef3063a39565.zip gdb-4d1eb6b4d299f3e46aab18e08fe4ef3063a39565.tar.gz gdb-4d1eb6b4d299f3e46aab18e08fe4ef3063a39565.tar.bz2 |
Reimplement shared library support on ppc-aix...
... using the target_so_ops framework.
gdb/ChangeLog:
* target.h (TARGET_OBJECT_AIX_LIBRARIES): New target_object enum.
* features/library-list-aix.dtd: New file.
* solib-aix.h, solib-aix.c: New file.
* rs6000-aix-tdep.c: #include "solib.h" and "solib-aix.h".
(rs6000_find_toc_address_hook): Delete.
(rs6000_push_dummy_call): Rewrite code setting the TOC value.
(rs6000_aix_init_osabi): Register solib_aix_so_ops.
* rs6000-nat.c: Remove "xcoffsolib.h" include. Include
"xml-utils.h".
(map_vmap, vmap_exec, vmap_ldinfo, add_vmap, objfile_symbol_add)
(vmap_symtab, fixup_breakpoints): Delete.
(rs6000_xfer_shared_libraries): New function.
(rs6000_xfer_partial): Add TARGET_OBJECT_AIX_LIBRARIES handling.
(vmap_secs, bss_data_overlap, vmap_add_symbols): Delete.
(xcoff_relocate_symtab, xcoff_relocate_core): Delete.
(rs6000_ptrace_ldinfo, rs6000_core_ldinfo)
(rs6000_xfer_shared_library): New function.
(find_toc_address): Delete.
(_initialize_rs6000_nat): Do not set rs6000_find_toc_address_hook.
* rs6000-tdep.h (rs6000_find_toc_address_hook): Remove.
* xcoffread.c (record_minimal_symbol): Reloate symbol address
before creating minimal symbol. Adjust function description
accordingly.
(scan_xcoff_symtab): Replace call to
prim_record_minimal_symbol_and_info by call to
record_minimal_symbol.
(xcoff_symfile_offsets): Reimplement mostly as a wrapper
around default_symfile_offsets.
* configure.tgt: Add solib-aix.o to gdb_target_obs for
powerpc-aix targets.
* config/rs6000/nm-rs6000.h: Delete.
* config/powerpc/aix.mh (NAT_FILE): Delete.
(NATDEPFILES): Remove xcoffsolib.o.
* Makefile.in (XMLFILES): Add library-list-aix.dtd.
(ALL_TARGET_OBS): Add solib-aix.o.
(HFILES_NO_SRCDIR): Remove xcoffsolib.h and
config/rs6000/nm-rs6000.h. Add solib-aix.h.
(ALLDEPFILES): Add solib-aix.c. Remove xcoffsolib.c.
* xcoffsolib.h, xcoffsolib.c: Delete.
* solib.c (reload_shared_libraries): Remove reference to
SOLIB_CREATE_INFERIOR_HOOK.
* breakpoint.c (handle_solib_event): Remove reference to SOLIB_ADD.
(disable_breakpoints_in_shlibs): Remove reference to PC_SOLIB.
(momentary_bkpt_re_set): Replace SOLIB_ADD by solib_add in
comment.
* corelow.c (deprecated_core_resize_section_table): Delete.
* exec.c: Remove include of xcoffsolib.h".
(map_vmap, vmap): Delete.
(exec_close_1): Remove references to vmap.
(exec_file_attach): Remove vmap handling code, and reference
to DEPRECATED_IBM6000_TARGET.
(bfdsec_to_vmap): Delete.
(exec_files_info): Remove block of code handling VMAP.
* infcmd.c (post_create_inferior): Remove reference to
SOLIB_CREATE_INFERIOR_HOOK and SOLIB_ADD.
* infrun.c (follow_exec): Remove reference to
SOLIB_CREATE_INFERIOR_HOOK.
* stack.c (print_frame): Remove reference to PC_SOLIB.
* solib-dsbt.c (dsbt_current_sos): Adjust comment.
(dsbt_relocate_main_executable): Likewise.
* solib-frv.c (frv_current_sos): Likewise.
gdb/doc/ChangeLog:
* gdbint.texinfo (Algorithms): Remove entries documenting
DEPRECATED_IBM6000_TARGET, SOLIB_ADD, and
SOLIB_CREATE_INFERIOR_HOOK.
Diffstat (limited to 'gdb/xcoffsolib.c')
-rw-r--r-- | gdb/xcoffsolib.c | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/gdb/xcoffsolib.c b/gdb/xcoffsolib.c deleted file mode 100644 index 069b016..0000000 --- a/gdb/xcoffsolib.c +++ /dev/null @@ -1,182 +0,0 @@ -/* Shared library support for RS/6000 (xcoff) object files, for GDB. - Copyright (C) 1991-2013 Free Software Foundation, Inc. - Contributed by IBM Corporation. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include "defs.h" -#include "bfd.h" -#include "xcoffsolib.h" -#include "inferior.h" -#include "gdbcmd.h" -#include "symfile.h" -#include "frame.h" -#include "gdb_regex.h" - - -/* If ADDR lies in a shared library, return its name. - Note that returned name points to static data whose content is overwritten - by each call. */ - -char * -xcoff_solib_address (CORE_ADDR addr) -{ - static char *buffer = NULL; - struct vmap *vp = vmap; - - /* The first vmap entry is for the exec file. */ - - if (vp == NULL) - return NULL; - for (vp = vp->nxt; vp; vp = vp->nxt) - if (vp->tstart <= addr && addr < vp->tend) - { - xfree (buffer); - buffer = xstrprintf ("%s%s%s%s", - vp->name, - *vp->member ? "(" : "", - vp->member, - *vp->member ? ")" : ""); - return buffer; - } - return NULL; -} - -static void solib_info (char *, int); -static void sharedlibrary_command (char *pattern, int from_tty); - -static void -solib_info (char *args, int from_tty) -{ - int addr_size = gdbarch_addr_bit (target_gdbarch ()) / 8; - struct vmap *vp = vmap; - - /* Check for new shared libraries loaded with load (). */ - if (! ptid_equal (inferior_ptid, null_ptid)) - xcoff_relocate_symtab (PIDGET (inferior_ptid)); - - if (vp == NULL || vp->nxt == NULL) - { - printf_unfiltered ("No shared libraries loaded at this time.\n"); - return; - } - - /* Skip over the first vmap, it is the main program, always loaded. */ - vp = vp->nxt; - - printf_unfiltered ("Text Range Data Range " - "Syms Shared Object Library\n"); - - for (; vp != NULL; vp = vp->nxt) - { - printf_unfiltered ("0x%s-0x%s 0x%s-0x%s %s %s%s%s%s\n", - phex (vp->tstart, addr_size), - phex (vp->tend, addr_size), - phex (vp->dstart, addr_size), - phex (vp->dend, addr_size), - vp->loaded ? "Yes" : "No ", - vp->name, - *vp->member ? "(" : "", - vp->member, - *vp->member ? ")" : ""); - } -} - -static void -sharedlibrary_command (char *pattern, int from_tty) -{ - dont_repeat (); - - /* Check for new shared libraries loaded with load (). */ - if (! ptid_equal (inferior_ptid, null_ptid)) - xcoff_relocate_symtab (PIDGET (inferior_ptid)); - - if (pattern) - { - char *re_err = re_comp (pattern); - - if (re_err) - error (_("Invalid regexp: %s"), re_err); - } - - /* Walk the list of currently loaded shared libraries, and read - symbols for any that match the pattern --- or any whose symbols - aren't already loaded, if no pattern was given. */ - { - int any_matches = 0; - int loaded_any_symbols = 0; - struct vmap *vp = vmap; - - if (!vp) - return; - - /* skip over the first vmap, it is the main program, always loaded. */ - for (vp = vp->nxt; vp; vp = vp->nxt) - if (! pattern - || re_exec (vp->name) - || (*vp->member && re_exec (vp->member))) - { - any_matches = 1; - - if (vp->loaded) - { - if (from_tty) - printf_unfiltered ("Symbols already loaded for %s\n", - vp->name); - } - else - { - if (vmap_add_symbols (vp)) - loaded_any_symbols = 1; - } - } - - if (from_tty && pattern && ! any_matches) - printf_unfiltered - ("No loaded shared libraries match the pattern `%s'.\n", pattern); - - if (loaded_any_symbols) - { - /* Getting new symbols may change our opinion about what is - frameless. */ - reinit_frame_cache (); - } - } -} - -void _initialize_xcoffsolib (void); - -void -_initialize_xcoffsolib (void) -{ - add_com ("sharedlibrary", class_files, sharedlibrary_command, - _("Load shared object library symbols for files matching REGEXP.")); - add_info ("sharedlibrary", solib_info, - _("Status of loaded shared object libraries")); - - add_setshow_boolean_cmd ("auto-solib-add", class_support, - &auto_solib_add, _("\ -Set autoloading of shared library symbols."), _("\ -Show autoloading of shared library symbols."), _("\ -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'."), - NULL, - NULL, /* FIXME: i18n: */ - &setlist, &showlist); -} |