#   Copyright (C) 1997-2013 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 srikanth (with huge chunks borrowed from old ones) 
#
# Regression test for 
#
#     CLLbs14756
#
#         o catch load command does not stop for implicit loads.
#
#     CLLbs15382  
#
#         o sharedlibrary command ignores its argument and ends
#           up loading every shared library there is ...
#
#     CLLbs15582  
#
#         o info line non-existent-function dumps core
#         o clear non-existent function dumps core
#         o xbreak non-existent-function dumps core
#
#     CLLbs15725
#
#         o gdb prints static and extern variables in shlibs incorrectly.
#
#     CLLbs16090
#
#         o deferred breakpoints should kick in for shlibs loaded explicitly
#           with the sharedlibrary command.
#         o GDB confuses export stubs with actual function.
#
#

if { [skip_hp_tests] } { continue }


# are we on a target board
if ![isnative] {
    return
}

# This test is presently only valid on HP-UX, since it requires
# that we use HP-UX-specific compiler & linker options to build
# the testcase.
#
setup_xfail "*-*-*"
clear_xfail "hppa*-*-*hpux*"

set prototypes 0
set testfile "solib-d"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
set testfile1 ${objdir}/${subdir}/${testfile}1.o
set testfile2 ${objdir}/${subdir}/${testfile}2.o
set libfile1 ${objdir}/${subdir}/${testfile}1.sl
set libfile2 ${objdir}/${subdir}/${testfile}2.sl

# Create and source the file that provides information about the compiler
# used to compile the test case.
if [get_compiler_info] {
    return -1;
}

# set up appropriate compile option to recognize long double
if {$hp_aCC_compiler || $hp_cc_compiler} {
    set picflag "+z"
    set ansiflag "-Ae"
} else {
    set picflag "-fpic"
    set ansiflag ""
}


# Build the shared libraries this test case needs.
#
#cd ${subdir}

if { [gdb_compile "${srcdir}/${subdir}/${testfile}1.c" "${testfile1}" object "{debug additional_flags=${picflag}}"] != "" } {
    perror "Couldn't compile ${testfile}1.c"
    return -1
}

if { [gdb_compile "${srcdir}/${subdir}/${testfile}2.c" "${testfile2}" object "{debug additional_flags=${picflag}}"] != ""} {
    perror "Couldn't compile ${testfile}2.c"
    return -1
}

remote_exec build "ld -b ${testfile1} -o ${libfile1}"
remote_exec build "ld -b ${testfile2} -o ${libfile2}"

# Build the test case

if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${libfile1} ${libfile2}" "${binfile}" executable "{debug additional_flags=${ansiflag} -Wl,-aarchive}"] != "" } {
    perror "Couldn't build ${binfile}"
    return -1
}

# Start with a fresh gdb

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

# Verify that we can set a generic catchpoint on shlib loads.  I.e., that
# we can catch any shlib load, without specifying the name.
#
gdb_test "catch load" "Catchpoint \[0-9\]* .load <any library>.*" \
    "set generic catch load"

# Verify that implicit shlib loads are caught and reported.
send_gdb "run\n"
gdb_expect {
    -re ".*solib-d1.*$gdb_prompt $" {
        pass "Catch implicit load at startup"
    }
    -re "Inferior \[0-9\]+ exited.*$gdb_prompt $" {
        fail "CLLbs14756 || CLLbs16090 came back ???"
    }
    timeout { fail "(timeout) implicit library load" }
}

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

if ![runto_main] { fail "breakpoint at main did not trigger ?" }

# verify that we print globals from shlibs correctly.
gdb_test "p global_from_primary" " = 5678" \
    "print global from shlib (CLLbs15725)"

gdb_test "p global_from_secondary" " = 9012" \
    "print global from shlib (CLLbs15725)"

# verify that we print static variables from shlibs correctly.
if { ![runto function_from_primary] } { return }
gdb_test "p file_static" " = 1234" "print file static variable (CLLbs15725)" 

if { ![runto function_from_secondary] } { return }
gdb_test "p local_static" " = 3456" "print local static variable (CLLbs15725)" 

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

gdb_test "set auto-solib-add 0" "" "turn off auto shlib debug loading"

if ![runto_main] {
    perror "C function calling tests suppressed"
}

# verify that "clear non-existent-symbol" does not crash
gdb_test "clear junkfunc" "Location not found.*" \
    "clear non-existent function does not dump core !"

# verify that "info line non-existent-symbol" does not crash
gdb_test "info line junkfunc" "Location not found.*" \
    "info line junkfunc does not dump core !"

# verify that "xbreak non-existent-symbol" does not crash
gdb_test "xbreak junkfunc" "Function \"junkfunc\" not defined.*" \
    "xbreak junkfunc does not dump core !"

gdb_test "list function_from_primary" \
    "No line number known for function_from_primary.*" \
    "turning off auto shlib debug loading"

send_gdb "sharedlibrary solib-d1\n" 
gdb_expect {
    -re "Reading symbols from.*solib-d1.*$gdb_prompt $" {
	pass "loading primary library on demand (1)"
    }
    -re "--Adding symbols for shared library.*solib-d1.*$gdb_prompt $" {
	pass "loading primary library on demand (2)"
    }
    -re "$gdb_prompt $" { fail "loading primary library on demand (3)" }
    timeout { fail "(timeout) loading primary library on demand" }
}

# make sure that load above of primary also did not pull in secondary.
send_gdb "list function_from_secondary\n" 
gdb_expect {
    -re "No symbol.*context.*$gdb_prompt $" {
        pass "loaded only what we needed (1)"
    }
    -re "No line number known for function_from_secondary.*$gdb_prompt $" {
        pass "loaded only what we needed (2)"
    }
    -re ".*9012.*$gdb_prompt $" { fail "Oops ! CLLbs15382 came back ?" }
    timeout { fail "(timeout) printing global" }
}

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

gdb_test "set auto-solib-add 0" "" "turn off auto shlib debug loading"

gdb_test "set stop-on-solib-event 1" "" "stop-on-solib-event"

# verify that we set breakpoint on the function and not the export stub
# used to be that we set bp on the export stub of _start and thus miss
# shlib loads in some cases (where the stub exists)
send_gdb "run\n"
gdb_expect {
    -re "Stopped due to shared library event.*$gdb_prompt $" {
        pass "stop for shlib event"
    }
    -re "Inferior \[0-9\]+ exited.*$gdb_prompt $" {
        fail "Bug CLLbs16090 came back ?"
    }
    timeout { fail "(timeout) stop for shlib event " }
}

gdb_test "b main" "Breakpoint 1 at.*" "set breakpoint on main"

gdb_test "set stop-on-solib-event 0" "" "stop-on-solib-event (timeout)"

# verify that we set breakpoint on the function and not the export stub
gdb_test "cont" "Breakpoint 1.*main.*" "run to main"

# On PA64 we read in the unwind info and linker symbol table which lets
# us set the breakpoint and not defer it.
send_gdb "b garbage\n"
gdb_expect {
    -re "Breakpoint.*deferred.*garbage.*library containing.*is loaded.*$gdb_prompt $" {
        pass " set deferred breakpoint (1)"
    }
    -re "Breakpoint 2 at 0x.*$gdb_prompt $" {
        pass " set deferred breakpoint (2)"
    }
    -re "$gdb_prompt $" { fail " set deferred breakpoint (3)" }
    timeout { fail "(timeout) set deferred breakpoint" }
}

# make sure that the sharedlibrary command enables any deferred breakpoints
# that it should.
send_gdb "sharedlibrary lib\n"
gdb_expect {
    -re "Reading.*solib-d1.*$gdb_prompt $" {
        pass "load up all shared libs (1)"
    }
    -re "Loading.*dld.sl.*--Adding symbols.*solib-d1.*$gdb_prompt $" {
        pass "load up all shared libs (2)"
    }
    -re "$gdb_prompt $" { fail "load up all libraries" }
    timeout { fail "(timeout) load all libraries " }
}

# do we stop at garbage ? If yes ok. 
gdb_test "cont" "Breakpoint.*garbage.*" "deferred breakpoint enabled"

gdb_exit
return 0
