[Qemu-devel] [PATCH] qemugdb/coroutine: fix arch_prctl has unknown return type

Vladimir Sementsov-Ogievskiy posted 1 patch 6 years, 9 months ago
Test docker-mingw@fedora passed
Test asan passed
Test checkpatch passed
Test docker-clang@ubuntu passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190206151425.105871-1-vsementsov@virtuozzo.com
scripts/qemugdb/coroutine.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[Qemu-devel] [PATCH] qemugdb/coroutine: fix arch_prctl has unknown return type
Posted by Vladimir Sementsov-Ogievskiy 6 years, 9 months ago
qemu coroutine command results in following error output:

Python Exception <class 'gdb.error'> 'arch_prctl' has unknown return
type; cast the call to its declared return type: Error occurred in
Python command: 'arch_prctl' has unknown return type; cast the call to
its declared return type

Fix it by giving it what it wants: arch_prctl return type.

Information on the topic:
   https://sourceware.org/gdb/onlinedocs/gdb/Calling.html

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
 scripts/qemugdb/coroutine.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/qemugdb/coroutine.py b/scripts/qemugdb/coroutine.py
index ab699794ab..81f811ac00 100644
--- a/scripts/qemugdb/coroutine.py
+++ b/scripts/qemugdb/coroutine.py
@@ -22,7 +22,7 @@ def get_fs_base():
        pthread_self().'''
     # %rsp - 120 is scratch space according to the SystemV ABI
     old = gdb.parse_and_eval('*(uint64_t*)($rsp - 120)')
-    gdb.execute('call arch_prctl(0x1003, $rsp - 120)', False, True)
+    gdb.execute('call (int)arch_prctl(0x1003, $rsp - 120)', False, True)
     fs_base = gdb.parse_and_eval('*(uint64_t*)($rsp - 120)')
     gdb.execute('set *(uint64_t*)($rsp - 120) = %s' % old, False, True)
     return fs_base
-- 
2.18.0


Re: [Qemu-devel] [PATCH] qemugdb/coroutine: fix arch_prctl has unknown return type
Posted by Stefan Hajnoczi 6 years, 9 months ago
On Wed, Feb 06, 2019 at 06:14:25PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> qemu coroutine command results in following error output:
> 
> Python Exception <class 'gdb.error'> 'arch_prctl' has unknown return
> type; cast the call to its declared return type: Error occurred in
> Python command: 'arch_prctl' has unknown return type; cast the call to
> its declared return type
> 
> Fix it by giving it what it wants: arch_prctl return type.
> 
> Information on the topic:
>    https://sourceware.org/gdb/onlinedocs/gdb/Calling.html
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>  scripts/qemugdb/coroutine.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Thanks, applied to my block tree:
https://github.com/stefanha/qemu/commits/block

Stefan