From: "Wiederhake, Tim" <tim.wiederhake@intel.com>
To: Yao Qi <qiyaoltc@gmail.com>
Cc: "Jose E. Marchesi" <jose.marchesi@oracle.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: RE: MemoryView missing from Python 2.4 and 2.6
Date: Mon, 06 Mar 2017 08:56:00 -0000 [thread overview]
Message-ID: <9676A094AF46E14E8265E7A3F4CCE9AF942654@irsmsx105.ger.corp.intel.com> (raw)
In-Reply-To: <86y3wmpsng.fsf@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1607 bytes --]
Hi Yao,
> The change looks reasonable to me. Do we need to update test case?
> In py-inferior.exp, we have (...)
Thanks for the pointer. I've attached a revised version of the patch.
Tim
> -----Original Message-----
> From: gdb-patches-owner@sourceware.org [mailto:gdb-patches-
> owner@sourceware.org] On Behalf Of Yao Qi
> Sent: Friday, March 3, 2017 11:22 AM
> To: Wiederhake, Tim <tim.wiederhake@intel.com>
> Cc: Jose E. Marchesi <jose.marchesi@oracle.com>; gdb-
> patches@sourceware.org
> Subject: Re: MemoryView missing from Python 2.4 and 2.6
>
> "Wiederhake, Tim" <tim.wiederhake@intel.com> writes:
>
> > This changes the return type of "gdb.BtraceInstruction.data ()" from
> > "memoryview" to "buffer" on Python 2.7 and below, similar to what
> > "gdb.Inferior.read_memory ()" does.
>
> The change looks reasonable to me. Do we need to update test case?
> In py-inferior.exp, we have
>
> gdb_py_test_silent_cmd "python str = gdb.inferiors()\[0\].read_memory
> (addr, 5); print(str)" \
> "read str contents" 1
> if { $gdb_py_is_py3k == 0 } {
> gdb_py_test_silent_cmd "python a = 'a'" "" 0 } else {
> gdb_py_test_silent_cmd "python a = bytes('a', 'ascii')" "" 0 }
>
> I assume we need something similar here.
>
> --
> Yao (齐尧)
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
[-- Attachment #2: v2-0001-Fix-break-on-Python-2.patch --]
[-- Type: application/octet-stream, Size: 2818 bytes --]
From 093c751500597f503b5cc24955765fc746a86f33 Mon Sep 17 00:00:00 2001
From: Tim Wiederhake <tim.wiederhake@intel.com>
Date: Tue, 28 Feb 2017 09:10:58 +0100
Subject: [PATCH v2] Fix break on Python 2
This changes the return type of "gdb.BtraceInstruction.data ()" from
"memoryview" to "buffer" on Python 2.7 and below, similar to what
"gdb.Inferior.read_memory ()" does.
2017-03-06 Tim Wiederhake <tim.wiederhake@intel.com>
gdb/ChangeLog:
* python/py-record-btrace.c (btpy_insn_data): Change return type
for Python 2.
gdb/doc/ChangeLog:
* python.texi (Recordings In Python): Document return type of
gdb.BtraceInstruction.data.
gdb/testsuite/ChangeLog:
* gdb.python/py-record-btrace.exp: Check for buffer on Python 2
and memory view on Python 3.
---
gdb/doc/python.texi | 3 ++-
gdb/python/py-record-btrace.c | 5 +++++
gdb/testsuite/gdb.python/py-record-btrace.exp | 6 +++++-
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index c3ea203..b4a52bd 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -3181,7 +3181,8 @@ if the instruction is a gap or the debug symbols could not be read.
@defvar BtraceInstruction.data
A buffer with the raw instruction data. May be @code{None} if the
-instruction is a gap.
+instruction is a gap. In Python 3, the return value is a @code{memoryview}
+object.
@end defvar
@defvar BtraceInstruction.decoded
diff --git a/gdb/python/py-record-btrace.c b/gdb/python/py-record-btrace.c
index 6158f31..c816332 100644
--- a/gdb/python/py-record-btrace.c
+++ b/gdb/python/py-record-btrace.c
@@ -330,7 +330,12 @@ btpy_insn_data (PyObject *self, void *closure)
if (object == NULL)
return NULL;
+#ifdef IS_PY3K
return PyMemoryView_FromObject (object);
+#else
+ return PyBuffer_FromObject (object, 0, Py_END_OF_BUFFER);
+#endif
+
}
/* Implementation of BtraceInstruction.decode [str]. Returns
diff --git a/gdb/testsuite/gdb.python/py-record-btrace.exp b/gdb/testsuite/gdb.python/py-record-btrace.exp
index 65a3e7d..7752cac 100644
--- a/gdb/testsuite/gdb.python/py-record-btrace.exp
+++ b/gdb/testsuite/gdb.python/py-record-btrace.exp
@@ -85,7 +85,11 @@ with_test_prefix "instruction " {
gdb_test "python print(i.error)" "None"
gdb_test "python print(i.sal)" "symbol and line for .*"
gdb_test "python print(i.pc)" "$decimal"
- gdb_test "python print(i.data)" "<memory at $hex>"
+ if { $gdb_py_is_py3k == 0 } {
+ gdb_test "python print(repr(i.data))" "<read-only buffer for $hex,.*>"
+ } else {
+ gdb_test "python print(repr(i.data))" "<memory at $hex>"
+ }
gdb_test "python print(i.decoded)" ".*"
gdb_test "python print(i.size)" "$decimal"
gdb_test "python print(i.is_speculative)" "False"
--
2.7.4
next prev parent reply other threads:[~2017-03-06 8:56 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-23 16:48 Jose E. Marchesi
2017-02-23 17:06 ` Jose E. Marchesi
2017-02-23 22:59 ` Yao Qi
2017-02-24 10:37 ` Wiederhake, Tim
2017-02-24 16:06 ` Yao Qi
2017-02-24 16:14 ` Paul.Koning
2017-02-28 10:53 ` Wiederhake, Tim
2017-02-28 12:51 ` Jose E. Marchesi
2017-03-07 0:21 ` Joel Brobecker
2017-03-07 13:38 ` Wiederhake, Tim
2017-03-07 15:27 ` Joel Brobecker
2017-03-03 10:21 ` Yao Qi
2017-03-06 8:56 ` Wiederhake, Tim [this message]
2017-03-07 10:32 ` Yao Qi
2017-03-07 17:18 ` Wiederhake, Tim
2017-03-17 15:59 ` Yao Qi
2017-03-17 16:39 ` Jose E. Marchesi
2017-03-20 9:04 ` Yao Qi
2017-03-20 22:44 ` 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=9676A094AF46E14E8265E7A3F4CCE9AF942654@irsmsx105.ger.corp.intel.com \
--to=tim.wiederhake@intel.com \
--cc=gdb-patches@sourceware.org \
--cc=jose.marchesi@oracle.com \
--cc=qiyaoltc@gmail.com \
/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