Return zero only as the last step of qsort function.
authorNick Clifton <nickc@redhat.com>
Wed, 1 Aug 2001 16:10:42 +0000 (16:10 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 1 Aug 2001 16:10:42 +0000 (16:10 +0000)
bfd/ChangeLog
bfd/elf.c

index f451dde616eb1904af9501c3693a4c0e617d1190..71208e52c69886cc8f52e4561cdc7ec15eb8b4b3 100644 (file)
@@ -1,3 +1,7 @@
+2001-08-01  Adam Nemet  <anemet@lnxw.com>
+
+       * elf.c (elf_sort_sections): Return zero only as the last step.
+
 2001-08-01  Nick Clifton  <nickc@cambridge.redhat.com>
 
        * config.bfd (arm-vxworks): Change name of define from VXWORKS to
index 4e2d7ae8d99a34d069e6109a9b36a95ce3d67822..8dc2f3145447665a38122bfab488fbb92d7ef3dd 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -2677,18 +2677,22 @@ elf_sort_sections (arg1, arg2)
   if (TOEND (sec1))
     {
       if (TOEND (sec2))
-       return sec1->target_index - sec2->target_index;
+       {
+         /* If the indicies are the same, do not return 0
+            here, but continue to try the next comparison.  */
+         if (sec1->target_index - sec2->target_index != 0)
+           return sec1->target_index - sec2->target_index;
+       }
       else
        return 1;
     }
-
-  if (TOEND (sec2))
+  else if (TOEND (sec2))
     return -1;
 
 #undef TOEND
 
-  /* Sort by size, to put zero sized sections before others at the
-     same address.  */
+  /* Sort by size, to put zero sized sections
+     before others at the same address.  */
 
   if (sec1->_raw_size < sec2->_raw_size)
     return -1;