#   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
