From patchwork Tue Aug 26 21:54:20 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Taylor X-Patchwork-Id: 2546 Received: (qmail 3543 invoked by alias); 26 Aug 2014 21:54:57 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 3533 invoked by uid 89); 26 Aug 2014 21:54:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL, BAYES_50, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mailuogwhop.emc.com Received: from mailuogwhop.emc.com (HELO mailuogwhop.emc.com) (168.159.213.141) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Tue, 26 Aug 2014 21:54:54 +0000 Received: from maildlpprd05.lss.emc.com (maildlpprd05.lss.emc.com [10.253.24.37]) by mailuogwprd04.lss.emc.com (Sentrion-MTA-4.3.0/Sentrion-MTA-4.3.0) with ESMTP id s7QLsg4q014957 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 26 Aug 2014 17:54:52 -0400 X-DKIM: OpenDKIM Filter v2.4.3 mailuogwprd04.lss.emc.com s7QLsg4q014957 X-DKIM: OpenDKIM Filter v2.4.3 mailuogwprd04.lss.emc.com s7QLsg4q014957 Received: from mailhub.lss.emc.com (mailhubhoprd02.lss.emc.com [10.254.221.253]) by maildlpprd05.lss.emc.com (RSA Interceptor) for ; Tue, 26 Aug 2014 17:54:20 -0400 Received: from usendtaylorx2l.lss.emc.com (usendtaylorx2l.lss.emc.com [10.243.10.188]) by mailhub.lss.emc.com (Switch-3.4.3/Switch-3.4.3) with ESMTP id s7QLsLVq028749 for ; Tue, 26 Aug 2014 17:54:21 -0400 Received: by usendtaylorx2l.lss.emc.com (Postfix, from userid 26043) id ACF345D2EEB; Tue, 26 Aug 2014 17:54:20 -0400 (EDT) Received: from usendtaylorx2l (localhost [127.0.0.1]) by usendtaylorx2l.lss.emc.com (Postfix) with ESMTP id A40195D2EEA for ; Tue, 26 Aug 2014 17:54:20 -0400 (EDT) From: David Taylor To: "gdb-patches@sourceware.org" Subject: [PATCH] reserve proposed new bytecodes Date: Tue, 26 Aug 2014 17:54:20 -0400 Message-ID: <524.1409090060@usendtaylorx2l> X-EMM-MHVC: 1 X-RSA-Classifications: public X-Sentrion-Hostname: mailuogwprd04.lss.emc.com X-IsSubscribed: yes 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 * 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 * 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): EMC has a copyright assignment on file. I do not have commit privileges. 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