diff options
| author | David E. O'Brien <obrien@FreeBSD.org> | 2000-07-06 22:08:50 +0000 |
|---|---|---|
| committer | David E. O'Brien <obrien@FreeBSD.org> | 2000-07-06 22:08:50 +0000 |
| commit | 2390f50b84f70ada9259624e9b5341dd563ecfec (patch) | |
| tree | 398f5fe577704ad3d872a6070bcc079d9d77ec30 | |
| parent | 7d9490d9dff399b936767bb0df8b820f9820756f (diff) | |
Notes
| -rw-r--r-- | gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c b/gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c index 84c121d8e50f..8dd81d16d1b6 100644 --- a/gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c +++ b/gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c @@ -1,3 +1,4 @@ +/* $FreeBSD$ */ /* Native-dependent code for BSD Unix running on i386's, for GDB. Copyright 1988, 1989, 1991, 1992, 1994, 1996 Free Software Foundation, Inc. @@ -345,20 +346,9 @@ i386_float_info () uaddr = (char *)&U_FPSTATE(u) - (char *)&u; if (inferior_pid != 0 && core_bfd == NULL) { - int *ip; - - rounded_addr = uaddr & -sizeof (int); - rounded_size = (((uaddr + sizeof (struct fpstate)) - uaddr) + - sizeof (int) - 1) / sizeof (int); - skip = uaddr - rounded_addr; - - ip = (int *)buf; - for (i = 0; i < rounded_size; i++) - { - *ip++ = ptrace (PT_READ_U, inferior_pid, (caddr_t)rounded_addr, 0); - rounded_addr += sizeof (int); - } - fpstatep = (struct fpstate *)(buf + skip); + int pid = inferior_pid & ((1 << 17) - 1); /* XXX extract pid from tid */ + ptrace(PT_GETFPREGS, pid, &buf[0], sizeof(struct fpreg)); + fpstatep = (struct fpstate *)&buf[0]; } else fpstatep = &pcb_savefpu; |
