Tue Apr 25 13:51:58 2000 glen mccready <gkm@pobox.com>

* rs6000-nat.c (xcoff_relocate_symtam): Recover from the wrong
	patch being applied `Fri Apr  7 13:44:38 2000'.
This commit is contained in:
Glen McCready 2000-04-25 17:55:36 +00:00
parent 730a39a0a3
commit 380b774b2d
2 changed files with 23 additions and 19 deletions

View File

@ -1,3 +1,8 @@
Tue Apr 25 13:51:58 2000 glen mccready <gkm@pobox.com>
* rs6000-nat.c (xcoff_relocate_symtam): Recover from the wrong
patch being applied `Fri Apr 7 13:44:38 2000'.
2000-04-24 Kevin Buettner <kevinb@redhat.com>
* ia64-linux-tdep.c: New file.

View File

@ -640,39 +640,38 @@ xcoff_relocate_symtab (pid)
unsigned int pid;
{
int load_segs = 64; /* number of load segments */
int rc;
struct ld_info *ldi = NULL;
do
{
struct ld_info *ldi;
int rc;
ldi = (void *) xrealloc (ldi, load_segs * sizeof (*ldi));
ldi = (void *) alloca (load_segs * sizeof (*ldi));
if (ldi == 0)
perror_with_name ("xcoff_relocate_symtab");
/* According to my humble theory, AIX has some timing problems and
when the user stack grows, kernel doesn't update stack info in time
and ptrace calls step on user stack. That is why we sleep here a
little, and give kernel to update its internals. */
/* According to my humble theory, AIX has some timing problems and
when the user stack grows, kernel doesn't update stack info in time
and ptrace calls step on user stack. That is why we sleep here a little,
and give kernel to update its internals. */
usleep (36000);
usleep (36000);
errno = 0;
errno = 0;
rc = ptrace (PT_LDINFO, pid, (PTRACE_ARG3_TYPE) ldi,
load_segs * sizeof (*ldi), (int *) ldi);
load_segs * sizeof (*ldi), (int *) ldi);
if (rc == -1)
{
if (errno == ENOMEM)
load_segs *= 2;
else
perror_with_name ("ptrace ldinfo");
if (errno == ENOMEM)
load_segs *= 2;
else
perror_with_name ("ptrace ldinfo");
}
else
{
vmap_ldinfo (ldi);
vmap_exec (); /* relocate the exec and core sections as well. */
vmap_ldinfo (ldi);
vmap_exec (); /* relocate the exec and core sections as well. */
}
} while (rc == -1);
if (ldi)
free (ldi);
}
/* Core file stuff. */