* [PATCH] tools/gdbsx: use inttypes.h instead of custom macros
@ 2018-07-31 20:19 Marek Marczykowski-Górecki
2018-08-01 9:19 ` Wei Liu
0 siblings, 1 reply; 4+ messages in thread
From: Marek Marczykowski-Górecki @ 2018-07-31 20:19 UTC (permalink / raw)
To: xen-devel
Cc: Elena Ufimtseva, Andrew Cooper, Ian Jackson,
Marek Marczykowski-Górecki, Wei Liu
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
This is on top of "tools/gdbsx: fix 'g' packet response for 64bit
guests" patch.
---
tools/debugger/gdbsx/gx/gx_local.c | 17 +++++-----
tools/debugger/gdbsx/gx/gx_main.c | 5 +--
tools/debugger/gdbsx/xg/xg_public.h | 8 -----
tools/xenstore/xenstore_client.c | 51 +++++++++++++++++++++++------
4 files changed, 53 insertions(+), 28 deletions(-)
diff --git a/tools/debugger/gdbsx/gx/gx_local.c b/tools/debugger/gdbsx/gx/gx_local.c
index 33556a582d..023f5a391f 100644
--- a/tools/debugger/gdbsx/gx/gx_local.c
+++ b/tools/debugger/gdbsx/gx/gx_local.c
@@ -21,6 +21,7 @@
#include <stdio.h>
#include <stdint.h>
#include <stdarg.h>
+#include <inttypes.h>
#include <errno.h>
#include "gx.h"
@@ -45,17 +46,17 @@ prnt_32regs(struct xg_gdb_regs32 *r32p)
static void
prnt_64regs(struct xg_gdb_regs64 *r64p)
{
- printf("rip:"XGF64" rsp:"XGF64" flags:%08x\n", r64p->rip, r64p->rsp,
+ printf("rip:%016"PRIx64" rsp:%016"PRIx64" flags:%08x\n", r64p->rip, r64p->rsp,
r64p->eflags);
- printf("rax:"XGF64" rbx:"XGF64" rcx:"XGF64"\n", r64p->rax, r64p->rbx,
+ printf("rax:%016"PRIx64" rbx:%016"PRIx64" rcx:%016"PRIx64"\n", r64p->rax, r64p->rbx,
r64p->rcx);
- printf("rdx:"XGF64" rsi:"XGF64" rdi:"XGF64"\n", r64p->rdx, r64p->rsi,
+ printf("rdx:%016"PRIx64" rsi:%016"PRIx64" rdi:%016"PRIx64"\n", r64p->rdx, r64p->rsi,
r64p->rdi);
- printf("r08:"XGF64" r09:"XGF64" r10:"XGF64"\n", r64p->r8, r64p->r9,
+ printf("r08:%016"PRIx64" r09:%016"PRIx64" r10:%016"PRIx64"\n", r64p->r8, r64p->r9,
r64p->r10);
- printf("r11:"XGF64" r12:"XGF64" r13:"XGF64"\n", r64p->r11, r64p->r12,
+ printf("r11:%016"PRIx64" r12:%016"PRIx64" r13:%016"PRIx64"\n", r64p->r11, r64p->r12,
r64p->r13);
- printf("r14:"XGF64" r15:"XGF64" rbp:"XGF64"\n", r64p->r14, r64p->r15,
+ printf("r14:%016"PRIx64" r15:%016"PRIx64" rbp:%016"PRIx64"\n", r64p->r14, r64p->r15,
r64p->rbp);
printf("cs:%08x ds:%08x fs:%08x gs:%08x\n", r64p->cs,
r64p->ds, r64p->fs, r64p->gs);
@@ -92,13 +93,13 @@ prnt_call_trace64(uint64_t ip, uint64_t sp)
uint64_t loopmax=0, val;
printf("Call Trace:\n");
- printf(" ["XGF64"]\n", ip);
+ printf(" [%016"PRIx64"]\n", ip);
while(stack_max > 0) {
if (xg_read_mem(sp, (char *)&val, sizeof(val),0) != 0)
return;
if (val > 0xffffffff80000000UL) { /* kernel addr */
- printf(" ["XGF64"]\n", val);
+ printf(" [%016"PRIx64"]\n", val);
--stack_max;
}
sp += sizeof(sp);
diff --git a/tools/debugger/gdbsx/gx/gx_main.c b/tools/debugger/gdbsx/gx/gx_main.c
index 6dfa501145..15de2c3501 100644
--- a/tools/debugger/gdbsx/gx/gx_main.c
+++ b/tools/debugger/gdbsx/gx/gx_main.c
@@ -21,6 +21,7 @@
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
+#include <inttypes.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
@@ -114,9 +115,9 @@ _do_qRcmd_req(char *remote_buf)
XGTRC("buf+5:%s pgd3val:0x%llx\n", buf+5, pgd3val);
if (*endp == '\0' && pgd3val > 0) {
- sprintf(buf1, "pgd3val set to: "XGF64"\n", pgd3val);
+ sprintf(buf1, "pgd3val set to: %016"PRIx64"\n", pgd3val);
} else {
- sprintf(buf1, "Invalid pgd3val "XGF64"\n", pgd3val);
+ sprintf(buf1, "Invalid pgd3val %016"PRIx64"\n", pgd3val);
pgd3val = 0;
}
} else {
diff --git a/tools/debugger/gdbsx/xg/xg_public.h b/tools/debugger/gdbsx/xg/xg_public.h
index cffb2f7532..31513c8177 100644
--- a/tools/debugger/gdbsx/xg/xg_public.h
+++ b/tools/debugger/gdbsx/xg/xg_public.h
@@ -21,14 +21,6 @@
#define XGTRC1(...) \
do {(xgtrc_on==2) ? (xgtrc(__FUNCTION__,__VA_ARGS__)):0;} while (0)
-#if defined(__x86_64__)
- #define XGFM64 "%lx"
- #define XGF64 "%016lx"
-#else
- #define XGFM64 "%llx"
- #define XGF64 "%016llx"
-#endif
-
typedef enum {
XG_GPRS=1, /* general purpose user regs */
diff --git a/tools/xenstore/xenstore_client.c b/tools/xenstore/xenstore_client.c
index 3d14d37e62..904204bc2d 100644
--- a/tools/xenstore/xenstore_client.c
+++ b/tools/xenstore/xenstore_client.c
@@ -68,6 +68,18 @@ output(const char *fmt, ...) {
output_pos += len;
}
+static void
+output_raw(const char *data, int len) {
+ if (output_pos + len > output_size) {
+ output_size += len + 1024;
+ output_buf = realloc(output_buf, output_size);
+ if (output_buf == NULL)
+ err(1, "malloc");
+ }
+ memcpy(&output_buf[output_pos], data, len);
+ output_pos += len;
+}
+
static void
usage(enum mode mode, int incl_mode, const char *progname)
{
@@ -78,10 +90,10 @@ usage(enum mode mode, int incl_mode, const char *progname)
errx(1, "Usage: %s <mode> [-h] [...]", progname);
case MODE_read:
mstr = incl_mode ? "read " : "";
- errx(1, "Usage: %s %s[-h] [-p] [-s] key [...]", progname, mstr);
+ errx(1, "Usage: %s %s[-h] [-p] [-s] [-R] key [...]", progname, mstr);
case MODE_write:
mstr = incl_mode ? "write " : "";
- errx(1, "Usage: %s %s[-h] [-s] key value [...]", progname, mstr);
+ errx(1, "Usage: %s %s[-h] [-s] [-R] key value [...]", progname, mstr);
case MODE_rm:
mstr = incl_mode ? "rm " : "";
errx(1, "Usage: %s %s[-h] [-s] [-t] key [...]", progname, mstr);
@@ -293,7 +305,8 @@ do_watch(struct xs_handle *xsh, int max_events)
static int
perform(enum mode mode, int optind, int argc, char **argv, struct xs_handle *xsh,
- xs_transaction_t xth, int prefix, int tidy, int upto, int recurse, int nr_watches)
+ xs_transaction_t xth, int prefix, int tidy, int upto, int recurse, int nr_watches,
+ int raw)
{
switch (mode) {
case MODE_ls:
@@ -322,17 +335,27 @@ perform(enum mode mode, int optind, int argc, char **argv, struct xs_handle *xsh
}
if (prefix)
output("%s: ", argv[optind]);
- output("%s\n", sanitise_value(&ebuf, val, len));
+ if (raw)
+ output_raw(val, len);
+ else
+ output("%s\n", sanitise_value(&ebuf, val, len));
free(val);
optind++;
break;
}
case MODE_write: {
char *val_spec = argv[optind + 1];
+ char *val;
unsigned len;
- expanding_buffer_ensure(&ebuf, strlen(val_spec)+1);
- unsanitise_value(ebuf.buf, &len, val_spec);
- if (!xs_write(xsh, xth, argv[optind], ebuf.buf, len)) {
+ if (raw) {
+ val = val_spec;
+ len = strlen(val_spec);
+ } else {
+ expanding_buffer_ensure(&ebuf, strlen(val_spec)+1);
+ unsanitise_value(ebuf.buf, &len, val_spec);
+ val = ebuf.buf;
+ }
+ if (!xs_write(xsh, xth, argv[optind], val, len)) {
warnx("could not write path %s", argv[optind]);
return 1;
}
@@ -506,6 +529,7 @@ main(int argc, char **argv)
int recurse = 0;
int nr_watches = -1;
int transaction;
+ int raw = 0;
struct winsize ws;
enum mode mode;
@@ -539,10 +563,11 @@ main(int argc, char **argv)
{"upto", 0, 0, 'u'}, /* MODE_chmod */
{"recurse", 0, 0, 'r'}, /* MODE_chmod */
{"number", 1, 0, 'n'}, /* MODE_watch */
+ {"raw", 0, 0, 'R'}, /* MODE_read || MODE_write */
{0, 0, 0, 0}
};
- c = getopt_long(argc - switch_argv, argv + switch_argv, "hfspturn:",
+ c = getopt_long(argc - switch_argv, argv + switch_argv, "hfspturn:R",
long_options, &index);
if (c == -1)
break;
@@ -593,6 +618,12 @@ main(int argc, char **argv)
else
usage(mode, switch_argv, argv[0]);
break;
+ case 'R':
+ if ( mode == MODE_read || mode == MODE_write )
+ raw = 1;
+ else
+ usage(mode, switch_argv, argv[0]);
+ break;
}
}
@@ -646,7 +677,7 @@ again:
errx(1, "couldn't start transaction");
}
- ret = perform(mode, optind, argc - switch_argv, argv + switch_argv, xsh, xth, prefix, tidy, upto, recurse, nr_watches);
+ ret = perform(mode, optind, argc - switch_argv, argv + switch_argv, xsh, xth, prefix, tidy, upto, recurse, nr_watches, raw);
if (transaction && !xs_transaction_end(xsh, xth, ret)) {
if (ret == 0 && errno == EAGAIN) {
@@ -657,7 +688,7 @@ again:
}
if (output_pos)
- printf("%s", output_buf);
+ fwrite(output_buf, 1, output_pos, stdout);
free(output_buf);
free(ebuf.buf);
--
2.17.1
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] tools/gdbsx: use inttypes.h instead of custom macros
2018-07-31 20:19 [PATCH] tools/gdbsx: use inttypes.h instead of custom macros Marek Marczykowski-Górecki
@ 2018-08-01 9:19 ` Wei Liu
2018-08-01 9:33 ` Wei Liu
0 siblings, 1 reply; 4+ messages in thread
From: Wei Liu @ 2018-08-01 9:19 UTC (permalink / raw)
To: Marek Marczykowski-Górecki
Cc: Elena Ufimtseva, xen-devel, Ian Jackson, Wei Liu, Andrew Cooper
On Tue, Jul 31, 2018 at 10:19:05PM +0200, Marek Marczykowski-Górecki wrote:
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> ---
> This is on top of "tools/gdbsx: fix 'g' packet response for 64bit
> guests" patch.
> ---
> tools/debugger/gdbsx/gx/gx_local.c | 17 +++++-----
> tools/debugger/gdbsx/gx/gx_main.c | 5 +--
> tools/debugger/gdbsx/xg/xg_public.h | 8 -----
> tools/xenstore/xenstore_client.c | 51 +++++++++++++++++++++++------
It seems that you accidentally added a xenstore file.
Wei.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] tools/gdbsx: use inttypes.h instead of custom macros
2018-08-01 9:19 ` Wei Liu
@ 2018-08-01 9:33 ` Wei Liu
2018-08-01 10:49 ` Marek Marczykowski-Górecki
0 siblings, 1 reply; 4+ messages in thread
From: Wei Liu @ 2018-08-01 9:33 UTC (permalink / raw)
To: Marek Marczykowski-Górecki
Cc: Elena Ufimtseva, xen-devel, Ian Jackson, Wei Liu, Andrew Cooper
On Wed, Aug 01, 2018 at 10:19:17AM +0100, Wei Liu wrote:
> On Tue, Jul 31, 2018 at 10:19:05PM +0200, Marek Marczykowski-Górecki wrote:
> > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> > ---
> > This is on top of "tools/gdbsx: fix 'g' packet response for 64bit
> > guests" patch.
> > ---
> > tools/debugger/gdbsx/gx/gx_local.c | 17 +++++-----
> > tools/debugger/gdbsx/gx/gx_main.c | 5 +--
> > tools/debugger/gdbsx/xg/xg_public.h | 8 -----
> > tools/xenstore/xenstore_client.c | 51 +++++++++++++++++++++++------
>
> It seems that you accidentally added a xenstore file.
No need to resend. I have fixed up this patch for you.
Wei.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] tools/gdbsx: use inttypes.h instead of custom macros
2018-08-01 9:33 ` Wei Liu
@ 2018-08-01 10:49 ` Marek Marczykowski-Górecki
0 siblings, 0 replies; 4+ messages in thread
From: Marek Marczykowski-Górecki @ 2018-08-01 10:49 UTC (permalink / raw)
To: Wei Liu; +Cc: Elena Ufimtseva, xen-devel, Ian Jackson, Andrew Cooper
[-- Attachment #1.1: Type: text/plain, Size: 1032 bytes --]
On Wed, Aug 01, 2018 at 10:33:23AM +0100, Wei Liu wrote:
> On Wed, Aug 01, 2018 at 10:19:17AM +0100, Wei Liu wrote:
> > On Tue, Jul 31, 2018 at 10:19:05PM +0200, Marek Marczykowski-Górecki wrote:
> > > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> > > ---
> > > This is on top of "tools/gdbsx: fix 'g' packet response for 64bit
> > > guests" patch.
> > > ---
> > > tools/debugger/gdbsx/gx/gx_local.c | 17 +++++-----
> > > tools/debugger/gdbsx/gx/gx_main.c | 5 +--
> > > tools/debugger/gdbsx/xg/xg_public.h | 8 -----
> > > tools/xenstore/xenstore_client.c | 51 +++++++++++++++++++++++------
> >
> > It seems that you accidentally added a xenstore file.
>
> No need to resend. I have fixed up this patch for you.
Thanks. I should read what git send-email shows me more carefully...
--
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
[-- Attachment #2: Type: text/plain, Size: 157 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-08-01 10:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-31 20:19 [PATCH] tools/gdbsx: use inttypes.h instead of custom macros Marek Marczykowski-Górecki
2018-08-01 9:19 ` Wei Liu
2018-08-01 9:33 ` Wei Liu
2018-08-01 10:49 ` Marek Marczykowski-Górecki
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.