mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 03:29:47 +08:00
2000-03-11 Mark Kettenis <kettenis@gnu.org>
* i386gnu-nat.c (gnu_store_registers): Make sure the T bit in the %eflags isn't modified. This fixes a bug where every call to a function in the program beyond the first call would fail.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2000-03-11 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
|
* i386gnu-nat.c (gnu_store_registers): Make sure the T bit in the
|
||||||
|
%eflags isn't modified. This fixes a bug where every call to a
|
||||||
|
function in the program beyond the first call would fail.
|
||||||
|
|
||||||
2000-03-10 Daniel Berlin <dan@cgsoftware.com>
|
2000-03-10 Daniel Berlin <dan@cgsoftware.com>
|
||||||
Fix C++ overloading, add support for seeing through references.
|
Fix C++ overloading, add support for seeing through references.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Low level interface to i386 running the GNU Hurd.
|
/* Low level interface to i386 running the GNU Hurd.
|
||||||
Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc.
|
Copyright (C) 1992, 1995, 1996, 2000 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
|
||||||
@ -265,6 +265,7 @@ gnu_store_registers (int regno)
|
|||||||
thread_state_data_t old_state;
|
thread_state_data_t old_state;
|
||||||
int was_aborted = thread->aborted;
|
int was_aborted = thread->aborted;
|
||||||
int was_valid = thread->state_valid;
|
int was_valid = thread->state_valid;
|
||||||
|
int trace;
|
||||||
|
|
||||||
if (!was_aborted && was_valid)
|
if (!was_aborted && was_valid)
|
||||||
memcpy (&old_state, &thread->state, sizeof (old_state));
|
memcpy (&old_state, &thread->state, sizeof (old_state));
|
||||||
@ -276,6 +277,10 @@ gnu_store_registers (int regno)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Save the T bit. We might try to restore the %eflags register
|
||||||
|
below, but changing the T bit would seriously confuse GDB. */
|
||||||
|
trace = ((struct i386_thread_state *)state)->efl & 0x100;
|
||||||
|
|
||||||
if (!was_aborted && was_valid)
|
if (!was_aborted && was_valid)
|
||||||
/* See which registers have changed after aborting the thread. */
|
/* See which registers have changed after aborting the thread. */
|
||||||
{
|
{
|
||||||
@ -319,6 +324,10 @@ gnu_store_registers (int regno)
|
|||||||
assert (register_valid[regno]);
|
assert (register_valid[regno]);
|
||||||
fill (state, regno);
|
fill (state, regno);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Restore the T bit. */
|
||||||
|
((struct i386_thread_state *)state)->efl &= ~0x100;
|
||||||
|
((struct i386_thread_state *)state)->efl |= trace;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef fill
|
#undef fill
|
||||||
|
Reference in New Issue
Block a user