# Copyright 1997-2020 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/>.
#
# This file was written by Michael Snyder (msnyder@cygnus.com)

#
# test running programs
#


set data_overlays 1

if [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 
}

standard_testfile overlays.c ovlymgr.c foo.c bar.c baz.c grbx.c

if {[build_executable $testfile.exp $testfile \
	 [list $srcfile $srcfile2 $srcfile3 $srcfile4 $srcfile5 $srcfile6] \
	 {debug ldscript=-Wl,-T$linker_script}] == -1} {
     untested "failed to compile"
     return -1
}

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 {
    fail "can't run to main"
    return 0
}

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

gdb_test_no_output "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"]

if $data_overlays then {
    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"]

if $data_overlays then {
    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"
if $data_overlays then {
    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

if $data_overlays then {
    simultaneous_pair .data00 .data02
    simultaneous_pair .data00 .data03
    simultaneous_pair .data01 .data02
    simultaneous_pair .data01 .data03
}

# test automatic mode

gdb_test_no_output "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" }
}

