* Makefile.in (xcoffread.o): Depend on partial-stab.h.
* xcoffsolib.c (sharedlibrary_command): New command. * xcoffsolib.c (solib_info): Call xcoff_relocate_symtab. * xcoffsolib.c: Miscellaneous cleanups. * partial-stab.h: Ignore symbol descriptor '-' (for local variables with negative type numbers) without complaint. * rs6000-nat.c (vmap_ldinfo): Use bfd_stat rather than our own local emulation thereof. Remove unused variable ostart.
This commit is contained in:
parent
8558c4e316
commit
fb49432789
4 changed files with 66 additions and 45 deletions
|
@ -1,3 +1,17 @@
|
|||
Wed May 17 11:21:32 1995 Jim Kingdon <kingdon@deneb.cygnus.com>
|
||||
|
||||
* Makefile.in (xcoffread.o): Depend on partial-stab.h.
|
||||
|
||||
* xcoffsolib.c (sharedlibrary_command): New command.
|
||||
* xcoffsolib.c (solib_info): Call xcoff_relocate_symtab.
|
||||
* xcoffsolib.c: Miscellaneous cleanups.
|
||||
|
||||
* partial-stab.h: Ignore symbol descriptor '-' (for local
|
||||
variables with negative type numbers) without complaint.
|
||||
|
||||
* rs6000-nat.c (vmap_ldinfo): Use bfd_stat rather than our own
|
||||
local emulation thereof. Remove unused variable ostart.
|
||||
|
||||
Wed May 17 15:55:53 1995 J.T. Conklin <jtc@rtl.cygnus.com>
|
||||
|
||||
* Makefile.in (config.status): changed target so that
|
||||
|
|
|
@ -593,6 +593,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
|||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
case '-':
|
||||
continue;
|
||||
|
||||
case ':':
|
||||
|
|
|
@ -435,7 +435,6 @@ vmap_ldinfo (ldi)
|
|||
struct stat ii, vi;
|
||||
register struct vmap *vp;
|
||||
int got_one, retried;
|
||||
CORE_ADDR ostart;
|
||||
int got_exec_file;
|
||||
|
||||
/* For each *ldi, see if we have a corresponding *vp.
|
||||
|
@ -453,8 +452,6 @@ vmap_ldinfo (ldi)
|
|||
retry:
|
||||
for (got_one = 0, vp = vmap; vp; vp = vp->nxt)
|
||||
{
|
||||
FILE *io;
|
||||
|
||||
/* First try to find a `vp', which is the same as in ldinfo.
|
||||
If not the same, just continue and grep the next `vp'. If same,
|
||||
relocate its tstart, tend, dstart, dend values. If no such `vp'
|
||||
|
@ -467,14 +464,14 @@ vmap_ldinfo (ldi)
|
|||
|| (memb[0] && !STREQ(memb, vp->member)))
|
||||
continue;
|
||||
|
||||
io = bfd_cache_lookup (vp->bfd); /* totally opaque! */
|
||||
if (!io)
|
||||
fatal ("cannot find BFD's iostream for %s", vp->name);
|
||||
|
||||
/* See if we are referring to the same file. */
|
||||
/* An error here is innocuous, most likely meaning that
|
||||
the file descriptor has become worthless. */
|
||||
if (fstat (fileno(io), &vi) < 0)
|
||||
if (bfd_stat (vp->bfd, &vi) < 0)
|
||||
/* An error here is innocuous, most likely meaning that
|
||||
the file descriptor has become worthless.
|
||||
FIXME: What does it mean for a file descriptor to become
|
||||
"worthless"? What makes it happen? What error does it
|
||||
produce (ENOENT? others?)? Should we at least provide
|
||||
a warning? */
|
||||
continue;
|
||||
|
||||
if (ii.st_dev != vi.st_dev || ii.st_ino != vi.st_ino)
|
||||
|
@ -485,8 +482,7 @@ vmap_ldinfo (ldi)
|
|||
|
||||
++got_one;
|
||||
|
||||
/* found a corresponding VMAP. remap! */
|
||||
ostart = vp->tstart;
|
||||
/* Found a corresponding VMAP. Remap! */
|
||||
|
||||
/* We can assume pointer == CORE_ADDR, this code is native only. */
|
||||
vp->tstart = (CORE_ADDR) ldi->ldinfo_textorg;
|
||||
|
@ -507,7 +503,7 @@ vmap_ldinfo (ldi)
|
|||
/* relocate symbol table(s). */
|
||||
vmap_symtab (vp);
|
||||
|
||||
/* there may be more, so we don't break out of the loop. */
|
||||
/* There may be more, so we don't break out of the loop. */
|
||||
}
|
||||
|
||||
/* if there was no matching *vp, we must perforce create the sucker(s) */
|
||||
|
|
|
@ -18,12 +18,15 @@ You should have received a copy of the GNU General Public License
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
#if 0
|
||||
#include <sys/types.h>
|
||||
#include <sys/ldr.h>
|
||||
#endif
|
||||
|
||||
#include "defs.h"
|
||||
#include "bfd.h"
|
||||
#include "xcoffsolib.h"
|
||||
#include "inferior.h"
|
||||
|
||||
#ifdef SOLIB_SYMBOLS_MANUAL
|
||||
|
||||
|
@ -146,56 +149,63 @@ CORE_ADDR addr;
|
|||
return "(unknown load module)";
|
||||
}
|
||||
|
||||
static void solib_info PARAMS ((char *, int));
|
||||
|
||||
solib_info (ldi)
|
||||
register struct ld_info *ldi;
|
||||
static void
|
||||
solib_info (args, from_tty)
|
||||
char *args;
|
||||
int from_tty;
|
||||
{
|
||||
struct vmap *vp = vmap;
|
||||
|
||||
struct vmap *vp = vmap;
|
||||
/* Check for new shared libraries loaded with load (). */
|
||||
xcoff_relocate_symtab (inferior_pid);
|
||||
|
||||
if (!vp || !vp->nxt) {
|
||||
printf_unfiltered("No shared libraries loaded at this time.\n");
|
||||
return;
|
||||
}
|
||||
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;
|
||||
/* Skip over the first vmap, it is the main program, always loaded. */
|
||||
vp = vp->nxt;
|
||||
|
||||
printf_unfiltered ("\
|
||||
printf_unfiltered ("\
|
||||
Text Range Data Range Syms Shared Object Library\n");
|
||||
|
||||
for (; vp; vp = vp->nxt) {
|
||||
|
||||
printf_unfiltered ("0x%08x-0x%08x 0x%08x-0x%08x %s %s%s%s%s\n",
|
||||
vp->tstart, vp->tend,
|
||||
vp->dstart, vp->dend,
|
||||
vp->loaded ? "Yes" : "No ",
|
||||
*vp->member ? "(" : "",
|
||||
vp->member,
|
||||
*vp->member ? ") " : "",
|
||||
vp->name);
|
||||
}
|
||||
for (; vp != NULL; vp = vp->nxt)
|
||||
{
|
||||
printf_unfiltered ("0x%08x-0x%08x 0x%08x-0x%08x %s %s%s%s%s\n",
|
||||
vp->tstart, vp->tend,
|
||||
vp->dstart, vp->dend,
|
||||
vp->loaded ? "Yes" : "No ",
|
||||
*vp->member ? "(" : "",
|
||||
vp->member,
|
||||
*vp->member ? ") " : "",
|
||||
vp->name);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef SOLIB_SYMBOLS_MANUAL
|
||||
void
|
||||
sharedlibrary_command (args, from_tty)
|
||||
char *args;
|
||||
int from_tty;
|
||||
char *args;
|
||||
int from_tty;
|
||||
{
|
||||
dont_repeat();
|
||||
dont_repeat ();
|
||||
|
||||
/* Check for new shared libraries loaded with load (). */
|
||||
xcoff_relocate_symtab (inferior_pid);
|
||||
|
||||
#ifdef SOLIB_SYMBOLS_MANUAL
|
||||
solib_add (args, from_tty, (struct target_ops *)0);
|
||||
}
|
||||
#endif /* SOLIB_SYMBOLS_MANUAL */
|
||||
}
|
||||
|
||||
void
|
||||
_initialize_solib()
|
||||
{
|
||||
|
||||
#ifdef SOLIB_SYMBOLS_MANUAL
|
||||
add_com("sharedlibrary", class_files, sharedlibrary_command,
|
||||
add_com ("sharedlibrary", class_files, sharedlibrary_command,
|
||||
"Load shared object library symbols for files matching REGEXP.");
|
||||
#endif
|
||||
add_info("sharedlibrary", solib_info,
|
||||
"Status of loaded shared object libraries");
|
||||
add_info ("sharedlibrary", solib_info,
|
||||
"Status of loaded shared object libraries");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue