# Copyright 1997, 1999, 2004, 2005 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu

# Test that things still (sort of) work when compiled without -g.

if $tracelevel then {
	strace $tracelevel
}

set prms_id 0
set bug_id 0

set testfile nodebug
set srcfile $srcdir/$subdir/$testfile.c
set binfile $objdir/$subdir/$testfile

if [get_compiler_info ${binfile}] {
    return -1;
}

if [test_compiler_info "xlc-*"] {
    # By default, IBM'x xlc compiler doesn't add static variables into the symtab.
    # Use "-qstatsym" to do so. 
    set exec_opts additional_flags=-qstatsym
} else {
    set exec_opts ""
}

if  { [gdb_compile $srcfile $binfile executable $exec_opts] != "" } {
    untested "Couldn't compile $srcfile."
    return -1
}

# Start with a fresh gdb.

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile

if [runto inner] then {
    
    # Expect to find global/local symbols in each of text/data/bss.
    
    # The exact format for some of this output is not necessarily
    # ideal, particularly interpreting "p top" requires a fair bit of
    # savvy about gdb's workings and the meaning of the "{}"
    # construct.  So the details maybe could be tweaked.  But the
    # basic purpose should be maintained, which is (a) users should be
    # able to interact with these variables with some care (they have
    # to know how to interpret them according to their real type,
    # since gdb doesn't know the type), but (b) users should be able
    # to detect that gdb does not know the type, rather than just
    # being told they are ints or functions returning int like old
    # versions of gdb used to do.
    
    # On alpha (and other ecoff systems) the native compilers put
    # out debugging info for non-aggregate return values of functions
    # even without -g, which should be accepted.
    # Irix5, even though it is ELF, counts as "ecoff" because it
    # encapsulates ecoff debugging info in a .mdebug section.
    # Irix6 gcc emits no debug info at all for static functions and
    # variables, so all tests involving statics fail.
    
    if {![test_compiler_info "gcc-*"]} then { setup_xfail "mips-sgi-irix5*" "mips-sgi-irix6*" }
    gdb_test "p top" \
	"\{(<(text variable|function), no debug info>|short \\(int\\)|short \\(\\))\} \[0-9a-fx]* <top(\\(int\\)|)>"
    if {![test_compiler_info "gcc-*"]} then { setup_xfail "mips-sgi-irix5*" "mips-sgi-irix6*" }
    gdb_test "whatis top" \
	"(<(text variable|function), no debug info>|short \\(int\\)|short \\(\\))"
    if {![test_compiler_info "gcc-*"]} then { setup_xfail "mips-sgi-irix6*" }
    gdb_test "ptype top" "(short|int) \\((|void|int|<non-float parameter>|<non-float parameter>, <non-float parameter>)\\)"
    
    if {![test_compiler_info "gcc-*"]} then { setup_xfail "mips-sgi-irix5*" }
    setup_xfail "mips-sgi-irix6*"
    gdb_test "p middle" \
	"\{(<(text variable|function), no debug info>|short \\(int\\)|short \\(\\))\} \[0-9a-fx]* <middle(\\(int\\)|)>"
    if {![test_compiler_info "gcc-*"]} then { setup_xfail "mips-sgi-irix5*" }
    setup_xfail "mips-sgi-irix6*"
    gdb_test "whatis middle" \
	"(<(text variable|function), no debug info>|short \\(int\\)|short \\(\\))"
    setup_xfail "mips-sgi-irix6*"
    gdb_test "ptype middle" "(short|int) \\((|void|int|<non-float parameter>|<non-float parameter>, <non-float parameter>)\\)"
    
    gdb_test "p dataglobal" "= 3"
    gdb_test "whatis dataglobal" \
	"<(data variable|variable), no debug info>|int"
    gdb_test "ptype dataglobal" "<(data variable|variable), no debug info>|int"
    
    # The only symbol xcoff puts out for statics is for the TOC entry.
    # Possible, but hairy, for gdb to deal.  Right now it doesn't, it
    # doesn't know the variables exist at all.
    setup_xfail "rs6000*-*-aix*"
    setup_xfail "powerpc*-*-aix*"
    if [test_compiler_info "gcc-*"] {
        setup_xfail "mips-sgi-irix6*"
    } else {
        setup_xfail "hppa*-*-hpux*"
    }

    gdb_test "p datalocal" "= 4"

    setup_xfail "rs6000*-*-aix*"
    setup_xfail "powerpc*-*-aix*"
    if [test_compiler_info "gcc-*"] {
        setup_xfail "mips-sgi-irix6*"
    } else {
        setup_xfail "hppa*-*-hpux*"
    }

    gdb_test "whatis datalocal" "<(data variable|variable), no debug info>"

    setup_xfail "rs6000*-*-aix*"
    setup_xfail "powerpc*-*-aix*"
    if [test_compiler_info "gcc-*"] {
        setup_xfail "mips-sgi-irix6*"
    } else {
        setup_xfail "hppa*-*-hpux*"
    }

    gdb_test "ptype datalocal" "<(data variable|variable), no debug info>"
    gdb_test "p bssglobal" "= 0"
    gdb_test "whatis bssglobal" "<(data variable|variable), no debug info>|int"
    gdb_test "ptype bssglobal" "<(data variable|variable), no debug info>|int"
    
    setup_xfail "rs6000*-*-aix*"
    setup_xfail "powerpc*-*-aix*"
    if [test_compiler_info "gcc-*"] {
        setup_xfail "mips-sgi-irix6*"
    } else {
        setup_xfail "hppa*-*-hpux*"
    }

    gdb_test "p bsslocal" "= 0"

    setup_xfail "rs6000*-*-aix*"
    setup_xfail "powerpc*-*-aix*"
    if [test_compiler_info "gcc-*"] {
        setup_xfail "mips-sgi-irix6*"
    } else {
        setup_xfail "hppa*-*-hpux*"
    }

    gdb_test "whatis bsslocal" "<(data variable|variable), no debug info>"

    setup_xfail "rs6000*-*-aix*"
    setup_xfail "powerpc*-*-aix*"
    if [test_compiler_info "gcc-*"] {
        setup_xfail "mips-sgi-irix6*"
    } else {
        setup_xfail "hppa*-*-hpux*"
    }
    gdb_test "ptype bsslocal" "<(data variable|variable), no debug info>"
    
    if [test_compiler_info "gcc-*"] {
        setup_xfail "mips-sgi-irix6*" 
    }

    gdb_test "backtrace 10" "#0.*inner.*#1.*middle.*#2.*top.*#3.*main.*" \
	"backtrace from inner in nodebug.exp"
    # Or if that doesn't work, at least hope for the external symbols
    # Commented out because if we aren't going to xfail the above test
    # ever, why bother with a weaker test?
    #gdb_test "backtrace 10" "#0.*inner.*#1.*#2.*top.*#3.*main.*" \
	#    "backtrace from inner in nodebug.exp for externals"
    
    # This test is not as obscure as it might look.  `p getenv ("TERM")'
    # is a real-world example, at least on many systems.
    if { ! [test_compiler_info "gcc-*"]} {
        setup_xfail "mips-sgi-irix6*" 
    }
    if [target_info exists gdb,cannot_call_functions] {
	setup_xfail "*-*-*" 2416
	fail "p/c array_index(\"abcdef\",2)"
    } else {
	#
	# On HP-UX, a support function (__d_plt_call) necessary to
	# implement an inferior call is normally only available when
	# the inferior was compiled with -g.  Thus, we expect this
	# testpoint to fail on HP-UX.
	if { [istarget "hppa*-hpux*"] } {
	    send_gdb "p/c array_index(\"abcdef\",2)\n"
	    gdb_expect {
		-re ".*Suggest linking executable with -g.*$gdb_prompt $" { pass "p/c array_index(\"abcdef\",2)" }
		-re ".*Cannot find __wdb_call_dummy in.*end.o.*" { pass "p/c array_index(\"abcdef\",2)" }
		-re ".*99 'c'.*" { pass "p/c array_index(\"abcdef\",2)" }
		timeout { fail "(timeout) p/c array_index" }
	    }
	} else {
	    # We need to up this because this can be really slow on some boards.
	    # (malloc() is called as part of the test).
	    set timeout 60;    
	    gdb_test {p/c array_index("abcdef",2)} " = 99 'c'"
	}
    }
    
    # Now, try that we can give names of file-local symbols which happen
    # to be unique, and have it still work
    if [test_compiler_info "gcc-*"] {
        setup_xfail "mips-sgi-irix6*"
    }
    if [runto middle] then {
	gdb_test "backtrace 10" "#0.*middle.*#1.*top.*#2.*main.*" \
	    "backtrace from middle in nodebug.exp"
    }
}
