# Copyright 2004-2005, 2007-2012 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  
}

# This testfile has reproducibility only with cc-with-index.sh.

set testfile "dw2-minsym-in-cu"
set srcfile ${testfile}.S
set executable ${testfile}

if [prepare_for_testing ${testfile}.exp ${executable} ${srcfile}] {
    return -1
}

# Ask for address which is still located in this CU but not described by
# any DIE.
gdb_test "info fun func2" {All functions matching regular expression "func2":}
