PR tdep/9390: Fix possible typo on xstorxstormy16-tdep.c

Message ID 1410898465-28350-1-git-send-email-sergiodj@redhat.com
State New, archived
Headers

Commit Message

Sergio Durigan Junior Sept. 16, 2014, 8:14 p.m. UTC
  This patch (probably) fixes the bug described in PR tdep/9390, which
is about a wrong check in the following code:

    ...

    /* optional copying of args in r2-r7 to r10-r13.  */
    /* Probably only in optimized case but legal action for prologue.  */
    else if ((inst & 0xff00) == 0x4600	/* 46SD   mov rD, rS */
	     && (inst & 0x00f0) >= 0x0020 && (inst & 0x00f0) <= 0x0070
	     && (inst & 0x000f) >= 0x00a0 && (inst & 0x000f) <= 0x000d)
                ^^^^^^^^^^^^^^^^^^^^^^^^^
    ...

This condition will never trigger, and the fix proposed in the bug
(which made sense to me) was to test against 0x000a.  I tried finding
documentation about this target, but couldn't find anything.  I don't
even know if it is still used, but decided to submit the fix anyway.

Tested on my x86_64 Fedora 20 GNU/Linux.

gdb/ChangeLog:
2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>

	PR tdep/9390
	* xstorxstormy16-tdep.c (xstormy16_analyze_prologue): Fix possible
	typo when using logical AND to determine instruction type.
---
 gdb/ChangeLog        | 6 ++++++
 gdb/xstormy16-tdep.c | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)
  

Comments

Pedro Alves Sept. 16, 2014, 8:27 p.m. UTC | #1
[Adding Corinna, listed as xstormy16 maintainer in MAINTAINERS.
Hi Corinna.  Do we still care about this port?]

The fix makes sense to me, though I know nothing about
xstormy16 either.

Thanks,
Pedro Alves

On 09/16/2014 09:14 PM, Sergio Durigan Junior wrote:
> This patch (probably) fixes the bug described in PR tdep/9390, which
> is about a wrong check in the following code:
> 
>     ...
> 
>     /* optional copying of args in r2-r7 to r10-r13.  */
>     /* Probably only in optimized case but legal action for prologue.  */
>     else if ((inst & 0xff00) == 0x4600	/* 46SD   mov rD, rS */
> 	     && (inst & 0x00f0) >= 0x0020 && (inst & 0x00f0) <= 0x0070
> 	     && (inst & 0x000f) >= 0x00a0 && (inst & 0x000f) <= 0x000d)
>                 ^^^^^^^^^^^^^^^^^^^^^^^^^
>     ...
> 
> This condition will never trigger, and the fix proposed in the bug
> (which made sense to me) was to test against 0x000a.  I tried finding
> documentation about this target, but couldn't find anything.  I don't
> even know if it is still used, but decided to submit the fix anyway.
> 
> Tested on my x86_64 Fedora 20 GNU/Linux.
> 
> gdb/ChangeLog:
> 2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
> 
> 	PR tdep/9390
> 	* xstorxstormy16-tdep.c (xstormy16_analyze_prologue): Fix possible
> 	typo when using logical AND to determine instruction type.
> ---
>  gdb/ChangeLog        | 6 ++++++
>  gdb/xstormy16-tdep.c | 2 +-
>  2 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> index 8216274..622976d 100644
> --- a/gdb/ChangeLog
> +++ b/gdb/ChangeLog
> @@ -1,5 +1,11 @@
>  2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
>  
> +	PR tdep/9390
> +	* xstorxstormy16-tdep.c (xstormy16_analyze_prologue): Fix possible
> +	typo when using logical AND to determine instruction type.
> +
> +2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
> +
>  	* objc-lang.c (find_implementation_from_class): Remove dead code.
>  
>  2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
> diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c
> index af3ff32..9692742 100644
> --- a/gdb/xstormy16-tdep.c
> +++ b/gdb/xstormy16-tdep.c
> @@ -374,7 +374,7 @@ xstormy16_analyze_prologue (struct gdbarch *gdbarch,
>        /* Probably only in optimized case but legal action for prologue.  */
>        else if ((inst & 0xff00) == 0x4600	/* 46SD   mov rD, rS */
>  	       && (inst & 0x00f0) >= 0x0020 && (inst & 0x00f0) <= 0x0070
> -	       && (inst & 0x000f) >= 0x00a0 && (inst & 0x000f) <= 0x000d)
> +	       && (inst & 0x000f) >= 0x000a && (inst & 0x000f) <= 0x000d)
>  	;
>  
>        /* Optional copying of args in r2-r7 to stack.  */
>
  
Corinna Vinschen Oct. 8, 2014, 8:32 a.m. UTC | #2
On Sep 16 21:27, Pedro Alves wrote:
> [Adding Corinna, listed as xstormy16 maintainer in MAINTAINERS.
> Hi Corinna.  Do we still care about this port?]

Hi Pedro.  Sorry for the delay.  Yes, we still care for this port.

> The fix makes sense to me, though I know nothing about
> xstormy16 either.

The patch is fine.  The expression is trying to check for certain
registers in a mov, and the register numbers are encoded in the lowest
nibble.  There's definitely a typo.


Thanks,
Corinna

> 
> Thanks,
> Pedro Alves
> 
> On 09/16/2014 09:14 PM, Sergio Durigan Junior wrote:
> > This patch (probably) fixes the bug described in PR tdep/9390, which
> > is about a wrong check in the following code:
> > 
> >     ...
> > 
> >     /* optional copying of args in r2-r7 to r10-r13.  */
> >     /* Probably only in optimized case but legal action for prologue.  */
> >     else if ((inst & 0xff00) == 0x4600	/* 46SD   mov rD, rS */
> > 	     && (inst & 0x00f0) >= 0x0020 && (inst & 0x00f0) <= 0x0070
> > 	     && (inst & 0x000f) >= 0x00a0 && (inst & 0x000f) <= 0x000d)
> >                 ^^^^^^^^^^^^^^^^^^^^^^^^^
> >     ...
> > 
> > This condition will never trigger, and the fix proposed in the bug
> > (which made sense to me) was to test against 0x000a.  I tried finding
> > documentation about this target, but couldn't find anything.  I don't
> > even know if it is still used, but decided to submit the fix anyway.
> > 
> > Tested on my x86_64 Fedora 20 GNU/Linux.
> > 
> > gdb/ChangeLog:
> > 2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
> > 
> > 	PR tdep/9390
> > 	* xstorxstormy16-tdep.c (xstormy16_analyze_prologue): Fix possible
> > 	typo when using logical AND to determine instruction type.
> > ---
> >  gdb/ChangeLog        | 6 ++++++
> >  gdb/xstormy16-tdep.c | 2 +-
> >  2 files changed, 7 insertions(+), 1 deletion(-)
> > 
> > diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> > index 8216274..622976d 100644
> > --- a/gdb/ChangeLog
> > +++ b/gdb/ChangeLog
> > @@ -1,5 +1,11 @@
> >  2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
> >  
> > +	PR tdep/9390
> > +	* xstorxstormy16-tdep.c (xstormy16_analyze_prologue): Fix possible
> > +	typo when using logical AND to determine instruction type.
> > +
> > +2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
> > +
> >  	* objc-lang.c (find_implementation_from_class): Remove dead code.
> >  
> >  2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
> > diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c
> > index af3ff32..9692742 100644
> > --- a/gdb/xstormy16-tdep.c
> > +++ b/gdb/xstormy16-tdep.c
> > @@ -374,7 +374,7 @@ xstormy16_analyze_prologue (struct gdbarch *gdbarch,
> >        /* Probably only in optimized case but legal action for prologue.  */
> >        else if ((inst & 0xff00) == 0x4600	/* 46SD   mov rD, rS */
> >  	       && (inst & 0x00f0) >= 0x0020 && (inst & 0x00f0) <= 0x0070
> > -	       && (inst & 0x000f) >= 0x00a0 && (inst & 0x000f) <= 0x000d)
> > +	       && (inst & 0x000f) >= 0x000a && (inst & 0x000f) <= 0x000d)
> >  	;
> >  
> >        /* Optional copying of args in r2-r7 to stack.  */
> >
  
Sergio Durigan Junior Oct. 9, 2014, 5:47 p.m. UTC | #3
On Wednesday, October 08 2014, Corinna Vinschen wrote:

> On Sep 16 21:27, Pedro Alves wrote:
>> [Adding Corinna, listed as xstormy16 maintainer in MAINTAINERS.
>> Hi Corinna.  Do we still care about this port?]
>
> Hi Pedro.  Sorry for the delay.  Yes, we still care for this port.
>
>> The fix makes sense to me, though I know nothing about
>> xstormy16 either.
>
> The patch is fine.  The expression is trying to check for certain
> registers in a mov, and the register numbers are encoded in the lowest
> nibble.  There's definitely a typo.

Thanks, Corinna.

I have pushed the patch.

  <https://sourceware.org/ml/gdb-cvs/2014-10/msg00026.html>
  
Corinna Vinschen Oct. 9, 2014, 6:01 p.m. UTC | #4
On Oct  9 13:47, Sergio Durigan Junior wrote:
> On Wednesday, October 08 2014, Corinna Vinschen wrote:
> 
> > On Sep 16 21:27, Pedro Alves wrote:
> >> [Adding Corinna, listed as xstormy16 maintainer in MAINTAINERS.
> >> Hi Corinna.  Do we still care about this port?]
> >
> > Hi Pedro.  Sorry for the delay.  Yes, we still care for this port.
> >
> >> The fix makes sense to me, though I know nothing about
> >> xstormy16 either.
> >
> > The patch is fine.  The expression is trying to check for certain
> > registers in a mov, and the register numbers are encoded in the lowest
> > nibble.  There's definitely a typo.
> 
> Thanks, Corinna.
> 
> I have pushed the patch.
> 
>   <https://sourceware.org/ml/gdb-cvs/2014-10/msg00026.html>

Thanks!


Corinna
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8216274..622976d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@ 
 2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
 
+	PR tdep/9390
+	* xstorxstormy16-tdep.c (xstormy16_analyze_prologue): Fix possible
+	typo when using logical AND to determine instruction type.
+
+2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+
 	* objc-lang.c (find_implementation_from_class): Remove dead code.
 
 2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c
index af3ff32..9692742 100644
--- a/gdb/xstormy16-tdep.c
+++ b/gdb/xstormy16-tdep.c
@@ -374,7 +374,7 @@  xstormy16_analyze_prologue (struct gdbarch *gdbarch,
       /* Probably only in optimized case but legal action for prologue.  */
       else if ((inst & 0xff00) == 0x4600	/* 46SD   mov rD, rS */
 	       && (inst & 0x00f0) >= 0x0020 && (inst & 0x00f0) <= 0x0070
-	       && (inst & 0x000f) >= 0x00a0 && (inst & 0x000f) <= 0x000d)
+	       && (inst & 0x000f) >= 0x000a && (inst & 0x000f) <= 0x000d)
 	;
 
       /* Optional copying of args in r2-r7 to stack.  */