#   Copyright (C) 1997 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.  */

# 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 $tracelevel {
    strace $tracelevel
}

if { [skip_hp_tests] } { continue }

set prms_id 0
set bug_id 0

# 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 ${binfile}] {
    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 "Program 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 "Program 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
