aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2024-04-02 16:06:50 +0100
committerNick Alcock <nick.alcock@oracle.com>2024-04-19 16:14:47 +0100
commit9049b960f2bc7f0cb9db80d255e9fbec9f476f0f (patch)
tree4532a9efb56ac06b2603ad8ef3759b1fb85e658f
parent0ebf1bdeeda1612dbe8e092dca765527a741e462 (diff)
downloadgdb-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.c4
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