4. Known Problems
There are some known problems with the current implementation
-
If the OpenRISC 1000 Architecture supports hardware watchpoints, GDB
will use them to implement hardware breakpoints and watchpoints. GDB
is not perfect in handling of watchpoints. It is possible to allocate hardware
watchpoints and not discover until running that sufficient watchpoints are not
available. It is also possible that GDB will report watchpoints being hit
spuriously. This can be down to the assembly code having additional memory
accesses that are not obviously reflected in the source code.
-
The remote JTAG connection is not robust to being interrupted, or
reconnecting. If the connection is lost due to error, then you must restart
GDB and the target server (for example the Or1ksim architectural
simulator). Moving to the Remote Serial Protocol is intended to remedy this
problem in the future.
-
The OpenRISC 1000 architecture has evolved since the port of GDB 5.3
in 2001. In particular the structure of the Unit Present register has
changed and the CPU Configuration register has been added. The port of
GDB version 6.8 uses the current
specification of the OpenRISC 1000. This means that old clients that
talk to the debugger may not work. In particular the Or1ksim
Architectural simulator requires a patch to work.
-
The handling of watchpoints in the Or1ksim architectural simulator was
incorrect. To work with GDB 6.8, a patch is required to fix
this problem. This is combined with the patch changing the structure of the
Unit Present and CPU Configuration registers.
-
The OpenRISC 1000 architecture uses its General Purpose
Register (GPR) 2 as a frame pointer register. However the
$fp
variable in GDB is not currently implemented, and will return
the value of the stack pointer (GPR 1) instead.
Reports of bugs are much welcomed. Please report problems through the
OpenCORES tracker at www.opencores.org/ptracker.cgi/list/or1k.
This document was generated by Jeremy Bennett on November, 12 2008 using texi2html 1.78.