2022-01-01 22:56:03 +08:00
|
|
|
# Copyright 2021-2022 Free Software Foundation, Inc.
|
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.
2021-09-19 08:41:29 +08:00
|
|
|
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
|
|
# (at your option) any later version.
|
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
# This file is a subset of ptype.exp written by Rob Savoye. (rob@cygnus.com)
|
|
|
|
|
|
|
|
if [skip_ctf_tests] {
|
|
|
|
unsupported "no CTF debug format support, or CTF disabled in GDB"
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
standard_testfile ctf-a.c ctf-b.c ctf-c.c
|
|
|
|
|
|
|
|
# Using `-gctf` generates full-fledged CTF debug information.
|
|
|
|
set opts "additional_flags=-gctf -Wl,--export-dynamic"
|
|
|
|
if { [prepare_for_testing "failed to prepare" ${testfile} \
|
|
|
|
[list $srcfile $srcfile2 $srcfile3] \
|
|
|
|
[list $opts nowarnings]] } {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
# Create and source the file that provides information about the compiler
|
|
|
|
# used to compile the test case.
|
|
|
|
if [get_compiler_info] {
|
|
|
|
return -1
|
|
|
|
}
|
|
|
|
|
|
|
|
# Same thing with struct and union.
|
|
|
|
gdb_test "ptype struct A" "type = struct A \{\[\r\n\]+\[ \t\]+struct B \\*b;\[\r\n\]+\[ \t\]+struct A \\*next;\[\r\n\]+\}.*" "ptype structure A"
|
|
|
|
gdb_test "ptype struct B" "type = struct B \{\[\r\n\]+\[ \t\]+struct C \\*c;\[\r\n\]+\[ \t\]+int \\wombat;\[\r\n\]+\}.*" "ptype structure B"
|
|
|
|
gdb_test "ptype struct C" "type = struct C \{\[\r\n\]+\[ \t\]+struct A \\*a;\[\r\n\]+\[ \t\]+int b;\[\r\n\]+\}.*" "ptype structure C"
|