This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] Fix documentation about rot agent expression bytecode
- From: Simon Marchi <simon dot marchi at ericsson dot com>
- To: <gdb-patches at sourceware dot org>
- Cc: Simon Marchi <simon dot marchi at ericsson dot com>
- Date: Wed, 19 Jul 2017 17:16:07 +0200
- Subject: [PATCH] Fix documentation about rot agent expression bytecode
- Authentication-results: sourceware.org; auth=none
- Authentication-results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=ericsson.com;
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
The rot agent expression bytecode rotates the three items on the top of
the stack. It is not clear which way the rotation is. However, the
documentation currently shows this as the effect of the instructions:
a b c => c b a
which doesn't make sense, since the value b doesn't move. The two
valid possibilities I see are
a b c => b c a
a b c => c a b
depending on which way you rotate.
When looking at the gdbserver code, the top of the stack becomes the
third item, and the next-to-top item becomes the top. So the second
form would be the right one, since in this notation the top of the stack
is the rightmost element:
a b c => c a b
I adjusted the symbolic description and added a bit of text to make it
more obvious.
gdb/doc/ChangeLog:
* agentexpr.texi (rot): Fix symbolic description, improve
textual description.
---
gdb/doc/agentexpr.texi | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/gdb/doc/agentexpr.texi b/gdb/doc/agentexpr.texi
index 5668e9c..aef1973 100644
--- a/gdb/doc/agentexpr.texi
+++ b/gdb/doc/agentexpr.texi
@@ -396,8 +396,10 @@ is zero, this is the same as @code{dup}; if @var{n} is one, it copies
the item under the top item, etc. If @var{n} exceeds the number of
items on the stack, terminate with an error.
-@item @code{rot} (0x33): @var{a} @var{b} @var{c} => @var{c} @var{b} @var{a}
-Rotate the top three items on the stack.
+@item @code{rot} (0x33): @var{a} @var{b} @var{c} => @var{c} @var{a} @var{b}
+Rotate the top three items on the stack. The top (first) item becomes
+the third item, the next-to-top (second) item becomes the top (first) item
+and the third item becomes the next-to-top (second) item.
@item @code{if_goto} (0x20) @var{offset}: @var{a} @result{}
Pop an integer off the stack; if it is non-zero, branch to the given
--
2.7.4