* gdb.texinfo (Breakpoint related warnings): New node.
* gdbint.texinfo (ADJUST_BREAKPOINT_ADDRESS): Document.
This commit is contained in:
parent
2e95240843
commit
1485d690a8
3 changed files with 90 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2003-10-14 Kevin Buettner <kevinb@redhat.com>
|
||||||
|
|
||||||
|
* gdb.texinfo (Breakpoint related warnings): New node.
|
||||||
|
* gdbint.texinfo (ADJUST_BREAKPOINT_ADDRESS): Document.
|
||||||
|
|
||||||
2003-10-13 Daniel Jacobowitz <drow@mvista.com>
|
2003-10-13 Daniel Jacobowitz <drow@mvista.com>
|
||||||
|
|
||||||
* gdb.texinfo (Remote Protocol): Document v and vCont.
|
* gdb.texinfo (Remote Protocol): Document v and vCont.
|
||||||
|
|
|
@ -3309,6 +3309,58 @@ watchpoints it needs to insert.
|
||||||
When this message is printed, you need to disable or remove some of the
|
When this message is printed, you need to disable or remove some of the
|
||||||
hardware-assisted breakpoints and watchpoints, and then continue.
|
hardware-assisted breakpoints and watchpoints, and then continue.
|
||||||
|
|
||||||
|
@node Breakpoint related warnings
|
||||||
|
@subsection ``Breakpoint address adjusted...''
|
||||||
|
@cindex breakpoint address adjusted
|
||||||
|
|
||||||
|
Some processor architectures place constraints on the addresses at
|
||||||
|
which breakpoints may be placed. For architectures thus constrained,
|
||||||
|
@value{GDBN} will attempt to adjust the breakpoint's address to comply
|
||||||
|
with the constraints dictated by the architecture.
|
||||||
|
|
||||||
|
One example of such an architecture is the Fujitsu FR-V. The FR-V is
|
||||||
|
a VLIW architecture in which a number of RISC-like instructions may be
|
||||||
|
bundled together for parallel execution. The FR-V architecture
|
||||||
|
constrains the location of a breakpoint instruction within such a
|
||||||
|
bundle to the instruction with the lowest address. @value{GDBN}
|
||||||
|
honors this constraint by adjusting a breakpoint's address to the
|
||||||
|
first in the bundle.
|
||||||
|
|
||||||
|
It is not uncommon for optimized code to have bundles which contain
|
||||||
|
instructions from different source statements, thus it may happen that
|
||||||
|
a breakpoint's address will be adjusted from one source statement to
|
||||||
|
another. Since this adjustment may significantly alter @value{GDBN}'s
|
||||||
|
breakpoint related behavior from what the user expects, a warning is
|
||||||
|
printed when the breakpoint is first set and also when the breakpoint
|
||||||
|
is hit.
|
||||||
|
|
||||||
|
A warning like the one below is printed when setting a breakpoint
|
||||||
|
that's been subject to address adjustment:
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
|
Such warnings are printed both for user settable and @value{GDBN}'s
|
||||||
|
internal breakpoints. If you see one of these warnings, you should
|
||||||
|
verify that a breakpoint set at the adjusted address will have the
|
||||||
|
desired affect. If not, the breakpoint in question may be removed and
|
||||||
|
other breakpoints may be set which will have the desired behavior.
|
||||||
|
E.g., it may be sufficient to place the breakpoint at a later
|
||||||
|
instruction. A conditional breakpoint may also be useful in some
|
||||||
|
cases to prevent the breakpoint from triggering too often.
|
||||||
|
|
||||||
|
@value{GDBN} will also issue a warning when stopping at one of these
|
||||||
|
adjusted breakpoints:
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
warning: Breakpoint 1 address previously adjusted from 0x00010414
|
||||||
|
to 0x00010410.
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
|
When this warning is encountered, it may be too late to take remedial
|
||||||
|
action except in cases where the breakpoint is hit earlier or more
|
||||||
|
frequently than expected.
|
||||||
|
|
||||||
@node Continuing and Stepping
|
@node Continuing and Stepping
|
||||||
@section Continuing and stepping
|
@section Continuing and stepping
|
||||||
|
|
|
@ -3052,6 +3052,39 @@ custom breakpoint insertion and removal routines if
|
||||||
@code{BREAKPOINT_FROM_PC} needs to read the target's memory for some
|
@code{BREAKPOINT_FROM_PC} needs to read the target's memory for some
|
||||||
reason.
|
reason.
|
||||||
|
|
||||||
|
@item ADJUST_BREAKPOINT_ADDRESS (@var{address})
|
||||||
|
@findex ADJUST_BREAKPOINT_ADDRESS
|
||||||
|
@cindex breakpoint address adjusted
|
||||||
|
Given an address at which a breakpoint is desired, return a breakpoint
|
||||||
|
address adjusted to account for architectural constraints on
|
||||||
|
breakpoint placement. This method is not needed by most targets.
|
||||||
|
|
||||||
|
The FR-V target (see @file{frv-tdep.c}) requires this method.
|
||||||
|
The FR-V is a VLIW architecture in which a number of RISC-like
|
||||||
|
instructions are grouped (packed) together into an aggregate
|
||||||
|
instruction or instruction bundle. When the processor executes
|
||||||
|
one of these bundles, the component instructions are executed
|
||||||
|
in parallel.
|
||||||
|
|
||||||
|
In the course of optimization, the compiler may group instructions
|
||||||
|
from distinct source statements into the same bundle. The line number
|
||||||
|
information associated with one of the latter statements will likely
|
||||||
|
refer to some instruction other than the first one in the bundle. So,
|
||||||
|
if the user attempts to place a breakpoint on one of these latter
|
||||||
|
statements, @value{GDBN} must be careful to @emph{not} place the break
|
||||||
|
instruction on any instruction other than the first one in the bundle.
|
||||||
|
(Remember though that the instructions within a bundle execute
|
||||||
|
in parallel, so the @emph{first} instruction is the instruction
|
||||||
|
at the lowest address and has nothing to do with execution order.)
|
||||||
|
|
||||||
|
The FR-V's @code{ADJUST_BREAKPOINT_ADDRESS} method will adjust a
|
||||||
|
breakpoint's address by scanning backwards for the beginning of
|
||||||
|
the bundle, returning the address of the bundle.
|
||||||
|
|
||||||
|
Since the adjustment of a breakpoint may significantly alter a user's
|
||||||
|
expectation, @value{GDBN} prints a warning when an adjusted breakpoint
|
||||||
|
is initially set and each time that that breakpoint is hit.
|
||||||
|
|
||||||
@item DEPRECATED_CALL_DUMMY_WORDS
|
@item DEPRECATED_CALL_DUMMY_WORDS
|
||||||
@findex DEPRECATED_CALL_DUMMY_WORDS
|
@findex DEPRECATED_CALL_DUMMY_WORDS
|
||||||
Pointer to an array of @code{LONGEST} words of data containing
|
Pointer to an array of @code{LONGEST} words of data containing
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue