[obv] Fix non-gcc build regression due to my amd64-xmm-skip [Re: FreeBSD broken build]

Jan Kratochvil jan.kratochvil@redhat.com
Tue Sep 13 09:25:00 GMT 2011


Hi Andreas,

On Tue, 13 Sep 2011 09:41:54 +0200, Andreas Tobler wrote:
> this commit http://sourceware.org/ml/gdb-cvs/2011-09/msg00056.html
> broke builds where one uses (has to use) gcc < 4.3. Afaik, gcc-4.3 is the
> first compiler which supports binary constants.
[...]
> ../../src/gdb/amd64-tdep.c:1967:33: error: invalid suffix "b00111111" on integer constant
> 
> Yes, I can use a newer gcc. But I thought I'd let you know.

this is sure not acceptable, sorry.

Checked in.


Thanks,
Jan


http://sourceware.org/ml/gdb-cvs/2011-09/msg00072.html

--- src/gdb/ChangeLog	2011/09/12 21:24:47	1.13323
+++ src/gdb/ChangeLog	2011/09/13 08:26:05	1.13324
@@ -1,3 +1,8 @@
+2011-09-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Fix compatibility with gcc < 4.3 and non-gcc compilers.
+	* amd64-tdep.c (amd64_skip_xmm_prologue): Convert 0b constants.
+
 2011-09-12  Pedro Alves  <pedro@codesourcery.com>
 	    Matt Rice  <ratmice@gmail.com>
 
--- src/gdb/amd64-tdep.c	2011/09/09 19:41:13	1.93
+++ src/gdb/amd64-tdep.c	2011/09/13 08:26:11	1.94
@@ -1962,17 +1962,19 @@
   offset = 4;
   for (xmmreg = 0; xmmreg < 8; xmmreg++)
     {
-      /* movaps %xmmreg?,-0x??(%rbp) */
+      /* 0x0f 0x29 0b??000101 movaps %xmmreg?,-0x??(%rbp) */
       if (buf[offset] != 0x0f || buf[offset + 1] != 0x29
-          || (buf[offset + 2] & 0b00111111) != (xmmreg << 3 | 0b101))
+          || (buf[offset + 2] & 0x3f) != (xmmreg << 3 | 0x5))
 	return pc;
 
-      if ((buf[offset + 2] & 0b11000000) == 0b01000000)
+      /* 0b01?????? */
+      if ((buf[offset + 2] & 0xc0) == 0x40)
 	{
 	  /* 8-bit displacement.  */
 	  offset += 4;
 	}
-      else if ((buf[offset + 2] & 0b11000000) == 0b10000000)
+      /* 0b10?????? */
+      else if ((buf[offset + 2] & 0xc0) == 0x80)
 	{
 	  /* 32-bit displacement.  */
 	  offset += 7;



More information about the Gdb-patches mailing list