Re: [RFA] minsyms.c: Fix switching to GNU v3 ABI

Jim Blandy
2004-03-25T20:44:26Z

This looks good.

One comment: I notice that we actually remove the leading character
earlier in prim_record_minimal_symbol_and_info, to check if the name
is the same as that of the GCC compilation marker symbol. It would be
nicer if we could just remove the leading character once, at the top
of the function, and then simplify the the "__gnu_compiled" test.
Doing so shouldn't interfere with the GCC_COMPILED_FLAG_SYMBOL tests,
since the code already presumes those both start with 'g'.

If that works, please commit.

Corinna Vinschen <vinschen@redhat.com> writes:

> On Mar 10 18:54, Corinna Vinschen wrote:
> > * minsyms.c (install_minimal_symbols): Move dropping leading
> > char from linkage name from here...
> > (prim_record_minimal_symbol_and_info): ...to here.
>
> Corrected patch below. I forgot to remove the now unused leading_char
> >From install_minimal_symbols.
>
> Corinna
>
>
> Index: minsyms.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/minsyms.c,v
> retrieving revision 1.41
> diff -u -p -r1.41 minsyms.c
> --- minsyms.c 9 Feb 2004 19:13:46 -0000 1.41
> +++ minsyms.c 10 Mar 2004 18:20:36 -0000
> @@ -611,6 +611,8 @@ prim_record_minimal_symbol_and_info (con
> msymbol = &msym_bunch->contents[msym_bunch_index];
> SYMBOL_INIT_LANGUAGE_SPECIFIC (msymbol, language_unknown);
> SYMBOL_LANGUAGE (msymbol) = language_auto;
> + if (name[0] == get_symbol_leading_char (objfile->obfd))
> + ++name;
> SYMBOL_SET_NAMES (msymbol, (char *)name, strlen (name), objfile);
>
> SYMBOL_VALUE_ADDRESS (msymbol) = address;
> @@ -831,7 +833,6 @@ install_minimal_symbols (struct objfile
> struct msym_bunch *bunch;
> struct minimal_symbol *msymbols;
> int alloc_count;
> - char leading_char;
>
> if (msym_count > 0)
> {
> @@ -859,18 +860,11 @@ install_minimal_symbols (struct 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;
> }
>
>
> --
> Corinna Vinschen
> Cygwin Developer
> Red Hat, Inc.