This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PR 21266, unstable qsort in bfd/elf64-ppc.c
- From: Alan Modra <amodra at gmail dot com>
- To: binutils at sourceware dot org
- Date: Mon, 20 Mar 2017 10:29:10 +1030
- Subject: PR 21266, unstable qsort in bfd/elf64-ppc.c
- Authentication-results: sourceware.org; auth=none
Classic fix to unstable qsort, when sorting pointers. Note that there
is a dereference of the qsort comparison function parameters earlier
in compare_symbols, so this isn't making the mistake of trying to
stabilize by looking at the address of memory that qsort is shuffling.
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 5dea352..50e76c2 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2017-03-20 Alan Modra <amodra@gmail.com>
+
+ PR 21266
+ * elf64-ppc.c (compare_symbols): Stabilize sort.
+
2017-03-18 Alan Modra <amodra@gmail.com>
* elf64-ppc.c (struct ppc_link_hash_table): Add
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 1193c1f..ae39032 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -3188,7 +3188,7 @@ compare_symbols (const void *ap, const void *bp)
if ((a->flags & BSF_DYNAMIC) == 0 && (b->flags & BSF_DYNAMIC) != 0)
return 1;
- return 0;
+ return a > b;
}
/* Search SYMS for a symbol of the given VALUE. */
--
Alan Modra
Australia Development Lab, IBM