Cast relcount to unsigned long when comparing with sec->reloc_count

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.
This commit is contained in:
H.J. Lu 2017-05-02 12:16:26 -07:00
parent d17f7b365c
commit 2ecf0cc317
2 changed files with 6 additions and 1 deletions

View 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> 2017-05-02 Nick Clifton <nickc@redhat.com>
* objcopy.c (merge_gnu_build_notes): Disable merge if there are * objcopy.c (merge_gnu_build_notes): Disable merge if there are

View 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 represent a single external reloc. Unfortunately the current BFD
API does not handle deleting relocs in such situations very well API does not handle deleting relocs in such situations very well
and so it is unsafe to proceed. */ and so it is unsafe to proceed. */
if (relcount > sec->reloc_count) if ((unsigned long) relcount > sec->reloc_count)
goto done; goto done;
/* Eliminate the duplicates. */ /* Eliminate the duplicates. */