This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 7/9] Rewrite lookup_static_symbol to use gdbarch routine


Doug Evans <xdje42@gmail.com> writes:

> struct symbol *
> lookup_static_symbol_aux (const char *name, const domain_enum domain)
> {
>   struct objfile *objfile;
>   struct symbol *sym;
>
>   sym = lookup_symbol_aux_symtabs (STATIC_BLOCK, name, domain);
>   if (sym != NULL)
>     return sym;
>
>   ALL_OBJFILES (objfile)
>   {
>     sym = lookup_symbol_aux_quick (objfile, STATIC_BLOCK, name, domain);
>     if (sym != NULL)
>       return sym;
>   }
>
>   return NULL;
> }
>
> Note what we're doing here.
> First we're searching over all expanded symtabs in all objfiles,
> and then we search partial/gdb_index tables in all objfiles.  Eh?
>
> Normally when looking up a symbol in a particular objfile
> we first list in expanded symtabs and then look in partial/gdb_index
> tables.  And *then* we try the next objfile.
>
> I can't think of any justification for the current behaviour.
>
> This patch changes things to be consistent,
> but it is a behavioural change.

Yes, it changes the behavior.  Here is an example in my mind, but not
sure it is correct or not, say, we have a static int foo defined in two
objfiles respectively (1.c and 2.c), foo is in the partial table of two
objfiles, but is only expanded to the full symtab of *one* objfile (2.c).

             1.c    2.c
  partial    foo    foo
  full              foo

before your patch, GDB gets foo from 2.c full table, and after it, GDB
gets foo from 1.c partial table.  Is it possible?

Regarding the change, we also need to update the comments to
iterate_over_objfiles_in_search_order in gdbarch.sh,

# Iterate over all objfiles in the order that makes the most sense
# for the architecture to make global symbol searches.
                               ^^^^^^^^^^^^^
> The testsuite passes, and any noticeable difference
> by this change would be dependent on the order in which
> symtabs got expanded.  Thus I can't think of a reason to not
> apply this change.

If read this
<https://www.sourceware.org/ml/gdb-patches/2012-05/msg00204.html>
correctly, Joel expressed the same intention there.

Since gdbarch method iterate_over_objfiles_in_search_order was added for
windows target and this patch uses it, we need to test it on windows target.
If you don't have mingw testing env, let me know, I'll see if I can do
the test.

-- 
Yao (éå)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]