Cast relcount to unsigned long when comparing with sec->reloc_count
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 2 May 2017 19:16:26 +0000 (12:16 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 2 May 2017 19:16:26 +0000 (12:16 -0700)
The type of relcount is long and the type of sec->reloc_count is
unsigned int.  On 32-bit hosts, GCC issues an error:

objcopy.c:2144:20: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
       if (relcount > sec->reloc_count)

Cast relcount to unsigned long to silence GCC.

* objcopy.c (merge_gnu_build_notes): Cast relcount to unsigned
long when comparing with sec->reloc_count.

binutils/ChangeLog
binutils/objcopy.c

index d13dbb637d45918330dfff4ea0aa0d44779e1633..b3a539ab49e414e8a0ae2674e790eb45e2833d15 100644 (file)
@@ -1,3 +1,8 @@
+2017-05-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * objcopy.c (merge_gnu_build_notes): Cast relcount to unsigned
+       long when comparing with sec->reloc_count.
+
 2017-05-02  Nick Clifton  <nickc@redhat.com>
 
        * objcopy.c (merge_gnu_build_notes): Disable merge if there are
index 36952ecd6f587cb5acf17774215ec848744afb9a..ccb5e12798e9ed124c51f9702ccb492655f0d2b7 100644 (file)
@@ -2141,7 +2141,7 @@ merge_gnu_build_notes (bfd * abfd, asection * sec, bfd_size_type size, bfd_byte
         represent a single external reloc.  Unfortunately the current BFD
         API does not handle deleting relocs in such situations very well
         and so it is unsafe to proceed.  */
-      if (relcount > sec->reloc_count)
+      if ((unsigned long) relcount > sec->reloc_count)
        goto done;
 
       /* Eliminate the duplicates.  */