mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
4a94e36819
This commit brings all the changes made by running gdb/copyright.py as per GDB's Start of New Year Procedure. For the avoidance of doubt, all changes in this commits were performed by the script.
125 lines
4.7 KiB
Plaintext
125 lines
4.7 KiB
Plaintext
# Copyright 2007-2022 Free Software Foundation, Inc.
|
|
|
|
# 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/>.
|
|
load_lib dwarf.exp
|
|
|
|
# This test can only be run on targets which support DWARF-2 and use gas.
|
|
if {![dwarf2_support]} {
|
|
return 0
|
|
}
|
|
|
|
if { [prepare_for_testing "failed to prepare" "dw2-noloc" {dw2-noloc-main.c dw2-noloc.S} {nodebug}] } {
|
|
return -1
|
|
}
|
|
|
|
# Symbols have the form: {file,main}_loc{addr,empty,no}_{,un}resolvable
|
|
# file: Symbol DIE is placed in DW_TAG_compile_unit.
|
|
# main: Symbol DIE is placed in DW_TAG_subprogram.
|
|
# locaddr: DW_AT_location is using DW_FORM_block DW_OP_addr <addr>.
|
|
# locempty: DW_AT_location has zero DW_FORM_block size.
|
|
# locno: DW_AT_location is not present.
|
|
# resolvable: .symtab entry exists for this symbol name.
|
|
# unresolvable: .symtab entry does not exist for this symbol name.
|
|
# DW_AT_declaration is not present in any of these DIEs.
|
|
|
|
proc file_symbols {type} {
|
|
with_test_prefix "$type" {
|
|
|
|
global gdb_prompt
|
|
|
|
gdb_test "print file_locaddr_resolvable" "= 1234567890"
|
|
gdb_test "ptype file_locaddr_resolvable" "type = int"
|
|
|
|
gdb_test "print file_locaddr_unresolvable" "= 1234567890"
|
|
gdb_test "ptype file_locaddr_unresolvable" "type = int"
|
|
|
|
gdb_test "print file_locempty_resolvable" "= <optimized out>"
|
|
gdb_test "ptype file_locempty_resolvable" "type = int"
|
|
|
|
gdb_test "print file_locempty_unresolvable" "= <optimized out>"
|
|
gdb_test "ptype file_locempty_unresolvable" "type = int"
|
|
|
|
gdb_test "print file_locno_resolvable" "= <optimized out>"
|
|
gdb_test "ptype file_locno_resolvable" "type = int"
|
|
|
|
gdb_test "print file_locno_unresolvable" "= <optimized out>"
|
|
gdb_test "ptype file_locno_unresolvable" "type = int"
|
|
|
|
gdb_test "print file_extern_locaddr_resolvable" "= 1234567890"
|
|
gdb_test "ptype file_extern_locaddr_resolvable" "type = int"
|
|
|
|
gdb_test "print file_extern_locaddr_unresolvable" "= 1234567890"
|
|
gdb_test "ptype file_extern_locaddr_unresolvable" "type = int"
|
|
|
|
gdb_test "print file_extern_locempty_resolvable" "= <optimized out>"
|
|
gdb_test "ptype file_extern_locempty_resolvable" "type = int"
|
|
|
|
gdb_test "print file_extern_locempty_unresolvable" "= <optimized out>"
|
|
gdb_test "ptype file_extern_locempty_unresolvable" "type = int"
|
|
|
|
gdb_test "print file_extern_locno_resolvable" "= 1234567890"
|
|
gdb_test "ptype file_extern_locno_resolvable" "type = int"
|
|
|
|
# `print file_extern_locno_unresolvable' currently prints
|
|
# Address of symbol "file_extern_locno_unresolvable" is unknown.
|
|
# As DW_AT_declaration is not present in this DIE
|
|
# it should print <optimized out>. As usefulness of such DIE is not
|
|
# clear its resolution is not being tested.
|
|
}
|
|
}
|
|
|
|
file_symbols no-run
|
|
|
|
if ![runto_main] {
|
|
return -1
|
|
}
|
|
|
|
file_symbols in-main
|
|
|
|
|
|
gdb_test "print main_local_locaddr_resolvable" "= 1234567890"
|
|
gdb_test "ptype main_local_locaddr_resolvable" "type = int"
|
|
|
|
gdb_test "print main_local_locaddr_unresolvable" "= 1234567890"
|
|
gdb_test "ptype main_local_locaddr_unresolvable" "type = int"
|
|
|
|
gdb_test "print main_local_locempty_resolvable" "= <optimized out>"
|
|
gdb_test "ptype main_local_locempty_resolvable" "type = int"
|
|
|
|
gdb_test "print main_local_locempty_unresolvable" "= <optimized out>"
|
|
gdb_test "ptype main_local_locempty_unresolvable" "type = int"
|
|
|
|
gdb_test "print main_local_locno_resolvable" "= <optimized out>"
|
|
gdb_test "ptype main_local_locno_resolvable" "type = int"
|
|
|
|
gdb_test "print main_local_locno_unresolvable" "= <optimized out>"
|
|
gdb_test "ptype main_local_locno_unresolvable" "type = int"
|
|
|
|
gdb_test "print main_extern_locaddr_resolvable" "= 1234567890"
|
|
gdb_test "ptype main_extern_locaddr_resolvable" "type = int"
|
|
|
|
gdb_test "print main_extern_locaddr_unresolvable" "= 1234567890"
|
|
gdb_test "ptype main_extern_locaddr_unresolvable" "type = int"
|
|
|
|
gdb_test "print main_extern_locempty_resolvable" "= <optimized out>"
|
|
gdb_test "ptype main_extern_locempty_resolvable" "type = int"
|
|
|
|
gdb_test "print main_extern_locempty_unresolvable" "= <optimized out>"
|
|
gdb_test "ptype main_extern_locempty_unresolvable" "type = int"
|
|
|
|
gdb_test "print main_extern_locno_resolvable" "= 1234567890"
|
|
gdb_test "ptype main_extern_locno_resolvable" "type = int"
|
|
|
|
# For `main_extern_locno_unresolvable' see `file_extern_locno_unresolvable'.
|