From: Nick Alcock Date: Tue, 2 Apr 2024 15:06:50 +0000 (+0100) Subject: libctf: make ctf_lookup of symbols by name work in more cases X-Git-Tag: gdb-15-branchpoint~322 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9049b960f2bc7f0cb9db80d255e9fbec9f476f0f;p=thirdparty%2Fbinutils-gdb.git 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. --- diff --git a/libctf/ctf-lookup.c b/libctf/ctf-lookup.c index aa251bafb89..f37dd7e45ce 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