From 4a969cfa40f2f9bbb7bd08975751c9a6be872a2c Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 6 Mar 2012 13:54:59 +0000 Subject: 2012-03-06 Tristan Gingold * corefile.c (core_create_function_syms): Do not call bsearch if symbol_map_count is 0. --- gprof/ChangeLog | 5 +++++ gprof/corefile.c | 25 +++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/gprof/ChangeLog b/gprof/ChangeLog index 2eba327233..ac9c35c6be 100644 --- a/gprof/ChangeLog +++ b/gprof/ChangeLog @@ -1,3 +1,8 @@ +2012-03-06 Tristan Gingold + + * corefile.c (core_create_function_syms): Do not call bsearch if + symbol_map_count is 0. + 2012-02-06 Nick Clifton * po/sr.po: New Serbian translation. diff --git a/gprof/corefile.c b/gprof/corefile.c index e25d19bb06..9f93ceeab3 100644 --- a/gprof/corefile.c +++ b/gprof/corefile.c @@ -582,7 +582,7 @@ core_create_function_syms (void) bfd_vma max_vma = 0; int cxxclass; long i; - struct function_map * found; + struct function_map * found = NULL; int core_has_func_syms = 0; switch (core_bfd->xvec->flavour) @@ -609,10 +609,14 @@ core_create_function_syms (void) /* Don't create a symtab entry for a function that has a mapping to a file, unless it's the first function in the file. */ - found = (struct function_map *) bsearch (core_syms[i]->name, symbol_map, - symbol_map_count, - sizeof (struct function_map), - search_mapped_symbol); + if (symbol_map_count != 0) + { + /* Note: some systems (SunOS 5.8) crash if bsearch base argument + is NULL. */ + found = (struct function_map *) bsearch + (core_syms[i]->name, symbol_map, symbol_map_count, + sizeof (struct function_map), search_mapped_symbol); + } if (found == NULL || found->is_first) ++symtab.len; } @@ -643,9 +647,14 @@ core_create_function_syms (void) continue; } - found = (struct function_map *) bsearch (core_syms[i]->name, symbol_map, - symbol_map_count, - sizeof (struct function_map), search_mapped_symbol); + if (symbol_map_count != 0) + { + /* Note: some systems (SunOS 5.8) crash if bsearch base argument + is NULL. */ + found = (struct function_map *) bsearch + (core_syms[i]->name, symbol_map, symbol_map_count, + sizeof (struct function_map), search_mapped_symbol); + } if (found && ! found->is_first) continue; -- cgit v1.2.1