diff options
author | Christian Biesinger <cbiesinger@google.com> | 2019-10-03 00:36:35 -0500 |
---|---|---|
committer | Christian Biesinger <cbiesinger@google.com> | 2019-10-19 15:45:33 -0500 |
commit | 39ef2f6256737db92f5d60fa201fe0b301bb8100 (patch) | |
tree | 13ff1a57f5ecac08df8f0ecdc2f3544cb4d97564 /gdb/buildsym.c | |
parent | 18338fcee6c75bf0b41f803b84ae15221676f8cd (diff) | |
download | gdb-39ef2f6256737db92f5d60fa201fe0b301bb8100.zip gdb-39ef2f6256737db92f5d60fa201fe0b301bb8100.tar.gz gdb-39ef2f6256737db92f5d60fa201fe0b301bb8100.tar.bz2 |
Replace some more qsort calls with std::sort
This has better typesafety, avoids a function pointer indirection,
and can benefit from inlining.
gdb/ChangeLog:
2019-10-19 Christian Biesinger <cbiesinger@google.com>
* bcache.c (bcache::print_statistics): Use std::sort instead of qsort.
* breakpoint.c (bp_locations_compare): Rename to...
(bp_location_is_less_than): ...this, and change to std::sort semantics.
(update_global_location_list): Use std::sort instead of qsort.
* buildsym.c (compare_line_numbers): Rename to...
(lte_is_less_than): ...this, and change to std::sort semantics.
(buildsym_compunit::end_symtab_with_blockvector): Use std::sort
instead of qsort.
* disasm.c (compare_lines): Rename to...
(line_is_less_than): ...this, and change to std::sort semantics.
(do_mixed_source_and_assembly_deprecated): Call std::sort instead
of qsort.
* dwarf2-frame.c (qsort_fde_cmp): Rename to...
(fde_is_less_than): ...this, and change to std::sort semantics.
(dwarf2_build_frame_info): Call std::sort instead of qsort.
* mdebugread.c (compare_blocks):
(block_is_less_than): ...this, and change to std::sort semantics.
(sort_blocks): Call std::sort instead of qsort.
* objfiles.c (qsort_cmp): Rename to...
(sort_cmp): ...this, and change to std::sort semantics.
(update_section_map): Call std::sort instead of qsort.
* remote.c (compare_pnums): Remove.
(map_regcache_remote_table): Call std::sort instead of qsort.
* utils.c (compare_positive_ints): Remove.
* utils.h (compare_positive_ints): Remove.
* xcoffread.c (compare_lte): Remove.
(arrange_linetable): Call std::sort instead of qsort.
Change-Id: Ibcddce12a3d07448701e731b7150fa23611d86de
Diffstat (limited to 'gdb/buildsym.c')
-rw-r--r-- | gdb/buildsym.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/gdb/buildsym.c b/gdb/buildsym.c index 8e05706..954a610 100644 --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -49,8 +49,6 @@ struct pending_block struct block *block; }; -static int compare_line_numbers (const void *ln1p, const void *ln2p); - /* Initial sizes of data structures. These are realloc'd larger if needed, and realloc'd down to the size actually used, when completed. */ @@ -729,23 +727,20 @@ buildsym_compunit::record_line (struct subfile *subfile, int line, /* Needed in order to sort line tables from IBM xcoff files. Sigh! */ -static int -compare_line_numbers (const void *ln1p, const void *ln2p) +static bool +lte_is_less_than (const linetable_entry &ln1, const linetable_entry &ln2) { - struct linetable_entry *ln1 = (struct linetable_entry *) ln1p; - struct linetable_entry *ln2 = (struct linetable_entry *) ln2p; - /* Note: this code does not assume that CORE_ADDRs can fit in ints. Please keep it that way. */ - if (ln1->pc < ln2->pc) - return -1; + if (ln1.pc < ln2.pc) + return true; - if (ln1->pc > ln2->pc) - return 1; + if (ln1.pc > ln2.pc) + return false; /* If pc equal, sort by line. I'm not sure whether this is optimum behavior (see comment at struct linetable in symtab.h). */ - return ln1->line - ln2->line; + return ln1.line < ln2.line; } /* Subroutine of end_symtab to simplify it. Look for a subfile that @@ -968,9 +963,10 @@ buildsym_compunit::end_symtab_with_blockvector (struct block *static_block, scrambled in reordered executables. Sort it if OBJF_REORDERED is true. */ if (m_objfile->flags & OBJF_REORDERED) - qsort (subfile->line_vector->item, - subfile->line_vector->nitems, - sizeof (struct linetable_entry), compare_line_numbers); + std::sort (subfile->line_vector->item, + subfile->line_vector->item + + subfile->line_vector->nitems, + lte_is_less_than); } /* Allocate a symbol table if necessary. */ |