diff options
-rw-r--r-- | ChangeLog.csl | 27 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 67 | ||||
-rw-r--r-- | gdb/mt-tdep.c | 30 |
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); } |