summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-04-19 18:30:11 +0000
committerDaniel Jacobowitz <drow@false.org>2006-04-19 18:30:11 +0000
commit638471fd0dc4a491b4070635d3867791a993a9a1 (patch)
treec369c4c9d52b7960f5e186fe6c75baa8079f5ae6
parent4927a0a69251ec207ce8214292b30280da020045 (diff)
downloadbinutils-gdb-638471fd0dc4a491b4070635d3867791a993a9a1.tar.gz
Merge from parent branch.
-rw-r--r--ChangeLog.csl27
-rw-r--r--gdb/doc/gdb.texinfo67
-rw-r--r--gdb/mt-tdep.c30
3 files changed, 116 insertions, 8 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl
index 157182f9fcc..f8cd04c2ce5 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -1,3 +1,30 @@
+2006-04-19 Daniel Jacobowitz <dan@codesourcery.com>
+
+ Merge from gdb-csl-20060226-branch:
+
+ 2006-04-19 Daniel Jacobowitz <dan@codesourcery.com>
+ * gdb/doc/gdb.texinfo (Remote configuration): Mention "set remote
+ load-offsets".
+ (General Query Packets): Document qPartInfo.
+
+ 2006-04-18 Mark Mitchell <mark@codesourcery.com>
+ Issue #655
+ * gdb/mt-tdep.c (mt_gdb_regnums): Add ZI2, ZQ2, Ichannel2,
+ Iscramb2, Qscramb2, Qchannel2.
+ (mt_register_name): Likewise.
+ (mt_copro_register_type): Describe ZI2 and ZQ2.
+
+ 2006-04-11 Mark Mitchell <mark@codesourcery.com>
+ Issue #658
+ * gdb/mt-tdep.c (mt_gdb_regnums): Define
+ MT_COPRO_PSEUDOREG_MAC_REGNUM.
+ (mt_register_name): Use it.
+ (mt_copro_register_type): Likewise.
+ (mt_register_type): Likewise.
+ (mt_pseudo_register_read): Likewise. Read the MAC register, not
+ the coprocessor register.
+ (mt_pseudo_register_write): Likewise.
+
2006-04-17 Daniel Jacobowitz <dan@codesourcery.com>
* gdb/buildsym.c (start_subfile): Handle producer.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 221a95a2fa9..12f6b3932eb 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -12624,6 +12624,20 @@ packet.
@item show remote get-thread-local-storage-address
@kindex show remote get-thread-local-storage-address
Show the current setting of @samp{qGetTLSAddr} packet usage.
+
+@item set remote load-offsets
+@kindex set remote load-offsets
+@cindex load offsets of remote targets
+This command enables or disables the use of the @samp{qOffsets}
+request packet. This packet is used to find a relocated downloaded
+image. @xref{General Query Packets, qOffsets}, for more details about
+this packet. The default depends on the remote stub's support of this
+packet (@value{GDBN} queries the stub when this packet is first
+required).
+
+@item show remote load-offsets
+@kindex show remote load-offsets
+Show the current setting of @samp{qOffsets} packet usage.
@end table
@node remote stub
@@ -23267,6 +23281,59 @@ encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
+@item qPacketInfo @r{[};@var{feature}@r{]}...
+@cindex supported packets, remote query
+@cindex @samp{qPacketInfo} packet
+Tell the remote target about features supported by @value{GDBN}, and
+query it for features it supports.
+
+No values of @var{feature} are defined yet. Targets should ignore any
+unknown values for @var{feature}. Any @value{GDBN} which sends a
+@samp{qPacketInfo} packet supports receiving packets of unlimited
+length. Values for @var{feature} may be defined in the future to let
+the stub take advantage of new features in @value{GDBN}, e.g.@:
+incompatible improvements in the remote protocol.
+
+The reply is one or more feature responses, or empty if this packet is
+not supported. Multiple feature responses are separated by semicolons,
+and individual feature responses may not include semicolons. @value{GDBN}
+will silently ignore unrecognized feature responses, as long as the
+unrecognized response has one of the standard forms. The standard forms
+are:
+
+@table @samp
+@item @var{name}=@var{value}
+Set a remote communication parameter to the specified value.
+@item @var{name}+
+The remote protocol packet @var{name} is supported.
+@item @var{name}-
+The remote protocol packet @var{name} is not supported.
+@end table
+
+Currently only one communication parameter is supported:
+
+@table @samp
+@item PacketSize=@var{bytes}
+The remote target can accept packets up to at least @var{bytes} in
+length.
+@end table
+
+The name of a packet which can be marked as supported or unsupported
+is the text of the packet in this documentation, up to but not
+including the first punctuation character or variable. For example, a
+target which supports hardware watchpoints but not hardware
+breakpoints might report @samp{Z0-;Z1-;Z2+;Z3+;Z4+}. An exception is
+made for @samp{qPart:@var{object}} packets; the name of the packet
+includes the @var{object}, but not the @var{annex}. Individual
+@samp{qPart} packet types must be reported separately.
+
+Currently, all remote packets which are not mentioned in the response
+will be probed individually, just as if the @samp{qPacketInfo} command
+was not supported. In the future, some new packets may be added to
+the remote protocol which will be assumed to be unsupported unless
+@samp{qPacketInfo} is supported and the new packet is reported in the
+@samp{qPacketInfo} response.
+
@item qPart:@var{object}:read:@var{annex}:@var{offset},@var{length}
@cindex read special object, remote request
@cindex @samp{qPart} packet
diff --git a/gdb/mt-tdep.c b/gdb/mt-tdep.c
index 99725e73faa..da77bd88f1d 100644
--- a/gdb/mt-tdep.c
+++ b/gdb/mt-tdep.c
@@ -109,6 +109,12 @@ enum mt_gdb_regnums
MT_OUT_REGNUM, /* 16 bits. */
MT_EXMAC_REGNUM, /* 32 bits (8 used). */
MT_QCHANNEL_REGNUM, /* 32 bits. */
+ MT_ZI2_REGNUM, /* 16 bits. */
+ MT_ZQ2_REGNUM, /* 16 bits. */
+ MT_CHANNEL2_REGNUM, /* 32 bits. */
+ MT_ISCRAMB2_REGNUM, /* 32 bits. */
+ MT_QSCRAMB2_REGNUM, /* 32 bits. */
+ MT_QCHANNEL2_REGNUM, /* 32 bits. */
/* Number of real registers. */
MT_NUM_REGS,
@@ -120,7 +126,12 @@ enum mt_gdb_regnums
MT_COPRO_PSEUDOREG_DIM_1 = 2,
MT_COPRO_PSEUDOREG_DIM_2 = 8,
- MT_COPRO_PSEUDOREG_REGS = 32,
+ /* The number of pseudo-registers for each coprocessor. These
+ include the real coprocessor registers, the pseudo-registe for
+ the coprocessor number, and the pseudo-register for the MAC. */
+ MT_COPRO_PSEUDOREG_REGS = MT_NUM_REGS - MT_NUM_CPU_REGS + 2,
+ /* The register number of the MAC, relative to a given coprocessor. */
+ MT_COPRO_PSEUDOREG_MAC_REGNUM = MT_COPRO_PSEUDOREG_REGS - 1,
/* Two pseudo-regs ('coprocessor' and 'mac'). */
MT_NUM_PSEUDO_REGS = 2 + (MT_COPRO_PSEUDOREG_REGS
@@ -144,6 +155,7 @@ mt_register_name (int regnum)
"cr8", "cr9", "cr10", "cr11", "cr12", "cr13", "cr14", "cr15",
"bypa", "bypb", "bypc", "flag", "context", "" /* mac. */ , "z1", "z2",
"Ichannel", "Iscramb", "Qscramb", "out", "" /* ex-mac. */ , "Qchannel",
+ "zi2", "zq2", "Ichannel2", "Iscramb2", "Qscramb2", "Qchannel2",
/* Pseudo-registers. */
"coprocessor", "MAC"
};
@@ -171,7 +183,7 @@ mt_register_name (int regnum)
dim_1 = ((regnum / MT_COPRO_PSEUDOREG_REGS / MT_COPRO_PSEUDOREG_DIM_2)
% MT_COPRO_PSEUDOREG_DIM_1);
- if (index == MT_COPRO_PSEUDOREG_REGS - 1)
+ if (index == MT_COPRO_PSEUDOREG_MAC_REGNUM)
stub = register_names[MT_MAC_PSEUDOREG_REGNUM];
else if (index > MT_QCHANNEL_REGNUM - MT_CPR0_REGNUM)
stub = "";
@@ -208,6 +220,8 @@ mt_copro_register_type (struct gdbarch *arch, int regnum)
case MT_Z1_REGNUM:
case MT_Z2_REGNUM:
case MT_OUT_REGNUM:
+ case MT_ZI2_REGNUM:
+ case MT_ZQ2_REGNUM:
return builtin_type_int16;
case MT_EXMAC_REGNUM:
case MT_MAC_REGNUM:
@@ -219,7 +233,7 @@ mt_copro_register_type (struct gdbarch *arch, int regnum)
default:
if (regnum >= MT_CPR0_REGNUM && regnum <= MT_CPR15_REGNUM)
return builtin_type_int16;
- else if (regnum == MT_CPR0_REGNUM + MT_COPRO_PSEUDOREG_REGS - 1)
+ else if (regnum == MT_CPR0_REGNUM + MT_COPRO_PSEUDOREG_MAC_REGNUM)
{
if (gdbarch_bfd_arch_info (arch)->mach == bfd_mach_mrisc2
|| gdbarch_bfd_arch_info (arch)->mach == bfd_mach_ms2)
@@ -269,7 +283,7 @@ mt_register_type (struct gdbarch *arch, int regnum)
case MT_MAC_PSEUDOREG_REGNUM:
return mt_copro_register_type (arch,
MT_CPR0_REGNUM
- + MT_COPRO_PSEUDOREG_REGS - 1);
+ + MT_COPRO_PSEUDOREG_MAC_REGNUM);
default:
if (regnum >= MT_R0_REGNUM && regnum <= MT_R15_REGNUM)
return builtin_type_int32;
@@ -530,9 +544,9 @@ mt_pseudo_register_read (struct gdbarch *gdbarch,
{
unsigned index = mt_select_coprocessor (gdbarch, regcache, regno);
- if (index == MT_COPRO_PSEUDOREG_REGS - 1)
+ if (index == MT_COPRO_PSEUDOREG_MAC_REGNUM)
mt_pseudo_register_read (gdbarch, regcache,
- MT_COPRO_PSEUDOREG_REGNUM, buf);
+ MT_MAC_PSEUDOREG_REGNUM, buf);
else if (index < MT_NUM_REGS - MT_CPR0_REGNUM)
regcache_raw_read (regcache, index + MT_CPR0_REGNUM, buf);
}
@@ -584,9 +598,9 @@ mt_pseudo_register_write (struct gdbarch *gdbarch,
{
unsigned index = mt_select_coprocessor (gdbarch, regcache, regno);
- if (index == MT_COPRO_PSEUDOREG_REGS - 1)
+ if (index == MT_COPRO_PSEUDOREG_MAC_REGNUM)
mt_pseudo_register_write (gdbarch, regcache,
- MT_COPRO_PSEUDOREG_REGNUM, buf);
+ MT_MAC_PSEUDOREG_REGNUM, buf);
else if (index < MT_NUM_REGS - MT_CPR0_REGNUM)
regcache_raw_write (regcache, index + MT_CPR0_REGNUM, buf);
}