From: "Marcin Kościelnicki" <koriakin@0x04.net>
To: gdb-patches@sourceware.org
Cc: "Marcin Kościelnicki" <koriakin@0x04.net>
Subject: [PATCH 1/8] gdb.trace: Fix write_inferior_data_ptr on 32-bit big-endian machines.
Date: Fri, 22 Jan 2016 13:57:00 -0000 [thread overview]
Message-ID: <1453471015-9921-1-git-send-email-koriakin@0x04.net> (raw)
Noticed and tested on s390. This bug caused completely broken fast
tracepoints. No regressions on i686, x86_64, s390x.
gdb/gdbserver/ChangeLog:
* tracepoint.c (write_inferior_data_ptr): Cast to uintptr_t, so that
it works properly on big-endian machines where sizeof (CORE_ADDR)
!= sizeof (void *).
---
Another patch for upcoming s390 tracepoint support. 31-bit fast tracepoints
are still broken, but now less so.
It seems tracepoints are still broken in multiple ways on big-endian
targets, and I'm going to fix that. However, I'm not sure what to do
about the bi-arch case mentioned in the comment. While it'd be nice
to handle libinproctrace.so like libgcc.so and build it for all multilib
configurations, atm C structures involving pointers are shared between
gdbserver and the IPA. This obviously would have to be refactored before
that's possible, but might be worth it - configuring a full 31-bit build
just to get fast tracepoints is a pain.
gdb/gdbserver/ChangeLog | 6 ++++++
gdb/gdbserver/tracepoint.c | 6 +++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 9c42fcf..6ddd9ce 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,9 @@
+2016-01-22 Marcin KoÅcielnicki <koriakin@0x04.net>
+
+ * tracepoint.c (write_inferior_data_ptr): Cast to uintptr_t, so that
+ it works properly on big-endian machines where sizeof (CORE_ADDR)
+ != sizeof (void *).
+
2016-01-21 Pedro Alves <palves@redhat.com>
* Makefile.in (COMPILER_CFLAGS, CXXFLAGS): New.
diff --git a/gdb/gdbserver/tracepoint.c b/gdb/gdbserver/tracepoint.c
index 40d0da9..536cdd5 100644
--- a/gdb/gdbserver/tracepoint.c
+++ b/gdb/gdbserver/tracepoint.c
@@ -5931,14 +5931,14 @@ compile_tracepoint_condition (struct tracepoint *tpoint,
*jump_entry += 16;
}
-/* We'll need to adjust these when we consider bi-arch setups, and big
- endian machines. */
+/* We'll need to adjust these when we consider bi-arch setups. */
static int
write_inferior_data_ptr (CORE_ADDR where, CORE_ADDR ptr)
{
+ uintptr_t pptr = ptr;
return write_inferior_memory (where,
- (unsigned char *) &ptr, sizeof (void *));
+ (unsigned char *) &pptr, sizeof pptr);
}
/* The base pointer of the IPA's heap. This is the only memory the
--
2.7.0
next reply other threads:[~2016-01-22 13:57 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-22 13:57 Marcin Kościelnicki [this message]
2016-01-22 14:01 ` Pedro Alves
2016-01-22 14:06 ` Marcin Kościelnicki
2016-01-22 14:10 ` Pedro Alves
2016-01-26 13:32 ` Ulrich Weigand
2016-01-26 13:45 ` Marcin Kościelnicki
2016-01-26 13:50 ` Ulrich Weigand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1453471015-9921-1-git-send-email-koriakin@0x04.net \
--to=koriakin@0x04.net \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox