From 11fde611c4e37bc23193fb6b05ece79b338cee71 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Sun, 12 Feb 2012 19:25:29 +0000 Subject: [PATCH] gdb/ * ppc-linux-nat.c (fetch_register, store_register): Fix GCC aliasing compilation warning. --- gdb/ChangeLog | 5 +++++ gdb/ppc-linux-nat.c | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e11ad4aa3d3..607a570c26b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2012-02-12 Jan Kratochvil + + * ppc-linux-nat.c (fetch_register, store_register): Fix GCC aliasing + compilation warning. + 2012-02-12 Jan Kratochvil Fix crash on loaded shlibs without loaded exec_bfd. diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c index af80919890a..2c98f765e83 100644 --- a/gdb/ppc-linux-nat.c +++ b/gdb/ppc-linux-nat.c @@ -593,9 +593,10 @@ fetch_register (struct regcache *regcache, int tid, int regno) bytes_transferred < register_size (gdbarch, regno); bytes_transferred += sizeof (long)) { + long l; + errno = 0; - *(long *) &buf[bytes_transferred] - = ptrace (PTRACE_PEEKUSER, tid, (PTRACE_TYPE_ARG3) regaddr, 0); + l = ptrace (PTRACE_PEEKUSER, tid, (PTRACE_TYPE_ARG3) regaddr, 0); regaddr += sizeof (long); if (errno != 0) { @@ -604,6 +605,7 @@ fetch_register (struct regcache *regcache, int tid, int regno) gdbarch_register_name (gdbarch, regno), regno); perror_with_name (message); } + memcpy (&buf[bytes_transferred], &l, sizeof (l)); } /* Now supply the register. Keep in mind that the regcache's idea @@ -1073,9 +1075,11 @@ store_register (const struct regcache *regcache, int tid, int regno) for (i = 0; i < bytes_to_transfer; i += sizeof (long)) { + long l; + + memcpy (&l, &buf[i], sizeof (l)); errno = 0; - ptrace (PTRACE_POKEUSER, tid, (PTRACE_TYPE_ARG3) regaddr, - *(long *) &buf[i]); + ptrace (PTRACE_POKEUSER, tid, (PTRACE_TYPE_ARG3) regaddr, l); regaddr += sizeof (long); if (errno == EIO -- 2.30.2