Re: [Qemu-devel] [PATCH] dump-guest-memory.py: fix python 2 support
Hi On Wed, Jan 17, 2018 at 3:59 PM, Eric Blakewrote: > On 01/17/2018 08:18 AM, Laszlo Ersek wrote: >> On 01/17/18 12:44, Marc-André Lureau wrote: >>> Python GDB support may use Python 2 or 3. >>> >>> Inferior.read_memory() may return a buffer with Python 2 or a >>> memoryview with Python 3 (see also >>> https://sourceware.org/gdb/onlinedocs/gdb/Inferiors-In-Python.html) >>> >>> The elf.add_vmcoreinfo_note() method expect a byte string, but Python 2 >>> buffer doesn't provide the tobyes() method. Wrap the read_memory() >>> result to a memoryview, available in Python 2.7. (if the return object >>> is already a memoryview, this adds a useless identity view on top) >> >> OOP is awesome. >> >>> >>> Fixes a regression introduced with commit >>> d23bfa91b7789534d16ede6cb7d925bfac3f3c4c ("add vmcoreinfo"). >> >> Do you want to CC stable? Commit d23bfa91b778 is part of v2.11.0. > > Configure says we still support python 2.6; does this still work there? memoryview is not available with python 2.6. Is the configure version check a configure-time check, or are we suppose to support that version for gdb scripts as well? > > -- > Eric Blake, Principal Software Engineer > Red Hat, Inc. +1-919-301-3266 > Virtualization: qemu.org | libvirt.org > -- Marc-André Lureau
Re: [Qemu-devel] [PATCH] dump-guest-memory.py: fix python 2 support
On 01/17/2018 08:18 AM, Laszlo Ersek wrote: > On 01/17/18 12:44, Marc-André Lureau wrote: >> Python GDB support may use Python 2 or 3. >> >> Inferior.read_memory() may return a buffer with Python 2 or a >> memoryview with Python 3 (see also >> https://sourceware.org/gdb/onlinedocs/gdb/Inferiors-In-Python.html) >> >> The elf.add_vmcoreinfo_note() method expect a byte string, but Python 2 >> buffer doesn't provide the tobyes() method. Wrap the read_memory() >> result to a memoryview, available in Python 2.7. (if the return object >> is already a memoryview, this adds a useless identity view on top) > > OOP is awesome. > >> >> Fixes a regression introduced with commit >> d23bfa91b7789534d16ede6cb7d925bfac3f3c4c ("add vmcoreinfo"). > > Do you want to CC stable? Commit d23bfa91b778 is part of v2.11.0. Configure says we still support python 2.6; does this still work there? -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org signature.asc Description: OpenPGP digital signature
Re: [Qemu-devel] [PATCH] dump-guest-memory.py: fix python 2 support
On Wed, Jan 17, 2018 at 12:44 PM, Marc-André Lureauwrote: > Python GDB support may use Python 2 or 3. > > Inferior.read_memory() may return a buffer with Python 2 or a > memoryview with Python 3 (see also > https://sourceware.org/gdb/onlinedocs/gdb/Inferiors-In-Python.html) > > The elf.add_vmcoreinfo_note() method expect a byte string, but Python 2 > buffer doesn't provide the tobyes() method. Wrap the read_memory() > result to a memoryview, available in Python 2.7. (if the return object > is already a memoryview, this adds a useless identity view on top) > > Fixes a regression introduced with commit > d23bfa91b7789534d16ede6cb7d925bfac3f3c4c ("add vmcoreinfo"). CC stable (commit d23bfa91b778 is part of v2.11.0., suggested by Laszlo) > > Signed-off-by: Marc-André Lureau > --- > scripts/dump-guest-memory.py | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/scripts/dump-guest-memory.py b/scripts/dump-guest-memory.py > index 09bec92b50..6f7e1a83b3 100644 > --- a/scripts/dump-guest-memory.py > +++ b/scripts/dump-guest-memory.py > @@ -564,7 +564,9 @@ shape and this command should mostly work.""" > > vmcoreinfo = self.phys_memory_read(addr, size) > if vmcoreinfo: > -self.elf.add_vmcoreinfo_note(vmcoreinfo.tobytes()) > +# Python 2.7 returns a buffer > +vmciview = memoryview(vmcoreinfo) > +self.elf.add_vmcoreinfo_note(vmciview.tobytes()) > > def invoke(self, args, from_tty): > """Handles command invocation from gdb.""" > -- > 2.16.0.rc1.1.gef27df75a1 > > -- Marc-André Lureau
Re: [Qemu-devel] [PATCH] dump-guest-memory.py: fix python 2 support
On 01/17/18 12:44, Marc-André Lureau wrote: > Python GDB support may use Python 2 or 3. > > Inferior.read_memory() may return a buffer with Python 2 or a > memoryview with Python 3 (see also > https://sourceware.org/gdb/onlinedocs/gdb/Inferiors-In-Python.html) > > The elf.add_vmcoreinfo_note() method expect a byte string, but Python 2 > buffer doesn't provide the tobyes() method. Wrap the read_memory() > result to a memoryview, available in Python 2.7. (if the return object > is already a memoryview, this adds a useless identity view on top) OOP is awesome. > > Fixes a regression introduced with commit > d23bfa91b7789534d16ede6cb7d925bfac3f3c4c ("add vmcoreinfo"). Do you want to CC stable? Commit d23bfa91b778 is part of v2.11.0. > > Signed-off-by: Marc-André Lureau> --- > scripts/dump-guest-memory.py | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/scripts/dump-guest-memory.py b/scripts/dump-guest-memory.py > index 09bec92b50..6f7e1a83b3 100644 > --- a/scripts/dump-guest-memory.py > +++ b/scripts/dump-guest-memory.py > @@ -564,7 +564,9 @@ shape and this command should mostly work.""" > > vmcoreinfo = self.phys_memory_read(addr, size) > if vmcoreinfo: > -self.elf.add_vmcoreinfo_note(vmcoreinfo.tobytes()) > +# Python 2.7 returns a buffer > +vmciview = memoryview(vmcoreinfo) > +self.elf.add_vmcoreinfo_note(vmciview.tobytes()) > > def invoke(self, args, from_tty): > """Handles command invocation from gdb.""" > Reviewed-by: Laszlo Ersek Laszlo