Warning in elf32-sh.c

Nick Clifton nickc@redhat.com
Tue Nov 21 11:46:00 GMT 2000


Hi Ben,

: This patch eliminates a warning in elf32-sh.c.  I'm not sure if it's the
: right fix or not -- this code always suffered from a potential infinite
: loop.
: 
: Ben
: 
: 
: @@ -789,7 +1100,7 @@
:      {
:        bfd_vma start0 = start - 4;
: 
: -      while (start0 >= 0 && IS_PPI (contents + start0))
: +      while (IS_PPI (contents + start0))
:         start0 -= 2;
:        start0 = start - 2 - ((start - start0) & 2);
:        start = start0 - cum_diff - 2;


I think a better patch would be this:


Index: elf32-sh.c
===================================================================
RCS file: /cvs/src//src/bfd/elf32-sh.c,v
retrieving revision 1.22
diff -p -r1.22 elf32-sh.c
*** elf32-sh.c	2000/11/11 06:43:42	1.22
--- elf32-sh.c	2000/11/21 19:44:08
*************** sh_elf_reloc_loop (r_type, input_bfd, in
*** 789,795 ****
      {
        bfd_vma start0 = start - 4;
  
!       while (start0 >= 0 && IS_PPI (contents + start0))
  	  start0 -= 2;
        start0 = start - 2 - ((start - start0) & 2);
        start = start0 - cum_diff - 2;
--- 789,795 ----
      {
        bfd_vma start0 = start - 4;
  
!       while (start0 && IS_PPI (contents + start0))
  	  start0 -= 2;
        start0 = start - 2 - ((start - start0) & 2);
        start = start0 - cum_diff - 2;


Which removes the possibilty of an infinite loop, and more closely
matches the intentions of the original programmer.  I will check this
version into the sources.

Cheers
	Nick


More information about the Binutils mailing list