From: David Taylor <dtaylor@emc.com>
To: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: [PATCH] reserve proposed new bytecodes
Date: Tue, 26 Aug 2014 21:54:00 -0000 [thread overview]
Message-ID: <524.1409090060@usendtaylorx2l> (raw)
I proposed on the gdb list some new bytecodes -- setmem8, setmem16,
setmem32, setmem64, and setreg -- for the GDB agent expression
mechanism. I posted a message on July 28th and then a more detailed
version on August 22nd.
So far only Eli Zaretskii has replied. I take that to mean that no one
has strong feelings yea or nay about it or possibly no one other than
Eli has bothered to read it. Hopefully the former.
We (EMC) plan to implment some variant of this and I'd like it to be
done in such a manner as to be acceptable for inclusion into GDB.
While I am hoping that we (EMC) implement this before the end of the
year, I realize that I don't control the which task has the highest
priority. So...
I'd like to informally reserve the opcodes and define their syntax and
semantics. Anyone looking to add a new opcode will look at either
gdb/doc/agentexpr.texi and/or gdb/common/ax.def.
To that end, here's a patch that edits both files and includes ChangeLog
entries. With this change gdb still builds as do the pdf, html, and
info targets.
Entry for gdb/ChangeLog:
2014-08-26 David Taylor <dtaylor@emc.com>
* common/ax.def: Add DEFOP entries for proposed bytecodes setmem8,
setmem16, setmem32, setmem64, and setreg.
Entry for gdb/doc/ChangeLog:
2014-08-26 David Taylor <dtaylor@emc.com>
* agentexpr.texi (Bytecode Descriptions): Add decsriptions of
propmosed bytecodes setmem8, setmem16, setmem32, setmem64, and
setreg.
The actual diff (against GDB 7.8, but these two files don't change very
often):
Index: gdb/common/ax.def
===================================================================
RCS file: /home/cvsroot/GDB/gdb/common/ax.def,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 ax.def
--- gdb/common/ax.def 18 Feb 2014 15:36:03 -0000 1.1.1.2
+++ gdb/common/ax.def 26 Aug 2014 19:22:12 -0000
@@ -95,3 +95,9 @@
DEFOP (rot, 0, 0, 3, 3, 0x33)
/* Both the argument and consumed numbers are dynamic for this one. */
DEFOP (printf, 0, 0, 0, 0, 0x34)
+/* The following five operands are not yet implemented. */
+DEFOP (setmem8, 0, 8, 2, 0, 0x35)
+DEFOP (setmem16, 0, 16, 2, 0, 0x36)
+DEFOP (setmem32, 0, 32, 2, 0, 0x37)
+DEFOP (setmem64, 0, 64, 2, 0, 0x38)
+DEFOP (setreg, 2, 0, 1, 0, 0x39)
Index: gdb/doc/agentexpr.texi
===================================================================
RCS file: /home/cvsroot/GDB/gdb/doc/agentexpr.texi,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 agentexpr.texi
--- gdb/doc/agentexpr.texi 18 Feb 2014 15:36:03 -0000 1.1.1.2
+++ gdb/doc/agentexpr.texi 26 Aug 2014 19:22:12 -0000
@@ -516,6 +516,28 @@
range of memory, then the next-to-top of the stack is the lvalue's
address, and the top of the stack is the lvalue's size, in bytes.
+@item @code{setmem8} (0x35): @var{addr} @var{value} @result{}
+@itemx @code{setmem16} (0x36): @var{addr} @var{value} @result{}
+@itemx @code{setmem32} (0x37): @var{addr} @var{value} @result{}
+@itemx @code{setmem64} (0x38): @var{addr} @var{value} @result{}
+Pop an address @var{addr} and value @var{value} from the stack. For
+bytecode @code{setmem}@var{n}, set an @var{n}-bit value at @var{addr},
+using the @var{n}-bit least significant bits of @var{value} and natural
+target endianness.
+
+If attempting to write memory at @var{addr} would cause a processor
+exception of some sort, terminate with an error.
+
+Not implemented yet.
+
+@item @code{setreg} (0x39) @var{regnum}: @var{value} @result{}
+Pop @var{value} from the stack. Set register @var{regnum} to @var{value}.
+
+If the register is read-only or if attempting to write @var{value} to it
+would cause a processor exception of some sort, terminate with an error.
+
+Not implemented yet.
+
@end table
EMC has a copyright assignment on file. I do not have commit privileges.
next reply other threads:[~2014-08-26 21:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-26 21:54 David Taylor [this message]
2014-08-27 2:46 ` Eli Zaretskii
2014-08-27 13:50 ` David Taylor
2014-08-27 14:55 ` Eli Zaretskii
2014-08-28 13:09 ` Yao Qi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=524.1409090060@usendtaylorx2l \
--to=dtaylor@emc.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox