qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] dump-guest-memory.py: fix No symbol "vmcoreinfo


From: Laszlo Ersek
Subject: Re: [Qemu-devel] [PATCH] dump-guest-memory.py: fix No symbol "vmcoreinfo_find"
Date: Fri, 1 Dec 2017 13:51:20 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0

On 12/01/17 12:37, Marc-André Lureau wrote:
> When qemu is compiled without debug, the dump gdb python script can fail with:
> 
> Error occurred in Python command: No symbol "vmcoreinfo_find" in current 
> context.
> 
> Because vmcoreinfo_find() is inlined and not exported.
> 
> Use the underlying object_resolve_path_type() to get the instance instead.
> 
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
>  scripts/dump-guest-memory.py | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/scripts/dump-guest-memory.py b/scripts/dump-guest-memory.py
> index 69dd5efadf..1af26c1a45 100644
> --- a/scripts/dump-guest-memory.py
> +++ b/scripts/dump-guest-memory.py
> @@ -546,13 +546,15 @@ shape and this command should mostly work."""
>          return None
>  
>      def add_vmcoreinfo(self):
> -        if not gdb.parse_and_eval("vmcoreinfo_find()") \
> -           or not gdb.parse_and_eval("vmcoreinfo_find()->has_vmcoreinfo"):
> +        vmci = '(VMCoreInfoState *)' + \
> +               'object_resolve_path_type("", "vmcoreinfo", 0)'
> +        if not gdb.parse_and_eval("%s" % vmci) \
> +           or not gdb.parse_and_eval("(%s)->has_vmcoreinfo" % vmci):
>              return
>  
> -        fmt = 
> gdb.parse_and_eval("vmcoreinfo_find()->vmcoreinfo.guest_format")
> -        addr = gdb.parse_and_eval("vmcoreinfo_find()->vmcoreinfo.paddr")
> -        size = gdb.parse_and_eval("vmcoreinfo_find()->vmcoreinfo.size")
> +        fmt = gdb.parse_and_eval("(%s)->vmcoreinfo.guest_format" % vmci)
> +        addr = gdb.parse_and_eval("(%s)->vmcoreinfo.paddr" % vmci)
> +        size = gdb.parse_and_eval("(%s)->vmcoreinfo.size" % vmci)
>  
>          fmt = le16_to_cpu(fmt)
>          addr = le64_to_cpu(addr)
> 

This is why I had recommended a volatile assignment back then.

http://mid.mail-archive.com/address@hidden

http://mid.mail-archive.com/address@hidden

Anyway,

Reviewed-by: Laszlo Ersek <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]