# Copyright 1997-2021 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 {
    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" }
}

