# Copyright 1997, 1998, 2001, 2002, 2003, 2004 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
# 
# This file was written by Michael Snyder (msnyder@cygnus.com)

if $tracelevel then {
    strace $tracelevel
}

#
# test running programs
#

set prms_id 0
set bug_id 0

if [istarget "d10v-*-*"] then {
    set linker_script "${srcdir}/${subdir}/d10v.ld";
} elseif [istarget "m32r-*-*"] then {
    set linker_script "${srcdir}/${subdir}/m32r.ld";
} else {
    verbose "Skipping overlay test -- not implemented for this target."
    return 
}

if [istarget "*-*-linux*"] then {
    verbose "Skipping overlay test -- Linux doesn't support overlayed programs."
    return 
}

set testfile "overlays"
set binfile ${objdir}/${subdir}/${testfile}
set srcfile ${testfile}.c

if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${testfile}.o" object {debug}] != ""} then {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
if {[gdb_compile "${srcdir}/${subdir}/ovlymgr.c" ovlymgr.o object {debug}] != ""} then {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
if {[gdb_compile "${srcdir}/${subdir}/foo.c" foo.o object {debug} ] != ""} then {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

if {[gdb_compile "${srcdir}/${subdir}/bar.c" bar.o object {debug}] != ""} then {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
if {[gdb_compile "${srcdir}/${subdir}/baz.c" baz.o object {debug}] != ""} then {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
if {[gdb_compile "${srcdir}/${subdir}/grbx.c" grbx.o object {debug}] != ""} then {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
if  {[gdb_compile "${testfile}.o ovlymgr.o foo.o bar.o baz.o grbx.o" ${binfile} executable "ldscript=-Wl,-T$linker_script"] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

remote_exec build "mv ${testfile}.o foo.o bar.o baz.o grbx.o ovlymgr.o ${objdir}/${subdir}"


gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

#
# set it up at a breakpoint so we can play with the variable values
#

if ![runto_main] then {
    gdb_suppress_tests;
}

# couple of convenience variables
set fptrcast [string_to_regexp "{int (int)}"]
set iptrcast [string_to_regexp "(int *)"]
set hexx "0x\[0-9abcdefABCDEF\]+"

gdb_test "overlay manual" "" 
gdb_test "overlay list" "No sections are mapped." "List with none mapped"

# capture the LMA addresses of [foo bar baz grbx foox barx bazx grbxx]

proc get_func_address { func func_sym msg } {
    global gdb_prompt
    global fptrcast
    global hexx

    set func_addr 0
    send_gdb "print $func\n" 
    gdb_expect {
	-re "\\$\[0-9\]+ = $fptrcast (${hexx}) <$func_sym>.*$gdb_prompt $" {
	    set func_addr $expect_out(1,string)
	    pass "get $msg"
	}
	-re ".*$gdb_prompt $" {
	    fail "get $msg"
	}
	default {
	    fail "get $msg (timeout)"
	}
    }
    return $func_addr
}

set foo_lma  [get_func_address "foo"  "\\*foo\\*"  "foo  load address"]
set bar_lma  [get_func_address "bar"  "\\*bar\\*"  "bar  load address"]
set baz_lma  [get_func_address "baz"  "\\*baz\\*"  "baz  load address"]
set grbx_lma [get_func_address "grbx" "\\*grbx\\*" "grbx load address"]

gdb_test "print \$foox_lma = &foox" \
	".* $iptrcast 0x.*"  "foox load addr"
gdb_test "print \$barx_lma = &barx" \
	".* $iptrcast 0x.*"  "barx load addr"
gdb_test "print \$bazx_lma = &bazx" \
	".* $iptrcast 0x.*"  "bazx load addr"
gdb_test "print \$grbxx_lma = &grbxx" \
	".* $iptrcast 0x.*" "grbxx load addr"

# map each overlay successively, and
# capture the VMA addresses of [foo bar baz grbx foox barx bazx grbxx]

gdb_test "overlay map .ovly0" "" 
gdb_test "overlay list" "Section .ovly0, loaded at.*, mapped at.*" "List ovly0"
set foo_vma [get_func_address "foo"  "foo"  "foo  runtime address"]

gdb_test "overlay map .ovly1" "" 
gdb_test "overlay list" "Section .ovly1, loaded at.*, mapped at.*" "List ovly1"
set bar_vma [get_func_address "bar"  "bar"  "bar  runtime address"]

gdb_test "overlay map .ovly2" "" 
gdb_test "overlay list" "Section .ovly2, loaded at.*, mapped at.*" "List ovly2"
set baz_vma [get_func_address "baz"  "baz"  "baz  runtime address"]

gdb_test "overlay map .ovly3" "" 
gdb_test "overlay list" "Section .ovly3, loaded at.*, mapped at.*" "List ovly3"
set grbx_vma [get_func_address "grbx" "grbx" "grbx runtime address"]

gdb_test "overlay map .data00" "" 
gdb_test "overlay list" "Section .data00, loaded .*, mapped .*" "List data00"
gdb_test "print \$foox_vma = &foox" \
	".* $iptrcast 0x.*"  "foox runtime addr"

gdb_test "overlay map .data01" "" 
gdb_test "overlay list" "Section .data01, loaded .*, mapped .*" "List data01"
gdb_test "print \$barx_vma = &barx" \
	".* $iptrcast 0x.*"  "barx runtime addr"

gdb_test "overlay map .data02" "" 
gdb_test "overlay list" "Section .data02, loaded .*, mapped .*" "List data02"
gdb_test "print \$bazx_vma = &bazx" \
	".* $iptrcast 0x.*"  "bazx runtime addr"

gdb_test "overlay map .data03" "" 
gdb_test "overlay list" "Section .data03, loaded .*, mapped .*" "List data03"
gdb_test "print \$grbxx_vma = &grbxx" \
	".* $iptrcast 0x.*"  "grbxx runtime addr"

# Verify that LMA != VMA

gdb_test "print $foo_lma   != $foo_vma" ".* = 1"   "foo's LMA   != VMA"
gdb_test "print $bar_lma   != $bar_vma" ".* = 1"   "bar's LMA   != VMA"
gdb_test "print $baz_lma   != $baz_vma" ".* = 1"   "baz's LMA   != VMA"
gdb_test "print $grbx_lma  != $grbx_vma" ".* = 1"  "grbx's LMA  != VMA"
gdb_test "print \$foox_lma  != \$foox_vma" ".* = 1"  "foox's LMA  != VMA"
gdb_test "print \$barx_lma  != \$barx_vma" ".* = 1"  "barx's LMA  != VMA"
gdb_test "print \$bazx_lma  != \$bazx_vma" ".* = 1"  "bazx's LMA  != VMA"
gdb_test "print \$grbxx_lma != \$grbxx_vma" ".* = 1" "grbxx's LMA != VMA"

# Verify that early-mapped overlays have been bumped out 
# by later-mapped overlays layed over in the same VMA range.

send_gdb "overlay list\n"
gdb_expect {
    -re ".*ovly0, " 		{ fail ".ovly0  not unmapped by .ovly1"  }
    -re ".*ovly2, "	 	{ fail ".ovly2  not unmapped by .ovly3"  }
    -re ".*data00,"		{ fail ".data00 not unmapped by .data01" }
    -re ".*data02,"		{ fail ".data02 not unmapped by .data03" }
    -re ".*$gdb_prompt $"	{ pass "Automatic unmapping"             }
    timeout			{ fail "(timeout) Automatic unmapping"   }
}

# Verify that both sec1 and sec2 can be loaded simultaneously.
proc simultaneous_pair { sec1 sec2 } {
    global gdb_prompt

    set pairname "$sec1 and $sec2 mapped simultaneously"
    gdb_test "overlay map $sec1" "" "$pairname: map $sec1"
    gdb_test "overlay map $sec2" "" "$pairname: map $sec2"

    set seen_sec1 0
    set seen_sec2 0

    send_gdb "overlay list\n"
    gdb_expect {
        -re ".*[string_to_regexp $sec1], " { set seen_sec1 1; exp_continue }
        -re ".*[string_to_regexp $sec2], " { set seen_sec2 1; exp_continue }
        -re ".*$gdb_prompt $" {
            if {$seen_sec1 && $seen_sec2} {
                pass "$pairname"
            } else {
                fail "$pairname"
            }
        }
        timeout { fail "(timeout) $pairname" }
    }
}

simultaneous_pair .ovly0 .ovly2
simultaneous_pair .ovly0 .ovly3
simultaneous_pair .ovly1 .ovly2
simultaneous_pair .ovly1 .ovly3

simultaneous_pair .data00 .data02
simultaneous_pair .data00 .data03
simultaneous_pair .data01 .data02
simultaneous_pair .data01 .data03

# test automatic mode

gdb_test "overlay auto" ""
gdb_test "overlay list" "No sections are mapped." "List none mapped (auto)"
gdb_test "break foo"  "Breakpoint .*at .*file .*foo.c.*"  "break foo"
gdb_test "break bar"  "Breakpoint .*at .*file .*bar.c.*"  "break bar"
gdb_test "break baz"  "Breakpoint .*at .*file .*baz.c.*"  "break baz"
gdb_test "break grbx" "Breakpoint .*at .*file .*grbx.c.*" "break grbx"

send_gdb "continue\n"
gdb_expect {
    -re "Breakpoint .* foo .x=1. at .*$gdb_prompt $" { pass   "hit foo" }
    -re ".*$gdb_prompt $"			     { fail   "hit foo" }
    timeout				     { fail "(timeout) hit foo" }
}

send_gdb "backtrace\n"
gdb_expect {
    -re "#0 .*foo .*#1 .*main .*$gdb_prompt $"       { pass   "BT foo" }
    -re ".*$gdb_prompt $"			     { fail   "BT foo" }
    timeout				     { fail "(timeout) BT foo" }
}


send_gdb "continue\n"
gdb_expect {
    -re "Breakpoint .* bar .x=1. at .*$gdb_prompt $" { pass   "hit bar" }
    -re ".*$gdb_prompt $"			     { fail   "hit bar" }
    timeout				     { fail "(timeout) hit bar" }
}

send_gdb "backtrace\n"
gdb_expect {
    -re "#0 .*bar .*#1 .*main .*$gdb_prompt $"       { pass   "BT bar" }
    -re ".*$gdb_prompt $"			     { fail   "BT bar" }
    timeout				     { fail "(timeout) BT bar" }
}

send_gdb "continue\n"
gdb_expect {
    -re "Breakpoint .* baz .x=1. at .*$gdb_prompt $" { pass   "hit baz" }
    -re ".*$gdb_prompt $"			     { fail   "hit baz" }
    timeout				     { fail "(timeout) hit baz" }
}

send_gdb "backtrace\n"
gdb_expect {
    -re "#0 .*baz .*#1 .*main .*$gdb_prompt $"       { pass   "BT baz" }
    -re ".*$gdb_prompt $"			     { fail   "BT baz" }
    timeout				     { fail "(timeout) BT baz" }
}

send_gdb "continue\n"
gdb_expect {
    -re "Breakpoint .* grbx .x=1. at .*$gdb_prompt $" { pass   "hit grbx" }
    -re ".*$gdb_prompt $"			      { fail   "hit grbx" }
    timeout				      { fail "(timeout) hit grbx" }
}

send_gdb "backtrace\n"
gdb_expect {
    -re "#0 .*grbx .*#1 .*main .*$gdb_prompt $"      { pass   "BT grbx" }
    -re ".*$gdb_prompt $"			     { fail   "BT grbx" }
    timeout				     { fail "(timeout) BT grbx" }
}

