From 71ee43e0f74aeeb2e741180532884fa7b3fdf7f2 Mon Sep 17 00:00:00 2001 From: corinna Date: Mon, 29 Mar 2004 11:26:02 +0000 Subject: [PATCH] * minsyms.c (install_minimal_symbols): Move dropping leading char from linkage name from here... (prim_record_minimal_symbol_and_info): ...to here. Simplify test for "__gnu_compiled*" symbols. --- gdb/ChangeLog | 7 +++++++ gdb/minsyms.c | 47 ++++++++++++++++++----------------------------- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 77ad9cb057..153997a56d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2004-03-29 Corinna Vinschen + + * minsyms.c (install_minimal_symbols): Move dropping leading + char from linkage name from here... + (prim_record_minimal_symbol_and_info): ...to here. Simplify + test for "__gnu_compiled*" symbols. + 2004-03-28 Jim Blandy * rs6000-tdep.c (skip_prologue): Recognize moves from argument diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 83aef9d442..b06c3f09d6 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -580,26 +580,23 @@ prim_record_minimal_symbol_and_info (const char *name, CORE_ADDR address, struct msym_bunch *new; struct minimal_symbol *msymbol; - if (ms_type == mst_file_text) - { - /* Don't put gcc_compiled, __gnu_compiled_cplus, and friends into - the minimal symbols, because if there is also another symbol - at the same address (e.g. the first function of the file), - lookup_minimal_symbol_by_pc would have no way of getting the - right one. */ - if (name[0] == 'g' - && (strcmp (name, GCC_COMPILED_FLAG_SYMBOL) == 0 - || strcmp (name, GCC2_COMPILED_FLAG_SYMBOL) == 0)) - return (NULL); - - { - const char *tempstring = name; - if (tempstring[0] == get_symbol_leading_char (objfile->obfd)) - ++tempstring; - if (strncmp (tempstring, "__gnu_compiled", 14) == 0) - return (NULL); - } - } + /* Don't put gcc_compiled, __gnu_compiled_cplus, and friends into + the minimal symbols, because if there is also another symbol + at the same address (e.g. the first function of the file), + lookup_minimal_symbol_by_pc would have no way of getting the + right one. */ + if (ms_type == mst_file_text && name[0] == 'g' + && (strcmp (name, GCC_COMPILED_FLAG_SYMBOL) == 0 + || strcmp (name, GCC2_COMPILED_FLAG_SYMBOL) == 0)) + return (NULL); + + /* It's safe to strip the leading char here once, since the name + is also stored stripped in the minimal symbol table. */ + if (name[0] == get_symbol_leading_char (objfile->obfd)) + ++name; + + if (ms_type == mst_file_text && strncmp (name, "__gnu_compiled", 14) == 0) + return (NULL); if (msym_bunch_index == BUNCH_SIZE) { @@ -831,7 +828,6 @@ install_minimal_symbols (struct objfile *objfile) struct msym_bunch *bunch; struct minimal_symbol *msymbols; int alloc_count; - char leading_char; if (msym_count > 0) { @@ -859,18 +855,11 @@ install_minimal_symbols (struct objfile *objfile) each bunch is full. */ mcount = objfile->minimal_symbol_count; - leading_char = get_symbol_leading_char (objfile->obfd); for (bunch = msym_bunch; bunch != NULL; bunch = bunch->next) { for (bindex = 0; bindex < msym_bunch_index; bindex++, mcount++) - { - msymbols[mcount] = bunch->contents[bindex]; - if (SYMBOL_LINKAGE_NAME (&msymbols[mcount])[0] == leading_char) - { - SYMBOL_LINKAGE_NAME (&msymbols[mcount])++; - } - } + msymbols[mcount] = bunch->contents[bindex]; msym_bunch_index = BUNCH_SIZE; } -- 2.11.0