diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2024-04-02 16:06:50 +0100 |
---|---|---|
committer | Nick Alcock <nick.alcock@oracle.com> | 2024-04-19 16:14:47 +0100 |
commit | 9049b960f2bc7f0cb9db80d255e9fbec9f476f0f (patch) | |
tree | 4532a9efb56ac06b2603ad8ef3759b1fb85e658f | |
parent | 0ebf1bdeeda1612dbe8e092dca765527a741e462 (diff) | |
download | gdb-9049b960f2bc7f0cb9db80d255e9fbec9f476f0f.zip gdb-9049b960f2bc7f0cb9db80d255e9fbec9f476f0f.tar.gz gdb-9049b960f2bc7f0cb9db80d255e9fbec9f476f0f.tar.bz2 |
libctf: make ctf_lookup of symbols by name work in more cases
In particular, we don't need a symbol table if we're looking up a
symbol by name and that type of symbol has an indexed symtypetab,
since in that case we get the name from the symtypetab index, not
from the symbol table.
This lets you do symbol lookups in unlinked object files and unlinked
dicts written out via libctf's writeout functions.
libctf/
* ctf-lookup.c (ctf_lookup_by_sym_or_name): Allow lookups
by index even when there is no symtab.
-rw-r--r-- | libctf/ctf-lookup.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libctf/ctf-lookup.c b/libctf/ctf-lookup.c index aa251ba..f37dd7e 100644 --- a/libctf/ctf-lookup.c +++ b/libctf/ctf-lookup.c @@ -1045,7 +1045,9 @@ ctf_lookup_by_sym_or_name (ctf_dict_t *fp, unsigned long symidx, } err = ECTF_NOSYMTAB; - if (sp->cts_data == NULL) + if (sp->cts_data == NULL && symname == NULL && + ((is_function && !fp->ctf_funcidx_names) || + (!is_function && !fp->ctf_objtidx_names))) goto try_parent; /* This covers both out-of-range lookups by index and a dynamic dict which |