This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] gdbserver/spu: strict-aliasing bug
- From: Pedro Alves <palves at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Thu, 05 Apr 2012 12:22:36 +0100
- Subject: [PATCH] gdbserver/spu: strict-aliasing bug
On PowerPC Fedora 16 (gcc 4.6.2), building GDBserver for --host=spu , I see:
../src/gdb/gdbserver/spu-low.c: In function âparse_spufs_runâ:
../src/gdb/gdbserver/spu-low.c:216:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
cc1: all warnings being treated as errors
I've applied the obvious fix below.
2012-04-05 Pedro Alves <palves@redhat.com>
-Werror=strict-aliasing
* spu-low.c (parse_spufs_run): Avoid dereferencing type-punned
pointer.
---
gdb/gdbserver/spu-low.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gdb/gdbserver/spu-low.c b/gdb/gdbserver/spu-low.c
index 2a720ae..1ecd60c 100644
--- a/gdb/gdbserver/spu-low.c
+++ b/gdb/gdbserver/spu-low.c
@@ -206,14 +206,14 @@ store_ppc_memory (CORE_ADDR memaddr, char *myaddr, int len)
static int
parse_spufs_run (int *fd, CORE_ADDR *addr)
{
- char buf[4];
+ unsigned int insn;
CORE_ADDR pc = fetch_ppc_register (32); /* nip */
/* Fetch instruction preceding current NIP. */
- if (fetch_ppc_memory (pc-4, buf, 4) != 0)
+ if (fetch_ppc_memory (pc-4, (char *) &insn, 4) != 0)
return 0;
/* It should be a "sc" instruction. */
- if (*(unsigned int *)buf != INSTR_SC)
+ if (insn != INSTR_SC)
return 0;
/* System call number should be NR_spu_run. */
if (fetch_ppc_register (0) != NR_spu_run)