[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 05/45] windbg: added helper features
From: |
Ladi Prosek |
Subject: |
Re: [Qemu-devel] [PATCH v3 05/45] windbg: added helper features |
Date: |
Tue, 28 Nov 2017 09:18:30 +0100 |
On Tue, Nov 21, 2017 at 3:07 PM, Mihail Abakumov
<address@hidden> wrote:
> Added some helper features for windbgstub.
>
> Signed-off-by: Mihail Abakumov <address@hidden>
> Signed-off-by: Pavel Dovgalyuk <address@hidden>
> Signed-off-by: Dmitriy Koltunov <address@hidden>
> ---
> include/exec/windbgstub-utils.h | 27 +++++++++++++++++++++++++++
> include/exec/windbgstub.h | 6 ++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/include/exec/windbgstub-utils.h b/include/exec/windbgstub-utils.h
> index 2390597f1f..e9f5223e94 100755
> --- a/include/exec/windbgstub-utils.h
> +++ b/include/exec/windbgstub-utils.h
> @@ -13,7 +13,34 @@
> #define WINDBGSTUB_UTILS_H
>
> #include "qemu/osdep.h"
> +#include "qemu/error-report.h"
> +#include "log.h"
> +#include "cpu.h"
> #include "exec/windbgstub.h"
> #include "exec/windbgkd.h"
>
> +#define WINDBG_DEBUG(...) do { \
> + if (WINDBG_DEBUG_ON) { \
> + qemu_log(WINDBG ": " __VA_ARGS__); \
> + qemu_log("\n"); \
> + } \
> +} while (false)
> +
> +#define WINDBG_ERROR(...) error_report(WINDBG ": " __VA_ARGS__)
> +
> +#define FMT_ADDR "addr:0x" TARGET_FMT_lx
> +#define FMT_ERR "Error:%d"
> +
> +#define UINT8_P(ptr) ((uint8_t *) (ptr))
> +#define UINT32_P(ptr) ((uint32_t *) (ptr))
This doesn't cross-compile on Linux:
In file included from
/home/lprosek/qemu/target/i386/windbgstub.c:15:0:
/home/lprosek/qemu/target/i386/windbgstub.c: In function
'kd_api_read_msr':
/home/lprosek/qemu/include/exec/windbgstub-utils.h:35:24: error: cast
to pointer from integer of different size
[-Werror=int-to-pointer-cast]
#define UINT32_P(ptr) ((uint32_t *) (ptr))
^
/home/lprosek/qemu/target/i386/windbgstub.c:1210:27: note: in
expansion of macro 'UINT32_P'
m64c->DataValueLow = UINT32_P(val)[0];
^~~~~~~~
/home/lprosek/qemu/include/exec/windbgstub-utils.h:35:24: error: cast
to pointer from integer of different size
[-Werror=int-to-pointer-cast]
#define UINT32_P(ptr) ((uint32_t *) (ptr))
^
/home/lprosek/qemu/target/i386/windbgstub.c:1211:27: note: in
expansion of macro 'UINT32_P'
m64c->DataValueHigh = UINT32_P(val)[1];
^~~~~~~~
The macro or the places where it's used need to make sure that the
argument is of the right size. I hacked around it by doing:
--- a/include/exec/windbgstub-utils.h
+++ b/include/exec/windbgstub-utils.h
@@ -32,7 +32,7 @@
#define FMT_ERR "Error:%d"
#define UINT8_P(ptr) ((uint8_t *) (ptr))
-#define UINT32_P(ptr) ((uint32_t *) (ptr))
+#define UINT32_P(ptr) ((uint32_t *) (size_t) (ptr))
#define PTR(var) UINT8_P(&var)
> +#define PTR(var) UINT8_P(&var)
> +
> +#define sizeof_field(type, field) sizeof(((type *) NULL)->field)
> +
> +#define READ_VMEM(cpu, addr, type) ({ \
> + type _t; \
> + cpu_memory_rw_debug(cpu, addr, PTR(_t), sizeof(type), 0); \
> + _t; \
> +})
> +
> #endif
> diff --git a/include/exec/windbgstub.h b/include/exec/windbgstub.h
> index 1a6e1cc6e5..21bc552e58 100755
> --- a/include/exec/windbgstub.h
> +++ b/include/exec/windbgstub.h
> @@ -12,6 +12,12 @@
> #ifndef WINDBGSTUB_H
> #define WINDBGSTUB_H
>
> +#define WINDBG "windbg"
> +
> +#ifndef WINDBG_DEBUG_ON
> +#define WINDBG_DEBUG_ON false
> +#endif
> +
> int windbg_server_start(const char *device);
>
> #endif
>
- [Qemu-devel] [PATCH v3 00/45] Windbg supporting, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 01/45] windbg: added empty windbgstub files, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 03/45] windbg: modified windbgkd.h, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 02/45] windbg: added windbg's KD header file, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 04/45] windbg: added '-windbg' option, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 05/45] windbg: added helper features, Mihail Abakumov, 2017/11/21
- Re: [Qemu-devel] [PATCH v3 05/45] windbg: added helper features,
Ladi Prosek <=
- [Qemu-devel] [PATCH v3 06/45] windbg: added WindbgState, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 07/45] windbg: added chardev, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 10/45] windbg: structures for parsing data stream, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 08/45] windbg: hook to wrmsr operation, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 09/45] windbg: handler of fs/gs register, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 11/45] windbg: parsing data stream, Mihail Abakumov, 2017/11/21
- [Qemu-devel] [PATCH v3 12/45] windbg: send data and control packets, Mihail Abakumov, 2017/11/21