libctf: lookup_by_name: do not return success for nonexistent pointer types
authorNick Alcock <nick.alcock@oracle.com>
Tue, 19 Jan 2021 12:45:18 +0000 (12:45 +0000)
committerNick Alcock <nick.alcock@oracle.com>
Tue, 19 Jan 2021 12:45:19 +0000 (12:45 +0000)
commite05a3e5a491a8ef2079eef558bbe8e9feb0b3c03
tree8b1526e2272d3ed24e412425e7979fef15bdf4e4
parentc98de297b37ffee7bdb48682eec73e4a608c3974
libctf: lookup_by_name: do not return success for nonexistent pointer types

The recent work allowing lookups of pointers in child dicts when the
pointed-to type is in the parent dict broke the case where a pointer
type that does not exist at all is looked up: we mistakenly return the
pointed-to type, which is likely not a pointer at all.  This causes
considerable confusion.

Fixed, with a new testcase.

libctf/ChangeLog
2021-01-19  Nick Alcock  <nick.alcock@oracle.com>

* ctf-lookup.c (ctf_lookup_by_name_internal): Do not return the
base type if looking up a nonexistent pointer type.
* testsuite/libctf-regression/pptrtab*: Test it.
libctf/ChangeLog
libctf/ctf-lookup.c
libctf/testsuite/libctf-regression/pptrtab-a.c
libctf/testsuite/libctf-regression/pptrtab-b.c
libctf/testsuite/libctf-regression/pptrtab.c