Fix overflow in addend_compare

Andreas Schwab schwab@suse.de
Tue Oct 17 01:27:00 GMT 2006


Trying to put the difference between two bfd_vma values in an int is not
going to give useful results.  Committed as obvious.

Andreas.

2006-10-16  Andreas Schwab  <schwab@suse.de>

	* elfxx-ia64.c (addend_compare): Properly compute return value.

--- bfd/elfxx-ia64.c.~1.190.~	2006-09-18 10:58:08.000000000 +0200
+++ bfd/elfxx-ia64.c	2006-10-16 19:15:32.000000000 +0200
@@ -2209,7 +2209,7 @@ addend_compare (const void *xp, const vo
   const struct elfNN_ia64_dyn_sym_info *y
     = (const struct elfNN_ia64_dyn_sym_info *) yp;
 
-  return x->addend - y->addend;
+  return x->addend < y->addend ? -1 : x->addend > y->addend ? 1 : 0;
 }
 
 /* Sort elfNN_ia64_dyn_sym_info array and remove duplicates.  */

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Binutils mailing list