fix strict-aliasing warnings
authorNathan Froyd <froydnj@codesourcery.com>
Wed, 27 Apr 2011 18:37:40 +0000 (18:37 +0000)
committerNathan Froyd <froydnj@codesourcery.com>
Wed, 27 Apr 2011 18:37:40 +0000 (18:37 +0000)
* linux-x86-low.c (amd64_emit_const): Call memcpy instead of
casting pointers.
(amd64_emit_reg, amd64_emit_int_call_1, amd64_emit_void_call_2):
(i386_emit_const, i386_emit_reg, i386_emit_int_call_1):
(i386_emit_void_call_2): Likewise.

gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-x86-low.c

index 1e9ea4a22ef8748a9691571b3e1a1b995abe465c..fd013275033c5cbde3ea533c154d0688bdf369bc 100644 (file)
@@ -1,3 +1,11 @@
+2011-04-27  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * linux-x86-low.c (amd64_emit_const): Call memcpy instead of
+       casting pointers.
+       (amd64_emit_reg, amd64_emit_int_call_1, amd64_emit_void_call_2):
+       (i386_emit_const, i386_emit_reg, i386_emit_int_call_1):
+       (i386_emit_void_call_2): Likewise.
+
 2011-04-26  Yao Qi  <yao@codesourcery.com>
 
         * linux-low.c: Move common macros to linux-ptrace.h.
index 88f177d763808bf6cd812bba6d31b3c27a98d322..027a5635d687967d13a0826cd481f79ec4444f46 100644 (file)
@@ -1819,7 +1819,7 @@ amd64_emit_const (LONGEST num)
 
   i = 0;
   buf[i++] = 0x48;  buf[i++] = 0xb8; /* mov $<n>,%rax */
-  *((LONGEST *) (&buf[i])) = num;
+  memcpy (&buf[i], &num, sizeof (num));
   i += 8;
   append_insns (&buildaddr, i, buf);
   current_insn_ptr = buildaddr;
@@ -1876,7 +1876,7 @@ amd64_emit_reg (int reg)
   buildaddr = current_insn_ptr;
   i = 0;
   buf[i++] = 0xbe; /* mov $<n>,%esi */
-  *((int *) (&buf[i])) = reg;
+  memcpy (&buf[i], &reg, sizeof (reg));
   i += 4;
   append_insns (&buildaddr, i, buf);
   current_insn_ptr = buildaddr;
@@ -1959,7 +1959,7 @@ amd64_emit_int_call_1 (CORE_ADDR fn, int arg1)
   buildaddr = current_insn_ptr;
   i = 0;
   buf[i++] = 0xbf; /* movl $<n>,%edi */
-  *((int *) (&buf[i])) = arg1;
+  memcpy (&buf[i], &arg1, sizeof (arg1));
   i += 4;
   append_insns (&buildaddr, i, buf);
   current_insn_ptr = buildaddr;
@@ -1978,7 +1978,7 @@ amd64_emit_void_call_2 (CORE_ADDR fn, int arg1)
   buildaddr = current_insn_ptr;
   i = 0;
   buf[i++] = 0xbf; /* movl $<n>,%edi */
-  *((int *) (&buf[i])) = arg1;
+  memcpy (&buf[i], &arg1, sizeof (arg1));
   i += 4;
   append_insns (&buildaddr, i, buf);
   current_insn_ptr = buildaddr;
@@ -2301,18 +2301,19 @@ static void
 i386_emit_const (LONGEST num)
 {
   unsigned char buf[16];
-  int i, hi;
+  int i, hi, lo;
   CORE_ADDR buildaddr = current_insn_ptr;
 
   i = 0;
   buf[i++] = 0xb8; /* mov $<n>,%eax */
-  *((int *) (&buf[i])) = (num & 0xffffffff);
+  lo = num & 0xffffffff;
+  memcpy (&buf[i], &lo, sizeof (lo));
   i += 4;
   hi = ((num >> 32) & 0xffffffff);
   if (hi)
     {
       buf[i++] = 0xbb; /* mov $<n>,%ebx */
-      *((int *) (&buf[i])) = hi;
+      memcpy (&buf[i], &hi, sizeof (hi));
       i += 4;
     }
   else
@@ -2351,7 +2352,7 @@ i386_emit_reg (int reg)
   buildaddr = current_insn_ptr;
   i = 0;
   buf[i++] = 0xb8; /* mov $<n>,%eax */
-  *((int *) (&buf[i])) = reg;
+  memcpy (&buf[i], &reg, sizeof (reg));
   i += 4;
   append_insns (&buildaddr, i, buf);
   current_insn_ptr = buildaddr;
@@ -2451,7 +2452,7 @@ i386_emit_int_call_1 (CORE_ADDR fn, int arg1)
   buf[i++] = 0xc7;  /* movl $<arg1>,(%esp) */
   buf[i++] = 0x04;
   buf[i++] = 0x24;
-  *((int *) (&buf[i])) = arg1;
+  memcpy (&buf[i], &arg1, sizeof (arg1));
   i += 4;
   append_insns (&buildaddr, i, buf);
   current_insn_ptr = buildaddr;
@@ -2486,7 +2487,7 @@ i386_emit_void_call_2 (CORE_ADDR fn, int arg1)
   buf[i++] = 0xc7;  /* movl $<arg1>,(%esp) */
   buf[i++] = 0x04;
   buf[i++] = 0x24;
-  *((int *) (&buf[i])) = arg1;
+  memcpy (&buf[i], &arg1, sizeof (arg1));
   i += 4;
   append_insns (&buildaddr, i, buf);
   current_insn_ptr = buildaddr;