CTF: multi-CU and archive support
authorWeimin Pan <weimin.pan@oracle.com>
Sun, 19 Sep 2021 00:41:29 +0000 (20:41 -0400)
committerWeimin Pan <weimin.pan@oracle.com>
Sun, 19 Sep 2021 00:41:29 +0000 (20:41 -0400)
commitffb3f587933f20bf9e6e9a26ac547a8589fac081
treefd933456aeadd7e7608c4bc93d233724d5a50675
parent3733650765bf40c8be16fe0a7b8adc0831cbfe22
CTF: multi-CU and archive support

Now gdb is capable of debugging executable, which consists of multiple
compilation units (CUs) with the CTF debug info. An executable could
potentially have one or more archives, which, in CTF context, contain
conflicting types.

all changes were made in ctfread.c in which elfctf_build_psymtabs was
modified to handle archives, via the ctf archive iterator and its callback
build_ctf_archive_member and scan_partial_symbols was modified to scan
archives, which are treated as subfiles, to build the psymtabs.

Also changes were made to handle CTF's data object section and function
info section which now share the same format of their contents - an array
of type IDs. New functions ctf_psymtab_add_stt_entries, which is called by
ctf_psymtab_add_stt_obj and ctf_psymtab_add_stt_func, and add_stt_entries,
which is called by add_stt_obj and add_stt_func when setting up psymtabs
and full symtab, respectively.
17 files changed:
gdb/ctfread.c
gdb/testsuite/gdb.base/ctf-constvars.exp
gdb/testsuite/gdb.base/ctf-ptype.exp
gdb/testsuite/gdb.ctf/cross-tu-cyclic-1.c [new file with mode: 0644]
gdb/testsuite/gdb.ctf/cross-tu-cyclic-2.c [new file with mode: 0644]
gdb/testsuite/gdb.ctf/cross-tu-cyclic-3.c [new file with mode: 0644]
gdb/testsuite/gdb.ctf/cross-tu-cyclic-4.c [new file with mode: 0644]
gdb/testsuite/gdb.ctf/cross-tu-cyclic.exp [new file with mode: 0644]
gdb/testsuite/gdb.ctf/ctf-a.c [new file with mode: 0644]
gdb/testsuite/gdb.ctf/ctf-a.h [new file with mode: 0644]
gdb/testsuite/gdb.ctf/ctf-b.c [new file with mode: 0644]
gdb/testsuite/gdb.ctf/ctf-b.h [new file with mode: 0644]
gdb/testsuite/gdb.ctf/ctf-c.c [new file with mode: 0644]
gdb/testsuite/gdb.ctf/ctf-c.h [new file with mode: 0644]
gdb/testsuite/gdb.ctf/funcreturn.exp
gdb/testsuite/gdb.ctf/multi.exp [new file with mode: 0644]
gdb/testsuite/lib/gdb.exp