Remove gdb.hp

gdb/ChangeLog
2015-03-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* config/djgpp/README: Remove gdb.hp.

gdb/testsuite/ChangeLog
2015-03-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* Makefile.in (ALL_SUBDIRS): Remove gdb.hp.
	* README: Remove HP-UX and gdb.hp.
	(configuration):
	* configure: Regenerate.
	* configure.ac (AC_OUTPUT): Remove gdb.hp/Makefile,
	gdb.hp/gdb.objdbg/Makefile, gdb.hp/gdb.base-hp/Makefile,
	gdb.hp/gdb.aCC/Makefile, gdb.hp/gdb.compat/Makefile,
	gdb.hp/gdb.defects/Makefile.
	* gdb.hp/Makefile.in: File deleted.
	* gdb.hp/gdb.aCC/Makefile.in: File deleted.
	* gdb.hp/gdb.aCC/optimize.c: File deleted.
	* gdb.hp/gdb.aCC/optimize.exp: File deleted.
	* gdb.hp/gdb.aCC/run.c: File deleted.
	* gdb.hp/gdb.aCC/watch-cmd.exp: File deleted.
	* gdb.hp/gdb.base-hp/Makefile.in: File deleted.
	* gdb.hp/gdb.base-hp/callfwmall.c: File deleted.
	* gdb.hp/gdb.base-hp/callfwmall.exp: File deleted.
	* gdb.hp/gdb.base-hp/dollar.c: File deleted.
	* gdb.hp/gdb.base-hp/dollar.exp: File deleted.
	* gdb.hp/gdb.base-hp/genso-thresh.c: File deleted.
	* gdb.hp/gdb.base-hp/hwwatchbus.c: File deleted.
	* gdb.hp/gdb.base-hp/hwwatchbus.exp: File deleted.
	* gdb.hp/gdb.base-hp/pxdb.c: File deleted.
	* gdb.hp/gdb.base-hp/pxdb.exp: File deleted.
	* gdb.hp/gdb.base-hp/reg-pa64.exp: File deleted.
	* gdb.hp/gdb.base-hp/reg-pa64.s: File deleted.
	* gdb.hp/gdb.base-hp/reg.exp: File deleted.
	* gdb.hp/gdb.base-hp/reg.s: File deleted.
	* gdb.hp/gdb.base-hp/sized-enum.c: File deleted.
	* gdb.hp/gdb.base-hp/sized-enum.exp: File deleted.
	* gdb.hp/gdb.base-hp/so-thresh.exp: File deleted.
	* gdb.hp/gdb.base-hp/so-thresh.mk: File deleted.
	* gdb.hp/gdb.base-hp/so-thresh.sh: File deleted.
	* gdb.hp/gdb.compat/Makefile.in: File deleted.
	* gdb.hp/gdb.compat/average.c: File deleted.
	* gdb.hp/gdb.compat/sum.c: File deleted.
	* gdb.hp/gdb.compat/xdb.c: File deleted.
	* gdb.hp/gdb.compat/xdb0.c: File deleted.
	* gdb.hp/gdb.compat/xdb0.h: File deleted.
	* gdb.hp/gdb.compat/xdb1.c: File deleted.
	* gdb.hp/gdb.compat/xdb1.exp: File deleted.
	* gdb.hp/gdb.compat/xdb2.exp: File deleted.
	* gdb.hp/gdb.compat/xdb3.exp: File deleted.
	* gdb.hp/gdb.defects/Makefile.in: File deleted.
	* gdb.hp/gdb.defects/bs14602.c: File deleted.
	* gdb.hp/gdb.defects/bs14602.exp: File deleted.
	* gdb.hp/gdb.defects/solib-d.c: File deleted.
	* gdb.hp/gdb.defects/solib-d.exp: File deleted.
	* gdb.hp/gdb.defects/solib-d1.c: File deleted.
	* gdb.hp/gdb.defects/solib-d2.c: File deleted.
	* gdb.hp/gdb.objdbg/Makefile.in: File deleted.
	* gdb.hp/gdb.objdbg/objdbg01.exp: File deleted.
	* gdb.hp/gdb.objdbg/objdbg01/x1.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg01/x2.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg01/x3.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg01/x3.h: File deleted.
	* gdb.hp/gdb.objdbg/objdbg02.exp: File deleted.
	* gdb.hp/gdb.objdbg/objdbg02/x1.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg02/x2.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg02/x3.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg03.exp: File deleted.
	* gdb.hp/gdb.objdbg/objdbg03/x1.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg03/x2.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg03/x3.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg04.exp: File deleted.
	* gdb.hp/gdb.objdbg/objdbg04/x.h: File deleted.
	* gdb.hp/gdb.objdbg/objdbg04/x1.cc: File deleted.
	* gdb.hp/gdb.objdbg/objdbg04/x2.cc: File deleted.
	* gdb.hp/gdb.objdbg/tools/symaddr: File deleted.
	* gdb.hp/gdb.objdbg/tools/symaddr.pa64: File deleted.
	* gdb.hp/gdb.objdbg/tools/test-objdbg.cc: File deleted.
	* gdb.hp/tools/odump: File deleted.
This commit is contained in:
Jan Kratochvil 2015-03-20 17:15:15 +01:00
parent 80b8656cba
commit bc23328cc1
71 changed files with 85 additions and 5010 deletions

View file

@ -1,3 +1,7 @@
2015-03-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* config/djgpp/README: Remove gdb.hp.
2015-03-20 Yao Qi <yao.qi@linaro.org>
* aarch64-tdep.c (aarch64_gdbarch_init): Don't call

View file

@ -181,8 +181,8 @@ the size of your environment), etc.
Note that djcheck.sh only recurses into those of the subdirectories of
the test suite which test features supported by the DJGPP port of GDB.
For example, the tests in the gdb.gdbtk, gdb.threads, and gdb.hp
directories are not run.
For example, the tests in the gdb.gdbtk, and gdb.threads directories
are not run.
Enjoy,

View file

@ -1,3 +1,78 @@
2015-03-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* Makefile.in (ALL_SUBDIRS): Remove gdb.hp.
* README: Remove HP-UX and gdb.hp.
(configuration):
* configure: Regenerate.
* configure.ac (AC_OUTPUT): Remove gdb.hp/Makefile,
gdb.hp/gdb.objdbg/Makefile, gdb.hp/gdb.base-hp/Makefile,
gdb.hp/gdb.aCC/Makefile, gdb.hp/gdb.compat/Makefile,
gdb.hp/gdb.defects/Makefile.
* gdb.hp/Makefile.in: File deleted.
* gdb.hp/gdb.aCC/Makefile.in: File deleted.
* gdb.hp/gdb.aCC/optimize.c: File deleted.
* gdb.hp/gdb.aCC/optimize.exp: File deleted.
* gdb.hp/gdb.aCC/run.c: File deleted.
* gdb.hp/gdb.aCC/watch-cmd.exp: File deleted.
* gdb.hp/gdb.base-hp/Makefile.in: File deleted.
* gdb.hp/gdb.base-hp/callfwmall.c: File deleted.
* gdb.hp/gdb.base-hp/callfwmall.exp: File deleted.
* gdb.hp/gdb.base-hp/dollar.c: File deleted.
* gdb.hp/gdb.base-hp/dollar.exp: File deleted.
* gdb.hp/gdb.base-hp/genso-thresh.c: File deleted.
* gdb.hp/gdb.base-hp/hwwatchbus.c: File deleted.
* gdb.hp/gdb.base-hp/hwwatchbus.exp: File deleted.
* gdb.hp/gdb.base-hp/pxdb.c: File deleted.
* gdb.hp/gdb.base-hp/pxdb.exp: File deleted.
* gdb.hp/gdb.base-hp/reg-pa64.exp: File deleted.
* gdb.hp/gdb.base-hp/reg-pa64.s: File deleted.
* gdb.hp/gdb.base-hp/reg.exp: File deleted.
* gdb.hp/gdb.base-hp/reg.s: File deleted.
* gdb.hp/gdb.base-hp/sized-enum.c: File deleted.
* gdb.hp/gdb.base-hp/sized-enum.exp: File deleted.
* gdb.hp/gdb.base-hp/so-thresh.exp: File deleted.
* gdb.hp/gdb.base-hp/so-thresh.mk: File deleted.
* gdb.hp/gdb.base-hp/so-thresh.sh: File deleted.
* gdb.hp/gdb.compat/Makefile.in: File deleted.
* gdb.hp/gdb.compat/average.c: File deleted.
* gdb.hp/gdb.compat/sum.c: File deleted.
* gdb.hp/gdb.compat/xdb.c: File deleted.
* gdb.hp/gdb.compat/xdb0.c: File deleted.
* gdb.hp/gdb.compat/xdb0.h: File deleted.
* gdb.hp/gdb.compat/xdb1.c: File deleted.
* gdb.hp/gdb.compat/xdb1.exp: File deleted.
* gdb.hp/gdb.compat/xdb2.exp: File deleted.
* gdb.hp/gdb.compat/xdb3.exp: File deleted.
* gdb.hp/gdb.defects/Makefile.in: File deleted.
* gdb.hp/gdb.defects/bs14602.c: File deleted.
* gdb.hp/gdb.defects/bs14602.exp: File deleted.
* gdb.hp/gdb.defects/solib-d.c: File deleted.
* gdb.hp/gdb.defects/solib-d.exp: File deleted.
* gdb.hp/gdb.defects/solib-d1.c: File deleted.
* gdb.hp/gdb.defects/solib-d2.c: File deleted.
* gdb.hp/gdb.objdbg/Makefile.in: File deleted.
* gdb.hp/gdb.objdbg/objdbg01.exp: File deleted.
* gdb.hp/gdb.objdbg/objdbg01/x1.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg01/x2.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg01/x3.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg01/x3.h: File deleted.
* gdb.hp/gdb.objdbg/objdbg02.exp: File deleted.
* gdb.hp/gdb.objdbg/objdbg02/x1.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg02/x2.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg02/x3.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg03.exp: File deleted.
* gdb.hp/gdb.objdbg/objdbg03/x1.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg03/x2.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg03/x3.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg04.exp: File deleted.
* gdb.hp/gdb.objdbg/objdbg04/x.h: File deleted.
* gdb.hp/gdb.objdbg/objdbg04/x1.cc: File deleted.
* gdb.hp/gdb.objdbg/objdbg04/x2.cc: File deleted.
* gdb.hp/gdb.objdbg/tools/symaddr: File deleted.
* gdb.hp/gdb.objdbg/tools/symaddr.pa64: File deleted.
* gdb.hp/gdb.objdbg/tools/test-objdbg.cc: File deleted.
* gdb.hp/tools/odump: File deleted.
2015-03-19 Pedro Alves <palves@redhat.com>
* gdb.threads/continue-pending-status.exp (saw_thread_2)

View file

@ -33,7 +33,7 @@ EXEEXT = @EXEEXT@
SUBDIRS = @subdirs@
RPATH_ENVVAR = @RPATH_ENVVAR@
ALL_SUBDIRS = gdb.ada gdb.arch gdb.asm gdb.base gdb.btrace gdb.cell gdb.cp \
gdb.disasm gdb.dlang gdb.dwarf2 gdb.fortran gdb.gdb gdb.go gdb.hp \
gdb.disasm gdb.dlang gdb.dwarf2 gdb.fortran gdb.gdb gdb.go \
gdb.java gdb.linespec gdb.mi gdb.modula2 gdb.multi \
gdb.objc gdb.opencl gdb.opt gdb.pascal gdb.python gdb.server \
gdb.stabs gdb.reverse gdb.threads gdb.trace gdb.xml \

View file

@ -411,8 +411,7 @@ gdb.cp for C++ and gdb.java for Java.
gdb.<platform>
Non-portable tests. The tests are specific to a specific
configuration (host or target), such as HP-UX or eCos. Example is
gdb.hp, for HP-UX.
configuration (host or target), such as eCos.
gdb.arch

View file

@ -3514,7 +3514,7 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
ac_config_files="$ac_config_files lib/pdtrace"
ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.btrace/Makefile gdb.cell/Makefile gdb.compile/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.dlang/Makefile gdb.fortran/Makefile gdb.gdb/Makefile gdb.go/Makefile gdb.server/Makefile gdb.java/Makefile gdb.hp/Makefile gdb.hp/gdb.objdbg/Makefile gdb.hp/gdb.base-hp/Makefile gdb.hp/gdb.aCC/Makefile gdb.hp/gdb.compat/Makefile gdb.hp/gdb.defects/Makefile gdb.guile/Makefile gdb.linespec/Makefile gdb.mi/Makefile gdb.modula2/Makefile gdb.multi/Makefile gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile gdb.perf/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile"
ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.btrace/Makefile gdb.cell/Makefile gdb.compile/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.dlang/Makefile gdb.fortran/Makefile gdb.gdb/Makefile gdb.go/Makefile gdb.server/Makefile gdb.java/Makefile gdb.guile/Makefile gdb.linespec/Makefile gdb.mi/Makefile gdb.modula2/Makefile gdb.multi/Makefile gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile gdb.perf/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@ -4232,12 +4232,6 @@ do
"gdb.go/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.go/Makefile" ;;
"gdb.server/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.server/Makefile" ;;
"gdb.java/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.java/Makefile" ;;
"gdb.hp/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.hp/Makefile" ;;
"gdb.hp/gdb.objdbg/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.hp/gdb.objdbg/Makefile" ;;
"gdb.hp/gdb.base-hp/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.hp/gdb.base-hp/Makefile" ;;
"gdb.hp/gdb.aCC/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.hp/gdb.aCC/Makefile" ;;
"gdb.hp/gdb.compat/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.hp/gdb.compat/Makefile" ;;
"gdb.hp/gdb.defects/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.hp/gdb.defects/Makefile" ;;
"gdb.guile/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.guile/Makefile" ;;
"gdb.linespec/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.linespec/Makefile" ;;
"gdb.mi/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.mi/Makefile" ;;

View file

@ -111,9 +111,7 @@ AC_OUTPUT([Makefile \
gdb.cell/Makefile gdb.compile/Makefile gdb.cp/Makefile gdb.disasm/Makefile \
gdb.dwarf2/Makefile gdb.dlang/Makefile gdb.fortran/Makefile gdb.gdb/Makefile \
gdb.go/Makefile gdb.server/Makefile gdb.java/Makefile \
gdb.hp/Makefile gdb.hp/gdb.objdbg/Makefile gdb.hp/gdb.base-hp/Makefile \
gdb.hp/gdb.aCC/Makefile gdb.hp/gdb.compat/Makefile \
gdb.hp/gdb.defects/Makefile gdb.guile/Makefile gdb.linespec/Makefile \
gdb.guile/Makefile gdb.linespec/Makefile \
gdb.mi/Makefile gdb.modula2/Makefile gdb.multi/Makefile \
gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile \
gdb.perf/Makefile gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile \

View file

@ -1,42 +0,0 @@
VPATH = @srcdir@
srcdir = @srcdir@
SUBDIRS = gdb.aCC gdb.base-hp gdb.compat gdb.defects gdb.objdbg
all:
@echo "Nothing to be done for all..."
info:
install-info:
dvi:
install:
uninstall: force
installcheck:
check:
clean mostlyclean:
-rm -f *~ core *.o
-rm -f *.dwo *.dwp
if [ x"${SUBDIRS}" != x ] ; then \
for dir in ${SUBDIRS}; \
do \
echo "$$dir:"; \
if [ -d $$dir ]; then \
(cd $$dir; $(MAKE) clean); \
fi; \
done ; \
else true; fi
distclean maintainer-clean realclean: clean
-rm -f Makefile config.status config.log
-rm -f *-init.exp gdb.log gdb.sum
-rm -fr *.log summary detail *.plog *.sum *.psum site.*
if [ x"${SUBDIRS}" != x ] ; then \
for dir in ${SUBDIRS}; \
do \
echo "$$dir:"; \
if [ -d $$dir ]; then \
(cd $$dir; $(MAKE) distclean); \
fi; \
done ; \
else true; fi

View file

@ -1,25 +0,0 @@
VPATH = @srcdir@
srcdir = @srcdir@
EXECUTABLES = exception namespace optimize run
all:
@echo "Nothing to be done for all..."
info:
install-info:
dvi:
install:
uninstall: force
installcheck:
check:
clean mostlyclean:
-rm -f *~ *.o *.ci
-rm -f *.dwo *.dwp
-rm -f core $(EXECUTABLES)
distclean maintainer-clean realclean: clean
-rm -f Makefile config.status config.log
-rm -f *-init.exp
-rm -fr *.log summary detail *.plog *.sum *.psum site.*

View file

@ -1,76 +0,0 @@
/* Source for debugging optimimzed code test.
cc -g -O -o optimize optimize.c
*/
int callee();
int test_opt;
int main()
{
int a,b,c,d,e,f,g,h;
a = 10;;
/* Value propagate
*/
b = 2 * a + 1;
c = 3 * b + 2;
/* Re-use expressions
*/
d = (2 * a + 1) * (3 * b + 2);
e = (2 * a + 1) * (3 * b + 2);
/* Create dead stores--do lines still exist?
*/
d = (2 * a + 1) * (3 * b + 2);
e = (2 * a + 1) * (3 * b + 2);
d = (2 * a + 1) * (3 * b + 2);
e = (2 * a + 1) * (3 * b + 2);
/* Alpha and psi motion
*/
if( test_opt ) {
f = e - d;
f = f--;
}
else {
f = e - d;
f = f + d * e;
}
/* Chi and Rho motion
*/
h = 0;
do {
h++;
a = b * c + d * e; /* Chi */
f = f + d * e;
g = f + d * e; /* Rho */
callee( g+1 );
test_opt = (test_opt != 1); /* Cycles */
} while( g && h < 10);
/* Opps for tail recursion, unrolling,
* folding, evaporating
*/
for( a = 0; a < 100; a++ ) {
callee( callee ( callee( a )));
callee( callee ( callee( a )));
callee( callee ( callee( a )));
}
return callee( test_opt );
}
/* defined late to keep line numbers the same
*/
int callee( x )
int x; /* not used! */
{
test_opt++; /* side effect */
return test_opt;
}
/* end */

View file

@ -1,143 +0,0 @@
# Copyright (C) 1998-2015 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/>. */
# optimize.exp -- Expect script for testing apps compiled with -O
# There is no DOC support for gdb yet, return 0 for now.
return 0
global timeout
# use this to debug:
#
#log_user 1
if { [skip_hp_tests] } then { continue }
set testfile optimize
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if [get_compiler_info] {
return -1
}
if { $gcc_compiled } then { continue }
# Vanilla -O, which is the same as +O2
#
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug optimize=+O2}] != "" } {
untested optimize.exp
return -1
}
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
send_gdb "file $binfile\n"
gdb_expect {
-re ".*no debugging symbols found.*$gdb_prompt $" {
fail "Didn't find debug symbols; CHFts23488"
}
-re ".*No header section (PXDB data).*$gdb_prompt $" {
fail "pointless warning"
}
-re ".*done.*$gdb_prompt $" {
pass "load debug symbols"
}
timeout { fail "timeout on file" }
}
# Two lines at the same place after opt.
#
gdb_test "b 28" ".*"
gdb_test "b 26" ".*also set at.*" "same line"
gdb_test "b 47" ".*"
gdb_test "b 48" ".*also set at.*" "same line"
gdb_test "tb main" ".*"
set old_timeout $timeout
set timeout [expr "$timeout + 200"]
send_gdb "r\n"
gdb_expect {
-re ".*No header section (PXDB data).*$gdb_prompt $" {
fail "pointless warning"
}
-re ".*main.*2\[12].*$gdb_prompt $" {
# All the lines before line 21 or 22 are
# evaporated by the compiler.
#
pass "hit main"
}
-re ".*$gdb_prompt $" {
fail "didn't hit main"
}
timeout { fail "timeout on run" }
}
set timeout $old_timeout
gdb_test "c" ".*Breakpoint 1.*33.*"
gdb_test "c" ".*51.*"
gdb_test "cle" ".*Deleted breakpoints.*" "set 2, so del 2"
gdb_test "b callee" ".*"
gdb_test "c" ".*callee.*" "hit called rtn"
gdb_exit
# +O4, don't use -g
#
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {optimize=+O4}] != "" } {
untested optimize.exp
return -1
}
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
send_gdb "file $binfile\n"
gdb_expect {
-re ".*no debugging symbols found.*$gdb_prompt $" {
pass "Didn't find debug symbols, as expected"
}
-re ".*No header section (PXDB data).*$gdb_prompt $" {
fail "pointless warning"
}
-re ".*done.*$gdb_prompt $" {
fail "Somehow found debug symbols--make this a pass?"
}
timeout { fail "timeout on file" }
}
gdb_test "b main" ".*"
gdb_test "b callee" ".*"
gdb_test "r" ".*Breakpoint 1.*main.*"
gdb_test "si 3" ".*main.*" "steps"
gdb_test "x/4i \$pc" ".*main.*main+4.*main+8.*"
gdb_test "c" ".*callee.*" "hit bp"
gdb_test "disas" ".*callee.*callee+4.*callee+12.*"
gdb_test "si" ".*callee.*"
gdb_test "fin" ".*Run till exit.*main.*" "finish"
gdb_test "x/i \$pc" ".*main+.*" "back in main"
gdb_exit
#remote_exec build "rm -f ${binfile}"
return 0

View file

@ -1,37 +0,0 @@
/*
* This simple classical example of recursion is useful for
* testing stack backtraces and such.
*/
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[], char **envp)
/*int argc;
char *argv[], **envp;*/
{
int factorial (int);
#ifdef FAKEARGV
printf ("%d\n", factorial (1));
#else
if (argc != 2) {
printf ("usage: factorial <number>\n");
return 1;
} else {
printf ("%d\n", factorial (atoi (argv[1])));
}
#endif
return 0;
}
int factorial (int value)
/*int value;*/
{
int local_var;
if (value > 1) {
value *= factorial (value - 1);
}
local_var = value;
return (value);
}

View file

@ -1,148 +0,0 @@
# Copyright (C) 1998-2015 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/>.
#
# test special commands
#
if { [skip_hp_tests] } then { continue }
set testfile "run"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
untested watch-cmd.exp
return -1
}
if [get_compiler_info] {
return -1
}
if { $gcc_compiled } then { continue }
gdb_exit
gdb_start
delete_breakpoints
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
proc watchpoint_command_test {} {
global gdb_prompt
if [target_info exists noargs] {
verbose "Skipping watchpoint_command_test because of noargs."
return
}
if { ![runto factorial] } then { gdb_suppress_tests }
# Don't depend upon argument passing, since most simulators don't currently
# support it. Bash value variable to be what we want.
gdb_test "p value=6" "" "set value to 6 in watchpoint_command_test"
delete_breakpoints
# Verify that we can create a watchpoint, and give it a commands
# list that continues the inferior. We set the watchpoint on a
# local variable, too, so that it self-deletes when the watched
# data goes out of scope.
#
# What should happen is: Each time the watchpoint triggers, it
# continues the inferior. Eventually, the watchpoint will self-
# delete, when the watched variable is out of scope. But by that
# time, the inferior should have exited. GDB shouldn't crash or
# anything untoward as a result of this.
#
send_gdb "watch local_var\n"
gdb_expect {
-re ".*\[Ww\]atchpoint (\[0-9\]*): local_var.*$gdb_prompt $"\
{ pass "watch local_var"
set wp_id $expect_out(1,string)
send_gdb "commands $wp_id\n"
gdb_expect {
-re "Type commands for when breakpoint $wp_id is hit, one per line.*>"\
{ pass "begin commands on watch"}
-re "$gdb_prompt $"\
{fail "begin commands on watch"}
timeout {fail "(timeout) begin commands on watch"}
}
}
-re "$gdb_prompt $"\
{fail "watch local_var"}
timeout {fail "(timeout) watch local_var"}
}
# set wp_id $expect_out(1,string)
# send_gdb "commands $wp_id\n"
# gdb_expect {
# -re "Type commands for when breakpoint $wp_id is hit, one per line.*>"\
# {pass "begin commands on watch"}
# -re "$gdb_prompt $"\
# {fail "begin commands on watch"}
# timeout {fail "(timeout) begin commands on watch"}
# }
send_gdb "print value\n"
gdb_expect {
-re ">"\
{pass "add print command to watch"}
-re "$gdb_prompt $"\
{fail "add print command to watch"}
timeout {fail "(timeout) add print command to watch"}
}
send_gdb "continue\n"
gdb_expect {
-re ">"\
{pass "add continue command to watch"}
-re "$gdb_prompt $"\
{fail "add continue command to watch"}
timeout {fail "(timeout) add continue command to watch"}
}
send_gdb "end\n"
gdb_expect {
-re "$gdb_prompt $"\
{pass "begin commands on watch"}
timeout {fail "(timeout) begin commands on watch"}
}
send_gdb "continue\n"
gdb_expect {
-re "Continuing.*\[Ww\]atchpoint $wp_id deleted because the program has left the block in.*which its expression is valid.*in main.*$gdb_prompt $"\
{pass "continue with watch"}
-re "$gdb_prompt $"\
{fail "continue with watch"}
timeout {fail "(timeout) continue with watch"}
}
send_gdb "continue\n"
gdb_expect {
-re "Continuing.*$gdb_prompt $"\
{pass "continue until exit"}
-re "$gdb_prompt $"\
{fail "continue until exit"}
timeout {fail "(timeout) continue until exit"}
}
}
watchpoint_command_test

View file

@ -1,30 +0,0 @@
VPATH = @srcdir@
srcdir = @srcdir@
EXECUTABLES = dollar hwwatchbus.bak pxdb reg reg-pa64 \
so-thresh genso-thresh sized-enum
MISCELLANEOUS = so-thresh.c so-thresh.lopt so-thresh.make.out \
lib*-so-thresh.*
all:
@echo "Nothing to be done for all..."
info:
install-info:
dvi:
install:
uninstall: force
installcheck:
check:
clean mostlyclean:
-rm -f *~ *.o *.ci
-rm -f *.dwo *.dwp
-rm -f core $(EXECUTABLES)
-rm -f $(MISCELLANEOUS)
distclean maintainer-clean realclean: clean
-rm -f Makefile config.status config.log
-rm -f *-init.exp
-rm -fr *.log summary detail *.plog *.sum *.psum site.*

View file

@ -1,358 +0,0 @@
/* Support program for testing gdb's ability to call functions
in an inferior which doesn't itself call malloc, pass appropriate
arguments to those functions, and get the returned result. */
#ifdef NO_PROTOTYPES
#define PARAMS(paramlist) ()
#else
#define PARAMS(paramlist) paramlist
#endif
# include <string.h>
char char_val1 = 'a';
char char_val2 = 'b';
short short_val1 = 10;
short short_val2 = -23;
int int_val1 = 87;
int int_val2 = -26;
long long_val1 = 789;
long long_val2 = -321;
float float_val1 = 3.14159;
float float_val2 = -2.3765;
double double_val1 = 45.654;
double double_val2 = -67.66;
#define DELTA (0.001)
char *string_val1 = (char *)"string 1";
char *string_val2 = (char *)"string 2";
char char_array_val1[] = "carray 1";
char char_array_val2[] = "carray 2";
struct struct1 {
char c;
short s;
int i;
long l;
float f;
double d;
char a[4];
} struct_val1 = { 'x', 87, 76, 51, 2.1234, 9.876, "foo" };
/* Some functions that can be passed as arguments to other test
functions, or called directly. */
#ifdef PROTOTYPES
int add (int a, int b)
#else
int add (a, b) int a, b;
#endif
{
return (a + b);
}
#ifdef PROTOTYPES
int doubleit (int a)
#else
int doubleit (a)
int a;
#endif
{
return (a + a);
}
int (*func_val1) PARAMS((int,int)) = add;
int (*func_val2) PARAMS((int)) = doubleit;
/* An enumeration and functions that test for specific values. */
enum enumtype { enumval1, enumval2, enumval3 };
enum enumtype enum_val1 = enumval1;
enum enumtype enum_val2 = enumval2;
enum enumtype enum_val3 = enumval3;
#ifdef PROTOTYPES
int t_enum_value1 (enum enumtype enum_arg)
#else
t_enum_value1 (enum_arg)
enum enumtype enum_arg;
#endif
{
return (enum_arg == enum_val1);
}
#ifdef PROTOTYPES
int t_enum_value2 (enum enumtype enum_arg)
#else
t_enum_value2 (enum_arg)
enum enumtype enum_arg;
#endif
{
return (enum_arg == enum_val2);
}
#ifdef PROTOTYPES
int t_enum_value3 (enum enumtype enum_arg)
#else
t_enum_value3 (enum_arg)
enum enumtype enum_arg;
#endif
{
return (enum_arg == enum_val3);
}
/* A function that takes a vector of integers (along with an explicit
count) and returns their sum. */
#ifdef PROTOTYPES
int sum_args (int argc, int argv[])
#else
int sum_args (argc, argv)
int argc;
int argv[];
#endif
{
int sumval = 0;
int idx;
for (idx = 0; idx < argc; idx++)
{
sumval += argv[idx];
}
return (sumval);
}
/* Test that we can call functions that take structs and return
members from that struct */
#ifdef PROTOTYPES
char t_structs_c (struct struct1 tstruct) { return (tstruct.c); }
short t_structs_s (struct struct1 tstruct) { return (tstruct.s); }
int t_structs_i (struct struct1 tstruct) { return (tstruct.i); }
long t_structs_l (struct struct1 tstruct) { return (tstruct.l); }
float t_structs_f (struct struct1 tstruct) { return (tstruct.f); }
double t_structs_d (struct struct1 tstruct) { return (tstruct.d); }
char *t_structs_a (struct struct1 tstruct)
{
static char buf[8];
strcpy (buf, tstruct.a);
return buf;
}
#else
char t_structs_c (tstruct) struct struct1 tstruct; { return (tstruct.c); }
short t_structs_s (tstruct) struct struct1 tstruct; { return (tstruct.s); }
int t_structs_i (tstruct) struct struct1 tstruct; { return (tstruct.i); }
long t_structs_l (tstruct) struct struct1 tstruct; { return (tstruct.l); }
float t_structs_f (tstruct) struct struct1 tstruct; { return (tstruct.f); }
double t_structs_d (tstruct) struct struct1 tstruct; { return (tstruct.d); }
char *t_structs_a (tstruct) struct struct1 tstruct;
{
static char buf[8];
strcpy (buf, tstruct.a);
return buf;
}
#endif
/* Test that calling functions works if there are a lot of arguments. */
#ifdef PROTOTYPES
int sum10 (int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9)
#else
int
sum10 (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9)
int i0, i1, i2, i3, i4, i5, i6, i7, i8, i9;
#endif
{
return i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
}
/* Gotta have a main to be able to generate a linked, runnable
executable, and also provide a useful place to set a breakpoint. */
#ifdef PROTOTYPES
int main()
#else
main ()
#endif
{
t_structs_c(struct_val1);
return 0;
}
/* Functions that expect specific values to be passed and return
either 0 or 1, depending upon whether the values were
passed incorrectly or correctly, respectively. */
#ifdef PROTOTYPES
int t_char_values (char char_arg1, char char_arg2)
#else
int t_char_values (char_arg1, char_arg2)
char char_arg1, char_arg2;
#endif
{
return ((char_arg1 == char_val1) && (char_arg2 == char_val2));
}
int
#ifdef PROTOTYPES
t_small_values (char arg1, short arg2, int arg3, char arg4, short arg5,
char arg6, short arg7, int arg8, short arg9, short arg10)
#else
t_small_values (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10)
char arg1;
short arg2;
int arg3;
char arg4;
short arg5;
char arg6;
short arg7;
int arg8;
short arg9;
short arg10;
#endif
{
return arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10;
}
#ifdef PROTOTYPES
int t_short_values (short short_arg1, short short_arg2)
#else
int t_short_values (short_arg1, short_arg2)
short short_arg1, short_arg2;
#endif
{
return ((short_arg1 == short_val1) && (short_arg2 == short_val2));
}
#ifdef PROTOTYPES
int t_int_values (int int_arg1, int int_arg2)
#else
int t_int_values (int_arg1, int_arg2)
int int_arg1, int_arg2;
#endif
{
return ((int_arg1 == int_val1) && (int_arg2 == int_val2));
}
#ifdef PROTOTYPES
int t_long_values (long long_arg1, long long_arg2)
#else
int t_long_values (long_arg1, long_arg2)
long long_arg1, long_arg2;
#endif
{
return ((long_arg1 == long_val1) && (long_arg2 == long_val2));
}
/* NOTE: THIS FUNCTION MUST NOT BE PROTOTYPED!!!!!
There must be one version of "t_float_values" (this one)
that is not prototyped, and one (if supported) that is (following).
That way GDB can be tested against both cases. */
int t_float_values (float_arg1, float_arg2)
float float_arg1, float_arg2;
{
return ((float_arg1 - float_val1) < DELTA
&& (float_arg1 - float_val1) > -DELTA
&& (float_arg2 - float_val2) < DELTA
&& (float_arg2 - float_val2) > -DELTA);
}
int
#ifdef NO_PROTOTYPES
/* In this case we are just duplicating t_float_values, but that is the
easiest way to deal with either ANSI or non-ANSI. */
t_float_values2 (float_arg1, float_arg2)
float float_arg1, float_arg2;
#else
t_float_values2 (float float_arg1, float float_arg2)
#endif
{
return ((float_arg1 - float_val1) < DELTA
&& (float_arg1 - float_val1) > -DELTA
&& (float_arg2 - float_val2) < DELTA
&& (float_arg2 - float_val2) > -DELTA);
}
#ifdef PROTOTYPES
int t_double_values (double double_arg1, double double_arg2)
#else
int t_double_values (double_arg1, double_arg2)
double double_arg1, double_arg2;
#endif
{
return ((double_arg1 - double_val1) < DELTA
&& (double_arg1 - double_val1) > -DELTA
&& (double_arg2 - double_val2) < DELTA
&& (double_arg2 - double_val2) > -DELTA);
}
#ifdef PROTOTYPES
int t_string_values (char *string_arg1, char *string_arg2)
#else
int t_string_values (string_arg1, string_arg2)
char *string_arg1, *string_arg2;
#endif
{
return (!strcmp (string_arg1, string_val1) &&
!strcmp (string_arg2, string_val2));
}
#ifdef PROTOTYPES
int t_char_array_values (char char_array_arg1[], char char_array_arg2[])
#else
int t_char_array_values (char_array_arg1, char_array_arg2)
char char_array_arg1[], char_array_arg2[];
#endif
{
return (!strcmp (char_array_arg1, char_array_val1) &&
!strcmp (char_array_arg2, char_array_val2));
}
/* This used to simply compare the function pointer arguments with
known values for func_val1 and func_val2. Doing so is valid ANSI
code, but on some machines (RS6000, HPPA, others?) it may fail when
called directly by GDB.
In a nutshell, it's not possible for GDB to determine when the address
of a function or the address of the function's stub/trampoline should
be passed.
So, to avoid GDB lossage in the common case, we perform calls through the
various function pointers and compare the return values. For the HPPA
at least, this allows the common case to work.
If one wants to try something more complicated, pass the address of
a function accepting a "double" as one of its first 4 arguments. Call
that function indirectly through the function pointer. This would fail
on the HPPA. */
#ifdef PROTOTYPES
int t_func_values (int (*func_arg1)(int, int), int (*func_arg2)(int))
#else
int t_func_values (func_arg1, func_arg2)
int (*func_arg1) PARAMS ((int, int));
int (*func_arg2) PARAMS ((int));
#endif
{
return ((*func_arg1) (5,5) == (*func_val1) (5,5)
&& (*func_arg2) (6) == (*func_val2) (6));
}
#ifdef PROTOTYPES
int t_call_add (int (*func_arg1)(int, int), int a, int b)
#else
int t_call_add (func_arg1, a, b)
int (*func_arg1) PARAMS ((int, int));
int a, b;
#endif
{
return ((*func_arg1)(a, b));
}

View file

@ -1,334 +0,0 @@
# Copyright 1997-2015 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 Fred Fish. (fnf@cygnus.com)
# These tests are the same as those in callfuncs.exp, except that the
# test program here does not call malloc.
#
# "What in the world does malloc have to do with calling functions in
# the inferior?" Well, nothing. GDB's ability to invoke a function
# in the inferior program works just fine in programs that have no
# malloc function available. It doesn't rely on the inferior's
# malloc, directly or indirectly. It just uses the inferior's stack
# space.
#
# "Then what's the point of this test file?" Well, it just so happens
# that this file, in addition to testing inferior function calls, also
# tests GDB's ability to evaluate string literals (like "string 1" and
# "string 2" in the tests below). Evaluating *those* sorts of
# expressions does require malloc.
#
# (As an extension to C, GDB also has a syntax for literal arrays of
# anything, not just characters. For example, the expression
# {2,3,4,5} (which appears in the tests below) evaluates to an array
# of four ints. So rather than talking just about string literals,
# we'll use the broader term "array literals".)
#
# Now, in this file, we only evaluate array literals when we're about
# to pass them to a function, but don't be confused --- this is a red
# herring. You can evaluate "abcdef" even if you're not about to pass
# that to a function, and doing so requires malloc even if you're just
# going to store a pointer to it in a variable, like this:
#
# (gdb) ptype s
# type = char *
# (gdb) set variable s = "abcdef"
#
# According to C's rules for evaluating expressions, arrays are
# converted into pointers to their first element. This means that, in
# order to evaluate an expression like "abcdef", GDB needs to actually
# find some memory in the inferior we can plop the characters into;
# then we use that memory's address as the address of our array
# literal. GDB finds this memory by calling the inferior's malloc
# function, if it has one. So, evaluating an array literal depends on
# performing an inferior function call, but not vice versa. (GDB
# can't just allocate the space on the stack; the pointer may remain
# live long after the current frame has been popped.)
#
# "But, if evaluating array literals requires malloc, what's the point
# of testing that GDB can do so in a program that doesn't have malloc?
# It can't work!" On most systems, that's right, but HP-UX has some
# sort of dynamic linking magic that ensures that *every* program has
# malloc. So on HP-UX, GDB can evaluate array literals even in
# inferior programs that don't use malloc. That's why this test is in
# gdb.hp.
#
# This file has, for some reason, led to well more than its fair share
# of misunderstandings about the relationship between array literal
# expressions and inferior function calls. Folks talk as if you can
# only evaluate array literals when you're about to pass them to a
# function. I think they're assuming that, since GDB is constructing
# a new frame on the inferior's stack (correct), it's going to use
# that space for the array literals (incorrect). Remember that those
# array literals may need to be live long after the inferior function
# call returns; GDB can't tell.
#
# What makes the confusion worse is that there *is* a relationship
# between array literals and inferior function calls --- GDB uses
# inferior function calls to evaluate array literals. But many people
# jump to other, incorrect conclusions about this.
if { [skip_hp_tests] } then { continue }
set testfile "callfwmall"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
untested callfwmall.exp
return -1
}
# Create and source the file that provides information about the compiler
# used to compile the test case.
if [get_compiler_info] {
return -1
}
if {$hp_aCC_compiler} {
set prototypes 1
} else {
set prototypes 0
}
# Some targets can't call functions, so don't even bother with this
# test.
if [target_info exists gdb,cannot_call_functions] {
setup_xfail "*-*-*" 2416
fail "This target can not call functions"
continue
}
# Set the current language to C. This counts as a test. If it
# fails, then we skip the other tests.
proc set_lang_c {} {
global gdb_prompt
send_gdb "set language c\n"
gdb_expect {
-re ".*$gdb_prompt $" {}
timeout { fail "set language c (timeout)" ; return 0 }
}
send_gdb "show language\n"
gdb_expect {
-re ".* source language is \"c\".*$gdb_prompt $" {
pass "set language to \"c\""
return 1
}
-re ".*$gdb_prompt $" {
fail "setting language to \"c\""
return 0
}
timeout {
fail "can't show language (timeout)"
return 0
}
}
}
# FIXME: Before calling this proc, we should probably verify that
# we can call inferior functions and get a valid integral value
# returned.
# Note that it is OK to check for 0 or 1 as the returned values, because C
# specifies that the numeric value of a relational or logical expression
# (computed in the inferior) is 1 for true and 0 for false.
proc do_function_calls {} {
global prototypes
global gcc_compiled
global gdb_prompt
# We need to up this because this can be really slow on some boards.
set timeout 60
gdb_test "p t_char_values(0,0)" " = 0"
gdb_test "p t_char_values('a','b')" " = 1"
gdb_test "p t_char_values(char_val1,char_val2)" " = 1"
gdb_test "p t_char_values('a',char_val2)" " = 1"
gdb_test "p t_char_values(char_val1,'b')" " = 1"
gdb_test "p t_short_values(0,0)" " = 0"
gdb_test "p t_short_values(10,-23)" " = 1"
gdb_test "p t_short_values(short_val1,short_val2)" " = 1"
gdb_test "p t_short_values(10,short_val2)" " = 1"
gdb_test "p t_short_values(short_val1,-23)" " = 1"
gdb_test "p t_int_values(0,0)" " = 0"
gdb_test "p t_int_values(87,-26)" " = 1"
gdb_test "p t_int_values(int_val1,int_val2)" " = 1"
gdb_test "p t_int_values(87,int_val2)" " = 1"
gdb_test "p t_int_values(int_val1,-26)" " = 1"
gdb_test "p t_long_values(0,0)" " = 0"
gdb_test "p t_long_values(789,-321)" " = 1"
gdb_test "p t_long_values(long_val1,long_val2)" " = 1"
gdb_test "p t_long_values(789,long_val2)" " = 1"
gdb_test "p t_long_values(long_val1,-321)" " = 1"
if ![target_info exists gdb,skip_float_tests] {
gdb_test "p t_float_values(0.0,0.0)" " = 0"
# These next four tests fail on the mn10300.
# The first value is passed in regs, the other in memory.
# Gcc emits different stabs for the two parameters; the first is
# claimed to be a float, the second a double.
# dbxout.c in gcc claims this is the desired behavior.
setup_xfail "mn10300-*-*"
gdb_test "p t_float_values(3.14159,-2.3765)" " = 1"
setup_xfail "mn10300-*-*"
gdb_test "p t_float_values(float_val1,float_val2)" " = 1"
setup_xfail "mn10300-*-*"
gdb_test "p t_float_values(3.14159,float_val2)" " = 1"
setup_xfail "mn10300-*-*"
gdb_test "p t_float_values(float_val1,-2.3765)" " = 1"
# Test passing of arguments which might not be widened.
gdb_test "p t_float_values2(0.0,0.0)" " = 0"
# Although PR 5318 mentions SunOS specifically, this seems
# to be a generic problem on quite a few platforms.
if $prototypes then {
setup_xfail "sparc-*-*" "mips*-*-*" 5318
if {!$gcc_compiled} then {
setup_xfail "i*86-*-sysv4*" 5318
}
}
gdb_test "p t_float_values2(3.14159,float_val2)" " = 1"
gdb_test "p t_small_values(1,2,3,4,5,6,7,8,9,10)" " = 55"
gdb_test "p t_double_values(0.0,0.0)" " = 0"
gdb_test "p t_double_values(45.654,-67.66)" " = 1"
gdb_test "p t_double_values(double_val1,double_val2)" " = 1"
gdb_test "p t_double_values(45.654,double_val2)" " = 1"
gdb_test "p t_double_values(double_val1,-67.66)" " = 1"
}
gdb_test "p t_string_values(string_val2,string_val1)" " = 0"
gdb_test "p t_string_values(string_val1,string_val2)" " = 1"
gdb_test "p t_string_values(\"string 1\",\"string 2\")" " = 1"
gdb_test "p t_string_values(\"string 1\",string_val2)" " = 1"
gdb_test "p t_string_values(string_val1,\"string 2\")" " = 1"
gdb_test "p t_char_array_values(char_array_val2,char_array_val1)" " = 0"
gdb_test "p t_char_array_values(char_array_val1,char_array_val2)" " = 1"
gdb_test "p t_char_array_values(\"carray 1\",\"carray 2\")" " = 1"
gdb_test "p t_char_array_values(\"carray 1\",char_array_val2)" " = 1"
gdb_test "p t_char_array_values(char_array_val1,\"carray 2\")" " = 1"
gdb_test "p doubleit(4)" " = 8"
gdb_test "p add(4,5)" " = 9"
gdb_test "p t_func_values(func_val2,func_val1)" " = 0"
gdb_test "p t_func_values(func_val1,func_val2)" " = 1"
# On the rs6000, we need to pass the address of the trampoline routine,
# not the address of add itself. I don't know how to go from add to
# the address of the trampoline. Similar problems exist on the HPPA,
# and in fact can present an unsolvable problem as the stubs may not
# even exist in the user's program. We've slightly recoded t_func_values
# to avoid such problems in the common case. This may or may not help
# the RS6000.
setup_xfail "rs6000*-*-*"
if {![istarget hppa*-*-hpux*]} then {
gdb_test "p t_func_values(add,func_val2)" " = 1"
}
setup_xfail "rs6000*-*-*"
if {![istarget hppa*-*-hpux*]} then {
gdb_test "p t_func_values(func_val1,doubleit)" " = 1"
}
gdb_test "p t_call_add(func_val1,3,4)" " = 7"
setup_xfail "rs6000*-*-*"
if {![istarget hppa*-*-hpux*]} then {
gdb_test "p t_call_add(add,3,4)" " = 7"
}
gdb_test "p t_enum_value1(enumval1)" " = 1"
gdb_test "p t_enum_value1(enum_val1)" " = 1"
gdb_test "p t_enum_value1(enum_val2)" " = 0"
gdb_test "p t_enum_value2(enumval2)" " = 1"
gdb_test "p t_enum_value2(enum_val2)" " = 1"
gdb_test "p t_enum_value2(enum_val1)" " = 0"
gdb_test "p sum_args(1,{2})" " = 2"
gdb_test "p sum_args(2,{2,3})" " = 5"
gdb_test "p sum_args(3,{2,3,4})" " = 9"
gdb_test "p sum_args(4,{2,3,4,5})" " = 14"
gdb_test "p sum10 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)" " = 55"
gdb_test "p t_structs_c(struct_val1)" "= 120 'x'" \
"call inferior func with struct - returns char"
gdb_test "p t_structs_s(struct_val1)" "= 87" \
"call inferior func with struct - returns short"
gdb_test "p t_structs_i(struct_val1)" "= 76" \
"call inferior func with struct - returns int"
gdb_test "p t_structs_l(struct_val1)" "= 51" \
"call inferior func with struct - returns long"
gdb_test "p t_structs_f(struct_val1)" "= 2.12.*" \
"call inferior func with struct - returns float"
gdb_test "p t_structs_d(struct_val1)" "= 9.87.*" \
"call inferior func with struct - returns double"
gdb_test "p t_structs_a(struct_val1)" "= (.unsigned char .. )?\"foo\"" \
"call inferior func with struct - returns char *"
}
# Start with a fresh gdb.
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
gdb_test "set print sevenbit-strings" ""
gdb_test "set print address off" ""
gdb_test "set width 0" ""
if { $hp_aCC_compiler } {
# Do not set language explicitly to 'C'. This will cause aCC
# tests to fail because promotion rules are different. Just let
# the language be set to the default.
if { ![runto_main] } {
gdb_suppress_tests
}
gdb_test "set overload-resolution 0" ".*"
} else {
if { ![set_lang_c] } {
gdb_suppress_tests
} else {
if { ![runto_main] } {
gdb_suppress_tests
}
}
}
gdb_test "next" ".*"
do_function_calls
return 0

View file

@ -1,10 +0,0 @@
#ifdef PROTOTYPES
int main (int argc, char **argv)
#else
main (argc, argv, envp)
int argc;
char **argv;
#endif
{
return 0;
}

View file

@ -1,146 +0,0 @@
# Copyright (C) 1997-2015 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/>.
# GDB tests for names beginning with '$'
# This is aimed at HP-UX systems where a lot of system
# routines and names begin with '$' or '$$'. GDB 4.16 was
# unable to deal with these names as they clashed with
# convenience variables. Wildebeest should accept such
# names in preference to convenience variables.
# This file was written by Satish Pai <pai@apollo.hp.com>
# 1997-09-24
#
# test running programs
#
if { [skip_hp_tests] } { continue }
set testfile "dollar"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
untested dollar.exp
return -1
}
#source ${binfile}.ci
gdb_exit
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 {
perror "couldn't run to breakpoint"
continue
}
# Test for millicode routines
# hppa64 does not support dyncall
if ![istarget "hppa64*-*-*"] {
send_gdb "print \$\$dyncall\n"
gdb_expect {
-re "\\$\[0-9\]* = \\{<text variable, no debug info>\\} $hex <>.*$gdb_prompt $" { pass "print \$\$dyncall" }
-re "\\$\[0-9\]* = \\{<text variable, no debug info>\\} $hex <.*dyncall>.*$gdb_prompt $" { pass "print \$\$dyncall" }
-re "\\$\[0-9\]* = void" { fail "print \$\$dyncall -- interpreted as convenience var" }
-re "$gdb_prompt $" { fail "print \$\$dyncall" }
timeout { fail "(timeout) print \$\$dyncall" }
}
send_gdb "print \$\$dyncall_external\n"
gdb_expect {
-re "\\$\[0-9\]* = \\{<text variable, no debug info>\\} $hex <>.*$gdb_prompt $" { pass "print \$\$dyncall_external" }
-re "\\$\[0-9\]* = \\{<text variable, no debug info>\\} $hex <.*dyncall_external>.*$gdb_prompt $" { pass "print \$\$dyncall_external" }
-re "\\$\[0-9\]* = void" { fail "print \$\$dyncall_external -- interpreted as convenience var" }
-re "$gdb_prompt $" { fail "print \$\$dyncall_external" }
timeout { fail "(timeout) print \$\$dyncall_external" }
}
# Set a breakpoint on a millicode routine
send_gdb "break \$\$dyncall\n"
gdb_expect {
-re "Breakpoint \[0-9\]* at $hex.*$gdb_prompt $" { pass "break \$\$dyncall" }
-re "Function.*not defined.*$gdb_prompt $" {fail "break \$\$dyncall -- no \$\$dyncall?" }
-re "Convenience variables used in line specs must have integer values\\..*$gdb_prompt $" {
fail "break \$\$dyncall -- treated as convenince variable"
}
-re "$gdb_prompt $" { fail "print break \$\$dyncall" }
timeout { fail "(timeout) print break \$\$dyncall" }
}
# Disassemble $$dyncall
send_gdb "disassemble \$\$dyncall\n"
gdb_expect {
-re "Dump of assembler code for function.*$gdb_prompt $" { pass "disas \$\$dyncall" }
-re "$gdb_prompt $" { fail "disas \$\$dyncall" }
timeout { fail "(timeout) disas \$\$dyncall" }
}
# Try to set $$dyncall like a convenience var.
send_gdb "set \$\$dyncall = 77\n"
gdb_expect {
-re "Invalid cast.*$gdb_prompt $" { pass "set \$\$dyncall = 77" }
-re "$gdb_prompt $" { fail "set \$\$dyncall = 77" }
timeout { fail "(timeout) set \$\$dyncall = 77" }
}
}
# Try out some other $ name, not millicode
if [istarget "hppa64*-*-*"] {
#hppa64 uses __argv instead of $ARGV.
send_gdb "print \__argv\n"
gdb_expect {
-re "\\$\[0-9\]* = \[0-9\]*.*$gdb_prompt $" { pass "print \__argv" }
-re "\\$\[0-9\]* = void.*$gdb_prompt $" {
fail "print \__argv (interpreted as convenience var)"
}
-re "$gdb_prompt $" { fail "print \__argv" }
timeout { fail "(timeout) print \__argv" }
}
send_gdb "ptype \__argv\n"
gdb_expect {
-re "type = <data variable, no debug info>.*$gdb_prompt $" {
pass "ptype \__argv"
}
-re "type = void.*$gdb_prompt $" {
fail "ptype \__argv (interpreted as convenience var)"
}
-re "$gdb_prompt $" { fail "ptype \__argv" }
timeout { fail "(timeout) ptype \__argv" }
}
} else {
send_gdb "print \$ARGV\n"
gdb_expect {
-re "\\$\[0-9\]* = \[0-9\]*.*$gdb_prompt $" { pass "print \$ARGV" }
-re "\\$\[0-9\]* = void.*$gdb_prompt $" { fail "print \$ARGV (interpreted as convenience var)" }
-re "$gdb_prompt $" { fail "print \$ARGV" }
timeout { fail "(timeout) print \$ARGV" }
}
send_gdb "ptype \$ARGV\n"
gdb_expect {
-re "type = <data variable, no debug info>.*$gdb_prompt $" { pass "ptype \$ARGV" }
-re "type = void.*$gdb_prompt $" { fail "ptype \$ARGV (interpreted as convenience var)" }
-re "$gdb_prompt $" { fail "ptype \$ARGV" }
timeout { fail "(timeout) ptype \$ARGV" }
}
}

View file

@ -1,229 +0,0 @@
/*
* Program to generate the so-thresh testcase,
* including associated linked-against shared libraries.
* Build as:
*
* cc -g -o genso-thresh genso-thresh.c
*
* Invoke as:
*
* genso-thresh
*
* It will put all the code in the current directory (".").
*
* A makefile can also be generated if the -makemake option is used.
* To use the makefile:
*
* make -f so-thresh.mk all
*
* The name of the application is
*
* so-thresh
*
* (Revised from a program by John Bishop. --rehrauer)
*/
#include <stdio.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
int main (argc, argv)
int argc;
char **argv;
{
#define NUMBER_OF_INT_VARS 1500
#define NUMBER_OF_LIBS 3
int lib_num = NUMBER_OF_LIBS;
int i;
int i2;
FILE *main_file;
FILE *lib_file;
FILE *make_file;
FILE *link_file;
char testcase_name [1000];
char linkfile_name [1000];
char makefile_name [1000];
char mainfile_name [1000];
char file_name[100];
/*
* 0123456789 <-- length of field
* "./fil0000000002.c"; <-- typical filename
* 12345678901234567890 <-- length of string
* 10 20
* ^where null goes
*/
char file_name_core[100];
/* Verify input.
*/
if ((argc < 1) || (argc > 2) || (argv == NULL) ||
((argc == 2) && (strcmp (argv[1], "-makemake") != 0)))
{
printf ("** Syntax: %s [-makemake]\n", argv[0]);
return;
}
if (strncmp (argv[0], "gen", 3) != 0)
{
printf ("** This tool expected to be named \"gen<something>\"\n");
return;
}
strcpy (testcase_name, argv[0]+3);
strcpy (linkfile_name, testcase_name);
strcat (linkfile_name, ".lopt");
link_file = fopen (linkfile_name, "w");
fprintf (link_file, "# Linker options for %s test\n", testcase_name);
/* Generate the makefile, if requested.
*/
if (argc == 2)
{
strcpy (makefile_name, testcase_name);
strcat (makefile_name, ".mk.new");
make_file = fopen (makefile_name, "w");
printf (" Note: New makefile (%s) generated.\n", makefile_name);
printf (" May want to update existing makefile, if any.\n");
fprintf (make_file, "# Generated automatically by %s\n", argv[0]);
fprintf (make_file, "# Make file for %s test\n", testcase_name);
fprintf (make_file, "\n");
fprintf (make_file, "CFLAGS = +DA1.1 -g\n");
fprintf (make_file, "\n");
fprintf (make_file, "# This is how to build this generator.\n");
fprintf (make_file, "%s.o: %s.c\n", argv[0], argv[0]);
fprintf (make_file, "\t$(CC) $(CFLAGS) -o %s.o -c %s.c\n", argv[0], argv[0]);
fprintf (make_file, "%s: %s.o\n", argv[0], argv[0]);
fprintf (make_file, "\t$(CC) $(CFLAGS) -o %s %s.o\n", argv[0], argv[0]);
fprintf (make_file, "\n");
fprintf (make_file, "# This is how to run this generator.\n");
fprintf (make_file, "# This target should be made before the 'all' target,\n");
fprintf (make_file, "# to ensure that the shlib sources are all available.\n");
fprintf (make_file, "require_shlibs: %s\n", argv[0]);
for (i=0; i < lib_num; i++)
{
fprintf (make_file, "\tif ! [ -a lib%2.2d_%s.c ] ; then \\\n", i, testcase_name);
fprintf (make_file, "\t %s ; \\\n", argv[0]);
fprintf (make_file, "\tfi\n");
}
fprintf (make_file, "\n");
fprintf (make_file, "# This is how to build all the shlibs.\n");
fprintf (make_file, "# Be sure to first make the require_shlibs target!\n");
for (i=0; i < lib_num; i++)
{
fprintf (make_file, "lib%2.2d_%s.o: lib%2.2d_%s.c\n", i, testcase_name, i, testcase_name);
fprintf (make_file, "\t$(CC) $(CFLAGS) +Z -o lib%2.2d_%s.o -c lib%2.2d_%s.c\n", i, testcase_name, i, testcase_name);
fprintf (make_file, "lib%2.2d-%s.sl: lib%2.2d-%s.o\n", i, testcase_name, i, testcase_name);
fprintf (make_file, "\t$(LD) $(LDFLAGS) -b -o lib%2.2d-%s.sl lib%2.2d-%s.o\n", i, testcase_name, i, testcase_name);
}
fprintf (make_file, "\n");
fprintf (make_file, "# For convenience, here's names for all pieces of all shlibs.\n");
fprintf (make_file, "SHLIB_SOURCES = \\\n");
for (i=0; i < lib_num-1; i++)
fprintf (make_file, "\tlib%2.2d-%s.c \\\n", i, testcase_name);
fprintf (make_file, "\tlib%2.2d-%s.c\n", lib_num-1, testcase_name);
fprintf (make_file, "SHLIB_OBJECTS = $(SHLIB_SOURCES:.c=.o)\n");
fprintf (make_file, "SHLIBS = $(SHLIB_SOURCES:.c=.sl)\n");
fprintf (make_file, "SHLIB_NAMES = $(SHLIB_SOURCES:.c=)\n");
fprintf (make_file, "EXECUTABLES = $(SHLIBS) %s %s\n", argv[0], testcase_name);
fprintf (make_file, "OBJECT_FILES = $(SHLIB_OBJECTS) %s.o %s.o\n", argv[0], testcase_name);
fprintf (make_file, "\n");
fprintf (make_file, "shlib_objects: $(SHLIB_OBJECTS)\n");
fprintf (make_file, "shlibs: $(SHLIBS)\n");
fprintf (make_file, "\n");
fprintf (make_file, "# This is how to build the debuggable testcase that uses the shlibs.\n");
fprintf (make_file, "%s.o: %s.c\n", testcase_name, testcase_name);
fprintf (make_file, "\t$(CC) $(CFLAGS) -o %s.o -c %s.c\n", testcase_name, testcase_name);
fprintf (make_file, "%s: shlibs %s.o\n", testcase_name, testcase_name);
fprintf (make_file, "\t$(LD) $(LDFLAGS) -o %s -lc -L. ", testcase_name);
fprintf (make_file, "-c %s /opt/langtools/lib/end.o /lib/crt0.o %s.o\n", linkfile_name, testcase_name);
fprintf (make_file, "\n");
fprintf (make_file, "# Yeah, but you should first make the require_shlibs target!\n");
fprintf (make_file, "all: %s %s\n", testcase_name, argv[0]);
fprintf (make_file, "\n");
fprintf (make_file, "# To remove everything built via this makefile...\n");
fprintf (make_file, "clean:\n");
/* Do this carefully, to avoid hitting silly HP-UX ARG_MAX limits... */
fprintf (make_file, "\trm -f lib0*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f lib1*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f lib2*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f lib3*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f lib4*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f lib5*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f lib6*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f lib7*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f lib8*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f lib9*-%s.*\n", testcase_name);
fprintf (make_file, "\trm -f %s %s %s %s.c\n", argv[0], testcase_name, linkfile_name, testcase_name);
fprintf (make_file, "\n");
fclose (make_file);
}
/* Generate the code for the libraries.
*/
for (i=0; i < lib_num; i++) {
/* Generate the names for the library.
*/
sprintf (file_name, "lib%2.2d-%s.c", i, testcase_name);
sprintf (file_name_core, "lib%2.2d-%s", i, testcase_name);
/* Generate the source code.
*/
lib_file = fopen (file_name, "w");
fprintf (lib_file, "/* Shared library file number %d */\n", i);
fprintf (lib_file, "#include <stdio.h>\n\n");
fprintf (lib_file, "/* The following variables largely exist to bloat this library's debug info. */\n");
fprintf (lib_file, "static char c_static_buf_%d [100];\n", i);
for (i2=0; i2<NUMBER_OF_INT_VARS; i2++)
fprintf (lib_file, "int i_%d_%d;\n", i, i2);
fprintf (lib_file, "\nint r_%d ()\n", i);
fprintf (lib_file, "{\n");
for (i2=0; i2<NUMBER_OF_INT_VARS; i2++)
fprintf (lib_file, " i_%d_%d = %d*%d;\n", i, i2, i2, i2);
fprintf (lib_file, " return 1;\n");
fprintf (lib_file, "}\n\n");
fprintf (lib_file, "/* end of generated file */\n");
fclose (lib_file);
/* Add a linker options line
*/
fprintf (link_file, "-l%2.2d-%s\n", i, testcase_name);
}
/* Generate the "main" file.
*/
strcpy (mainfile_name, testcase_name);
strcat (mainfile_name, ".c");
main_file = fopen (mainfile_name, "w");
fprintf (main_file, "/* Generated test progam with %d shared libraries. */\n\n",
lib_num);
fprintf (main_file, "#include <stdio.h>\n\n");
for (i = 0; i < lib_num; i++) {
fprintf (main_file, "extern int r_%d();\n", i);
}
fprintf (main_file, "\n");
fprintf (main_file, "int main()\n");
fprintf (main_file, "{\n");
fprintf (main_file, " int accum;\n");
fprintf (main_file, " int lib_num = %d;\n", lib_num);
for (i = 0; i < lib_num; i++) {
fprintf (main_file, " accum += r_%d();\n", i);
}
fprintf (main_file, " printf( \"Final value: %%d, should be %%d\\n\", accum, lib_num );\n\n");
fprintf (main_file, " return 0;\n");
fprintf (main_file, "}\n\n");
fprintf (main_file, "/* end of generated file */\n");
fclose (main_file);
/* Finish up the link file and the build file
*/
fclose (link_file);
}
/* End of file */

View file

@ -1,9 +0,0 @@
/* This program raises a SIGBUS signal on HP-UX when the
pointer "bogus_p" is dereferenced.
*/
int * bogus_p = (int *)3;
int main()
{
*bogus_p = 0xdeadbeef;
}

View file

@ -1,74 +0,0 @@
# Copyright (C) 1997-2015 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/>. */
if { [skip_hp_tests] } then { continue }
if { ![istarget "hppa*-*-hpux11.*"] } {
verbose "HPUX h/w watch test ignored for non-hppa or pre-HP/UX-10.30 targets."
return 0
}
set testfile "hwwatchbus"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
# build the first test case
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
untested hwwatchbus.exp
return -1
}
if [get_compiler_info] {
return -1
}
# Start with a fresh gdb
gdb_exit
remote_exec build "rm -f ${binfile}.bak"
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
# We ought to be able to set a hardware watchpoint, step, and
# get a SIGBUS or SIGSEGV signal reported.
#
if ![runto_main] then {
fail "can't run to main"
return 0
}
send_gdb "watch bogus_p\n"
gdb_expect {
-re "Hardware watchpoint \[0-9\]*: bogus_p.*$gdb_prompt $"\
{pass "set h/w watchpoint"}
-re "$gdb_prompt $"\
{fail "set h/w watchpoint"}
timeout {fail "(timeout) set h/w watchpoint"}
}
send_gdb "step\n"
gdb_expect {
-re "Program received signal (SIGBUS|SIGSEGV), (Bus error|Segmentation fault).* in main .*${srcfile}:8.*$gdb_prompt $"\
{pass "see real signal when h/w watchpoint set"}
-re "$gdb_prompt $"\
{fail "see real signal when h/w watchpoint set"}
timeout {fail "(timeout) see real signal when h/w watchpoint set"}
}
remote_exec build "mv ${binfile} ${binfile}.bak"
return 0

View file

@ -1,37 +0,0 @@
#include <stdio.h>
#ifdef PROTOTYPES
int callee (int x)
#else
int callee( x )
int x;
#endif
{
int y = x * x;
return (y - 2);
}
int main()
{
int i;
for (i = 1; i < 10; i++)
{
printf( "%d ", callee( i ));
}
printf( " Goodbye!\n" );
return 0;
}
/* This routine exists only for aCC. The way we compile this test is
that we use aCC for the actual compile into the object file but then
use ld directly for the link. When we do this, we get an undefined
symbol _main(). Therefore, for aCC, we have this routine in here and
ld is happy. */
#ifdef __cplusplus
extern "C" {
void _main()
{
}
}
#endif

View file

@ -1,119 +0,0 @@
# Copyright (C) 1998-2015 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 is part of the gdb testsuite
# pxdb.exp Test that gdb calls pxdb on an application
# built without it.
#
if { [skip_hp_tests] } then { continue }
set testfile pxdb
set srcfile ${testfile}.c
set objfile ${objdir}/${subdir}/${testfile}.o
set binfile ${objdir}/${subdir}/${testfile}
if [get_compiler_info "c++"] {
return -1
}
if { $gcc_compiled } then { continue }
# To build a non-pxdb-ed file, use
#
# <compile to .o file>
# export LD_PXDB /dev/null
# ld -o hello_no_pxdb hello.o /opt/langtools/lib/end.o /usr/ccs/lib/crt0.o -lc
#
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
untested pxdb.exp
return -1
}
#
# use this to debug:
#log_user 1
# Following should get the error message:
#
# ld: (Warning) Can't exec pxdb using path: /dev/null
#
#execute_anywhere "ksh -c \"export LD_PXDB=/dev/null\""
if [istarget "hppa64-*-*"] {
set cmdline "ksh -c \"LD_PXDB=/dev/null ld -o ${binfile} ${objfile} /opt/langtools/lib/pa20_64/crt0.o /opt/langtools/lib/pa20_64/end.o -lc\""
} else {
set cmdline "ksh -c \"LD_PXDB=/dev/null ld -o ${binfile} ${objfile} /usr/ccs/lib/crt0.o /opt/langtools/lib/end.o -lc\""
}
remote_exec build "rm ${binfile}"
remote_exec build $cmdline
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
# We expect to see this:
#
# "warning: File not processed by pxdb--about to process now.
# "
# ".
# "Procedures: 7
# "Files: 2
# "Reading symbols from ~/c_code.dir/hello_no_pxdb...done.
# "(gdb)
#
send_gdb "file ${binfile}\n"
gdb_expect {
-re ".*warning: File not processed by pxdb.*Procedures: \[0-9\]+.*$gdb_prompt $"\
{ pass "PXDB call" }
-re "$gdb_prompt $" {
if [istarget hppa*-*-hpux*] {
pass "Didn't call pxdb"
} else {
fail "Didn't call pxdb"
}
}
-re ".*$gdb_prompt $" { fail "Some other message" }
timeout { fail "call pxdb (timeout)" }
}
# Make sure the new data makes sense
#
if { ![runto callee] } then { return }
send_gdb "print x\n"
gdb_expect {
-re ".*= 1.*$gdb_prompt $" { pass "Good data after pxdb call" }
-re ".*$gdb_prompt $" { fail "No data after pxdb call" }
timeout { fail "(timeout)" }
}
gdb_exit
return 0

View file

@ -1,182 +0,0 @@
# Tests of wide register displays for GDB on HPPA 2.0 machines
# Copyright 1994-2015 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/>. */
# use this to debug:
#log_user 1
if { [skip_hp_tests] } { continue }
if ![istarget "hppa*-*-*"] {
verbose "Wide register test ignored for non-hppa targets."
return 0
}
if ![istarget "hppa64-hp-hpux*"] {
verbose "reg-pa64.exp is only for PA2.0W (aka PA64)."
return 0
}
set testfile "reg-pa64"
set srcfile ${testfile}.s
set binfile ${objdir}/${subdir}/${testfile}
# To build a pa 2.0 executable
#
# as +DA2.0W -o reg-pa64 reg-pa64.s
# or
# cc +DA2.0W -g -o reg-pa64 reg-pa64.s
#
# Don't reject if there are warnings, as we expect this warning:
#
# (Warning) At least one PA 2.0 object file (pa2.0_test2.o) was detected.
# The linked output may not run on a PA 1.x system.
#
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
untested reg-pa64.exp
return -1
}
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
# test machine--there's no 2.0n architecture, so we have
# to try to run the app.
#
gdb_test "break main" "Breakpoint.*" "initial set-up"
send_gdb "run\n"
gdb_expect {
-re ".*Executable file incompatible with hardware.*$gdb_prompt $" {
# Not hppa2.0 machine
#
return 0
}
-re "Cannot exec.*$gdb_prompt $" {
# Not hppa2.0 machine
#
return 0
}
-re ".*Starting program:.*$gdb_prompt $" {
pass "Ready to start test"
}
timeout {
fail "initial set-up, part 2 (timeout)"
return 0
}
}
# Let the program set known values. This secretly deletes
# the breakpoint at main and re-runs to mainend.
#
runto mainend
# Look for known values
#
gdb_test "info reg r1" "r1 1"
gdb_test "info reg r4" "r4 2"
gdb_test "info reg r5" "r5 4"
gdb_test "info reg r6" "r6 8"
gdb_test "info reg r7" "r7 10"
gdb_test "info reg r8" "r8 20"
gdb_test "info reg r9" "r9 40"
gdb_test "info reg r10" "r10 80"
gdb_test "info reg r11" "r11 100"
gdb_test "info reg r12" "r12 200"
gdb_test "info reg r13" "r13 400"
gdb_test "info reg r14" "r14 800"
gdb_test "info reg r15" "r15 1000"
gdb_test "info reg r16" "r16 2000"
# Two odd variants that GDB supports are:
# "1" means "r1", and
# "$1" means "r1"
#
gdb_test "info reg 1 4" "r1 1.*r4 2"
gdb_test "info reg \$1" "r1 1"
# Verify that GDB responds gracefully to a register ID number that
# is out of range.
#
gdb_test "info reg 999" "999: invalid register"
# Make sure the floating point status and error registers
# don't show up as floating point numbers!
#
gdb_test "info reg fpsr" ".*fpsr 0.*" "fpsr"
gdb_test "info reg fpe1" ".*fpe1 .*" "fpe1"
gdb_test "info reg fpe2" ".*fpe2 .*" "fpe2"
gdb_test "info reg fpe3" ".*fpe3 .*" "fpe3"
#DTS CLLbs16708
#info reg should recognize fpe4..fpe7.
setup_xfail hppa64-hp-hpux* CLLbs16708
gdb_test "info reg fpe4" ".*fpe4 .*" "fpe4"
setup_xfail hppa64-hp-hpux* CLLbs16708
gdb_test "info reg fpe5" ".*fpe5 .*" "fpe5"
setup_xfail hppa64-hp-hpux* CLLbs16708
gdb_test "info reg fpe6" ".*fpe6 .*" "fpe6"
setup_xfail hppa64-hp-hpux* CLLbs16708
gdb_test "info reg fpe7" ".*fpe7 .*" "fpe7"
gdb_test "info reg fr4" ".*fr4.*(double precision).* 1.*"
gdb_test "info reg fr5" ".*fr5.*(double precision).* 2.*"
gdb_test "info reg fr6" ".*fr6.*(double precision).* 2.*"
gdb_test "info reg fr7" ".*fr7.*(double precision).* 4.*"
gdb_test "info reg fr8" ".*fr8.*(double precision).* 8.*"
gdb_test "info reg fr9" ".*fr9.*(double precision).* 32.*"
gdb_test "info reg fr10" ".*fr10.*(double precision).* 256.*"
gdb_test "info reg r19" "r19 deadbeefbadcadee"
# Need to add test of use of $<register-name>
#
# Q: How do you say a literal "$" in expect?
# A: You say "\$". A literal "\" is "\\".
#
# Please note that this test will fail as long as we are running
# in 32-bit mode: it will produce "$1 = 0xbadcadee". To fix it
# would require building a real 64-bit gdb (expression evaluation,
# in particular).
#
send_gdb "p/x \$r19\n"
gdb_expect {
-re ".*= 0xdeadbeefbadcadee.*$gdb_prompt $" {
pass "64-bit works"
}
-re ".*= 0xbadcadee.*$gdb_prompt $" {
pass "32-bit extract when using PRINT; expected but not good"
}
-re ".*$gdb_prompt $" {
fail "didn't print any part of right value"
}
timeout {
fail "timeout on print"
}
}
# Need to add tests of setting wide regs too. E.g.
#
# set $r4 = 0x1234567890123456
# p/x $r4
#
# done
#
gdb_exit
return 0

View file

@ -1,104 +0,0 @@
; assemble as "as -o reg-pa64 reg-pa64.s"
; or
; cc -g -o +DA2.0W
;
; PA-RISC 2.0 register contents test.
;
.level 2.0W
.code
.export main,ENTRY
.export mainend,CODE
.export lab1,CODE
.space $TEXT$
.subspa $CODE$
one
.align 8
.stringz "?\xF0\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00"
main
.proc
.callinfo NO_CALLS,FRAME=0
.entry
;; Test we have right register numbers
;;
ADD %r0,%r0,%r1 ; 0
LDI 1,%r1 ; 1
;;
;; Don't put anything into r2 or r3--they are special registers.
;;
ADD %r1,%r1,%r4 ; 2
ADD %r4,%r4,%r5 ; 4
ADD %r5,%r5,%r6 ; 8
ADD %r6,%r6,%r7 ; 16
ADD %r7,%r7,%r8 ; 32
ADD %r8,%r8,%r9 ; 64
ADD %r9,%r9,%r10 ; 128
ADD %r10,%r10,%r11 ; 256
ADD %r11,%r11,%r12 ; 512
ADD %r12,%r12,%r13 ; 1024
ADD %r13,%r13,%r14 ; 2048
ADD %r14,%r14,%r15 ; 4096
ADD %r15,%r15,%r16 ; 9192
;; Test high bits, to be sure we show them.
;;
LDI 0xde,%r19 ; "de"
DEPD,Z %r19,55,56,%r19 ; "de00"
LDI 0xad,%r18 ; "ad"
ADD %r18,%r19,%r19 ; "dead"
DEPD,Z %r19,55,56,%r19 ; "dead00"
LDI 0xbe,%r18 ; "be"
ADD %r18,%r19,%r19 ; "deadbe"
DEPD,Z %r19,55,56,%r19 ; "deadbe00"
LDI 0xef,%r18 ; "ef"
ADD %r18,%r19,%r19 ; "deadbeef"
;
DEPD,Z %r19,55,56,%r19 ; "deadbeef00"
LDI 0xba,%r18 ; "ba"
ADD %r18,%r19,%r19 ; "deadbeefba"
DEPD,Z %r19,55,56,%r19 ; "deadbeefba00"
LDI 0xdc,%r18 ; "dc"
ADD %r18,%r19,%r19 ; "deadbeefbadc"
DEPD,Z %r19,55,56,%r19 ; "deadbeefbadc00"
LDI 0xad,%r18 ; "ad"
ADD %r18,%r19,%r19 ; "deadbeefbadcad"
DEPD,Z %r19,55,56,%r19 ; "deadbeefbadcad00"
LDI 0xee,%r18 ; "ee"
ADD %r18,%r19,%r19 ; "deadbeefbadcadee"
lab1 ;; Test floating point registers
;;
;; LDIL LR'one,%r22 ;
;; FLDD RR'one(%r22),%fr4 ; 1.0
;; FLDD RR'one+8(%r22),%fr5 ; 2.0
;; FLDD RR'one+8(%r22),%fr6 ; 2.0
B,L here,%r2
NOP
here DEPDI 0x0,63,2,%r2
LDO one-here(%r2),%r2
FLDD 0(%r2),%fr4
FLDD 8(%r2),%fr5
FLDD 8(%r2),%fr6
FMPY,DBL %fr5,%fr6,%fr7 ; 4.0
FMPY,DBL %fr6,%fr7,%fr8 ; 8.0
FMPY,DBL %fr7,%fr8,%fr9 ; 32.0
FMPY,DBL %fr8,%fr9,%fr10 ; 256.0
;; The NOP prevents anything from end.o or crt0.o from
;; being appended immediately after "mainend". If that
;; happens, then we may have other labels that have the
;; same address as "mainend", and thus the debugger
;; may symbolize this PC to something other than "mainend".
mainend
NOP
.exit
.procend
.space $TEXT$
.subspa $CODE$
.subspa $LIT$ ;; <don't use> ,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16
.end

View file

@ -1,230 +0,0 @@
# This test script is part of GDB, the GNU debugger.
# Copyright 1998-2015 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/>. */
# Tests of wide register displays for GDB on HPPA 2.0 machines
# use this to debug:
#log_user 1
if { [skip_hp_tests] } then { continue }
set testfile "reg"
if [istarget "hppa64-hp-hpux*"] {
verbose "reg.exp is not for PA2.0W."
return 0
}
set srcfile ${testfile}.s
set binfile ${objdir}/${subdir}/${testfile}
# To build a pa 2.0 executable
#
# as -o reg reg.s
# or
# cc -g -o reg reg.s
#
# The +DA2.0N flag doesn't seem to be needed.
#
# Don't reject if there are warnings, as we expect this warning:
#
# (Warning) At least one PA 2.0 object file (pa2.0_test2.o) was detected.
# The linked output may not run on a PA 1.x system.
#
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
untested reg.exp
return -1
}
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
# test machine--there's no 2.0n architecture, so we have
# to try to run the app.
#
send_gdb "break main\n"
gdb_expect {
-re "Breakpoint.*$gdb_prompt $" {
pass "initial set-up"
}
-re ".*$gdb_prompt $" {
fail "initial set-up"
}
timeout {
fail "initial set-up (timeout)"
}
}
send_gdb "run\n"
gdb_expect {
-re ".*Executable file incompatible with hardware.*$gdb_prompt $" {
# Not hppa2.0 machine
#
return 0
}
-re "Cannot exec.*$gdb_prompt $" {
# Not hppa2.0 machine
#
return 0
}
-re ".*Starting program:.*$gdb_prompt $" {
pass "Ready to start test"
}
timeout {
fail "initial set-up, part 2 (timeout)"
return 0
}
}
# Let the program set known values. This secretly deletes
# the breakpoint at main and re-runs to mainend.
#
runto mainend
# Look for known values
#
# The output format changed between gdb 6.1.1 and gdb HEAD 2004-06-01.
#
# gdb 6.1.1:
# (gdb) info reg r1
# r1 1
#
# gdb HEAD 2004-06-01:
# (gdb) info reg r1
# r1 0x1 1
#
# For now, I accept both formats. In the future, you can remove
# the old gdb 6.1.1 format.
#
# -- chastain 2004-06-26
set ws "\[\r\n\t \]+"
proc hp_integer_reg {regname vhex vdec} {
global ws
set value_611 "$regname${ws}$vhex"
set value_new "$regname${ws}0x$vhex${ws}$vdec"
gdb_test "info reg $regname" "$value_611|$value_new"
}
hp_integer_reg "r1" "1" "1"
hp_integer_reg "r4" "2" "2"
hp_integer_reg "r5" "4" "4"
hp_integer_reg "r6" "8" "8"
hp_integer_reg "r7" "10" "16"
hp_integer_reg "r8" "20" "32"
hp_integer_reg "r9" "40" "64"
hp_integer_reg "r10" "80" "128"
hp_integer_reg "r11" "100" "256"
hp_integer_reg "r12" "200" "512"
hp_integer_reg "r13" "400" "1024"
hp_integer_reg "r14" "800" "2048"
hp_integer_reg "r15" "1000" "4096"
hp_integer_reg "r16" "2000" "8192"
# Two odd variants that GDB supports are:
# "1" means "r1", and
# "$1" means "r1"
hp_integer_reg "1" "1" "1"
hp_integer_reg "4" "2" "2"
set name "info reg \$1"
gdb_test_multiple "info reg \$1" "$name" {
-re "r1${ws}1\r\n$gdb_prompt $" {
pass "$name"
}
-re "r1${ws}0x1${ws}1\r\n$gdb_prompt $" {
pass "$name"
}
}
# Verify that GDB responds gracefully to a register ID number that
# is out of range.
gdb_test "info reg 999" "Invalid register.*999.*"
# Make sure the floating point status and error registers
# don't show up as floating point numbers!
hp_integer_reg "fpsr" "0" "0"
hp_integer_reg "fpe1" "0" "0"
hp_integer_reg "fpe2" "0" "0"
hp_integer_reg "fpe3" "0" "0"
hp_integer_reg "fpe4" "0" "0"
hp_integer_reg "fpe5" "0" "0"
hp_integer_reg "fpe6" "0" "0"
hp_integer_reg "fpe7" "0" "0"
# Floating point registers.
# TODO: these are old format only.
gdb_test "info reg fr4" ".*fr4.*(double precision).* 1"
gdb_test "info reg fr5" ".*fr5.*(double precision).* 2"
gdb_test "info reg fr6" ".*fr6.*(double precision).* 2"
gdb_test "info reg fr7" ".*fr7.*(double precision).* 4"
gdb_test "info reg fr8" ".*fr8.*(double precision).* 8"
gdb_test "info reg fr9" ".*fr9.*(double precision).* 32"
gdb_test "info reg fr10" ".*fr10.*(double precision).* 256"
# An integer register with a 64-bit value.
set name "info reg r19"
gdb_test_multiple "info reg r19" "$name" {
-re "r19${ws}deadbeefbadcadee\r\n$gdb_prompt $" {
# old gdb 6.1.1 format, good result
pass "$name"
}
-re "r19${ws}badcadee\r\n$gdb_prompt $" {
# old gdb 6.1.1 format, bad result
fail "$name (32-bit truncation)"
}
-re "r19${ws}0xdeadbeefbadcadee${ws}16045690984232431086\r\n$gdb_prompt $" {
# new gdb HEAD 2004-06-01 format, good result
pass "$name"
}
-re "r19${ws}0xbadcadee${ws}3135024622\r\n$gdb_prompt $" {
# new gdb HEAD 2004-06-01 format, 32 bit truncation
fail "$name (32-bit truncation)"
}
}
set name "print /x \$r19"
gdb_test_multiple "print /x \$r19" "$name" {
-re "= 0xdeadbeefbadcadee\r\n$gdb_prompt $" {
pass "$name"
}
-re "= 0xbadcadee\r\n$gdb_prompt $" {
# this was a PASS in the last version so keep it PASS for now
# -- chastain 2004-06-26
pass "$name (32-bit truncation)"
}
}
# Need to add tests of setting wide regs too. E.g.
#
# set $r4 = 0x1234567890123456
# p/x $r4
#
# done
#
gdb_exit
return 0

View file

@ -1,96 +0,0 @@
; assemble as "as -o reg reg.s"
; or
; cc -g -o +DA2.0N
;
; PA-RISC 2.0 register contents test.
;
.level 2.0
.code
.export main,ENTRY
.export mainend,CODE
.export lab1,CODE
.space $TEXT$
.subspa $CODE$
main
.proc
.callinfo NO_CALLS,FRAME=0
.entry
;; Test we have right register numbers
;;
ADD %r0,%r0,%r1 ; 0
LDI 1,%r1 ; 1
;;
;; Don't put anything into r2 or r3--they are special registers.
;;
ADD %r1,%r1,%r4 ; 2
ADD %r4,%r4,%r5 ; 4
ADD %r5,%r5,%r6 ; 8
ADD %r6,%r6,%r7 ; 16
ADD %r7,%r7,%r8 ; 32
ADD %r8,%r8,%r9 ; 64
ADD %r9,%r9,%r10 ; 128
ADD %r10,%r10,%r11 ; 256
ADD %r11,%r11,%r12 ; 512
ADD %r12,%r12,%r13 ; 1024
ADD %r13,%r13,%r14 ; 2048
ADD %r14,%r14,%r15 ; 4096
ADD %r15,%r15,%r16 ; 9192
;; Test high bits, to be sure we show them.
;;
LDI 0xde,%r19 ; "de"
DEPD,Z %r19,55,56,%r19 ; "de00"
LDI 0xad,%r18 ; "ad"
ADD %r18,%r19,%r19 ; "dead"
DEPD,Z %r19,55,56,%r19 ; "dead00"
LDI 0xbe,%r18 ; "be"
ADD %r18,%r19,%r19 ; "deadbe"
DEPD,Z %r19,55,56,%r19 ; "deadbe00"
LDI 0xef,%r18 ; "ef"
ADD %r18,%r19,%r19 ; "deadbeef"
;
DEPD,Z %r19,55,56,%r19 ; "deadbeef00"
LDI 0xba,%r18 ; "ba"
ADD %r18,%r19,%r19 ; "deadbeefba"
DEPD,Z %r19,55,56,%r19 ; "deadbeefba00"
LDI 0xdc,%r18 ; "dc"
ADD %r18,%r19,%r19 ; "deadbeefbadc"
DEPD,Z %r19,55,56,%r19 ; "deadbeefbadc00"
LDI 0xad,%r18 ; "ad"
ADD %r18,%r19,%r19 ; "deadbeefbadcad"
DEPD,Z %r19,55,56,%r19 ; "deadbeefbadcad00"
LDI 0xee,%r18 ; "ee"
ADD %r18,%r19,%r19 ; "deadbeefbadcadee"
lab1 ;; Test floating point registers
;;
LDIL LR'one,%r22 ;
FLDD RR'one(%r22),%fr4 ; 1.0
FLDD RR'one+8(%r22),%fr5 ; 2.0
FLDD RR'one+8(%r22),%fr6 ; 2.0
FMPY,DBL %fr5,%fr6,%fr7 ; 4.0
FMPY,DBL %fr6,%fr7,%fr8 ; 8.0
FMPY,DBL %fr7,%fr8,%fr9 ; 32.0
FMPY,DBL %fr8,%fr9,%fr10 ; 256.0
;; The NOP prevents anything from end.o or crt0.o from
;; being appended immediately after "mainend". If that
;; happens, then we may have other labels that have the
;; same address as "mainend", and thus the debugger
;; may symbolize this PC to something other than "mainend".
mainend
NOP
.exit
.procend
.space $TEXT$
.subspa $CODE$
.subspa $LIT$ ;; <don't use> ,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16
one
.align 8
.stringz "?\xF0\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00"
.end

View file

@ -1,43 +0,0 @@
enum Normal {
red,
blue,
green
};
short enum Small {
pink,
cyan,
grey
};
char enum Tiny {
orange,
yellow,
brown
};
main()
{
enum Normal normal[3];
short enum Small small[3];
char enum Tiny tiny[3];
int i;
for (i=0; i < 3; i++)
{
normal[i] = (enum Normal) i;
small[i] = (short enum Small) i;
tiny[i] = (char enum Tiny) i;
}
normal[0] = 0; /* place to hang a breakpoint */
}

View file

@ -1,156 +0,0 @@
# Copyright (C) 1997-2015 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/>. */
# GDB tests for sized enumerations
# This is aimed at HP-UX systems. The HP C compiler
# allows specifying "char" or "short" for an enum, to
# indicate that it is 1 or 2 bytes long.
# This file was written by Satish Pai <pai@apollo.hp.com>
# 1997-09-24
#
# test running programs
#
if { [skip_hp_tests] } then { continue }
set testfile "sized-enum"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if [get_compiler_info] {
return -1
}
if { $gcc_compiled } then { continue }
if {$hp_aCC_compiler} {continue}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
untested sized-enum.exp
return -1
}
gdb_exit
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 {
perror "couldn't run to breakpoint"
continue
}
# set a breakpoint and go there
send_gdb "break 34\n"
gdb_expect {
-re "Breakpoint.*line 34.*$gdb_prompt $" { pass "set break 34" }
-re "$gdb_prompt $" { fail "set break 34" }
timeout { fail "(timeout) set break 34" }
}
send_gdb "continue\n"
gdb_expect {
-re "Continuing\\.\r\n\r\nBreakpoint \[0-9\]*, main....at.*sized-enum\\.c:34\r\n34.*\r\n$gdb_prompt $" { pass "continue" }
-re "$gdb_prompt $" { fail "continue" }
timeout { fail "(timeout) continue" }
}
# print stuff
send_gdb "print normal\n"
gdb_expect {
-re "\\$\[0-9\]* = \\{red, blue, green\\}.*$gdb_prompt $" { pass "print normal" }
-re "$gdb_prompt $" { fail "print normal" }
timeout { fail "(timeout) print normal" }
}
send_gdb "print small\n"
gdb_expect {
-re "\\$\[0-9\]* = \\{pink, cyan, grey\\}.*$gdb_prompt $" { pass "print small" }
-re "$gdb_prompt $" { fail "print small" }
timeout { fail "(timeout) print small" }
}
send_gdb "print tiny\n"
gdb_expect {
-re "\\$\[0-9\]* = \\{orange, yellow, brown\\}.*$gdb_prompt $" { pass "print tiny" }
-re "$gdb_prompt $" { fail "print tiny" }
timeout { fail "(timeout) print tiny" }
}
# print type sizes
send_gdb "print sizeof (Normal)\n"
gdb_expect {
-re "\\$\[0-9\]* = 4.*$gdb_prompt $" { pass "print sizeof (Normal)" }
-re "$gdb_prompt $" { fail "print sizeof (Normal)" }
timeout { fail "(timeout) print sizeof (Normal)" }
}
send_gdb "print sizeof (Small)\n"
gdb_expect {
-re "\\$\[0-9\]* = 2.*$gdb_prompt $" { pass "print sizeof (Small)" }
-re "$gdb_prompt $" { fail "print sizeof (Small)" }
timeout { fail "(timeout) print sizeof (Small)" }
}
send_gdb "print sizeof (Tiny)\n"
gdb_expect {
-re "\\$\[0-9\]* = 1.*$gdb_prompt $" { pass "print sizeof (Tiny)" }
-re "$gdb_prompt $" { fail "print sizeof (Tiny)" }
timeout { fail "(timeout) print sizeof (Tiny)" }
}
# print types
send_gdb "ptype normal\n"
gdb_expect {
-re "type = enum Normal \\{red, blue, green\\} \\\[3\\\].*$gdb_prompt $" { pass "ptype normal" }
-re "$gdb_prompt $" { fail "ptype normal" }
timeout { fail "(timeout) ptype normal" }
}
send_gdb "ptype small\n"
gdb_expect {
-re "type = short enum Small \\{pink, cyan, grey\\} \\\[3\\\].*$gdb_prompt $" { pass "ptype small" }
-re "$gdb_prompt $" { fail "ptype small" }
timeout { fail "(timeout) ptype small" }
}
send_gdb "ptype tiny\n"
gdb_expect {
-re "type = char enum Tiny \\{orange, yellow, brown\\} \\\[3\\\].*$gdb_prompt $" { pass "ptype tiny" }
-re "$gdb_prompt $" { fail "ptype tiny" }
timeout { fail "(timeout) ptype tiny" }
}
# convert to int
send_gdb "print (int) blue\n"
gdb_expect {
-re "\\$\[0-9\]* = 1.*$gdb_prompt $" { pass "print (int) blue" }
-re "$gdb_prompt $" { fail "print (int) blue" }
timeout { fail "(timeout) print (int) blue" }
}
send_gdb "print (int) cyan\n"
gdb_expect {
-re "\\$\[0-9\]* = 1.*$gdb_prompt $" { pass "print (int) cyan" }
-re "$gdb_prompt $" { fail "print (int) cyan" }
timeout { fail "(timeout) print (int) cyan" }
}
send_gdb "print (int) yellow\n"
gdb_expect {
-re "\\$\[0-9\]* = 1.*$gdb_prompt $" { pass "print (int) yellow" }
-re "$gdb_prompt $" { fail "print (int) yellow" }
timeout { fail "(timeout) print (int) yellow" }
}

View file

@ -1,331 +0,0 @@
# Copyright (C) 1997-2015 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/>. */
if { [skip_hp_tests] } then { continue }
set testfile "so-thresh"
set binfile ${objdir}/${subdir}/${testfile}
if [get_compiler_info] {
return -1
}
# This testcase is relatively large, and therefore can take awhile to
# load. We'd best set the timeout to something suitable, or we may
# seem to fail...
#
set timeout 60
# Build procedure for this testcase:
# ${srcdir}/${subdir}/so-thresh.sh ${subdir}
# which calls,
# make -f ${srcdir}/${subdir}/so-thresh.mk <targets> <macros>
# which builds,
# genso-thresh (from genso-thresh.c)
# which generates,
# lib00-so-thresh.c
# lib01-so-thresh.c
# lib02-so-thresh.c
# so-thresh.lopt (link options file)
# lib0*-so-thresh.sl (from .c files above)
# so-thresh (from so-thresh.c)
# using lib0*-so-thresh.sl and so-thresh.lopt
#
# Since so-thresh.mk requires SRCDIR and OBJDIR macro definitions,
# and SRCDIR / OBJDIR could be in relative path format, we use
# so-thresh.sh script to pin down SRCDIR / OBJDIR (using $PWD/ prefix
# when detected relative path values for srcdir / objdir), before the
# 'cd $subdir' call (when this can be done in TCL here, we can call
# make directly instead).
#
# remote_exec build "sh -c \\\"cd ${objdir}/${subdir}\\; make -v -f ${srcdir}/${subdir}/${testfile}.mk clean require_shlibs all SRCDIR=${srcdir}/${subdir} OBJDIR=${objdir}/${subdir}\\\""
remote_exec build "${srcdir}/${subdir}/${testfile}.sh $subdir"
# Only HP-UX (and any other platforms using SOM shared libraries, I
# guess) interprets the auto-solib-limit variable as a threshhold,
# rather than a boolean that strictly enables or disables automatic
# loading of shlib symbol tables.
#
# On HP-UX, it is the size threshhold (in megabytes) at which to
# stop auto loading of symbol tables.
#
if ![istarget "hppa*-hp-hpux*"] then {
setup_xfail "*-*-*"
}
# Start with a fresh gdb
#
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
# This is a test of gdb's ability on HP-UX to stop automatically
# loading symbols of shared libraries, when the total size of the
# debugger's symbol table reaches a specified threshhold.
#
# On HP-UX, the help text for auto-solib-limit mentions that it
# serves as a threshhold.
#
send_gdb "help set auto-solib-limit\n"
gdb_expect {
-re "Set threshold .in Mb. for autoloading shared library symbols.*
When shared library autoloading is enabled, new libraries will be loaded.*
only until the total size of shared library symbols exceeds this.*
threshold in megabytes. Is ignored when using .sharedlibrary.*$gdb_prompt $"\
{pass "help set auto-solib-limit"}
-re "$gdb_prompt $"\
{fail "help set auto-solib-limit"}
timeout {fail "(timeout) help set auto-solib-limit"}
}
# On HP-UX, the threshhold is by default set to 50, which means
# 50 megabytes.
#
send_gdb "show auto-solib-limit\n"
gdb_expect {
-re "Threshold .in Mb. for autoloading shared library symbols is $decimal.*$gdb_prompt $"\
{pass "show auto-solib-limit "}
-re "$gdb_prompt $"\
{fail "show auto-solib-limit "}
timeout {fail "(timeout) show auto-solib-limit "}
}
send_gdb "set auto-solib-limit 1\n"
gdb_expect {
-re ".*$gdb_prompt $"
{pass "set auto-solib-limit to 1"}
-re ".*$gdb_prompt $"
{fail "set auto-solib-limit to 1"}
timeout {fail "(timeout) set auto-solib-limit to 1"}
}
# We have manually verified that our testcase exceeds 1 Mbytes
# of heap space in GDB to hold the symbols for the main program
# and all associated linked-against libraries. Thus, when we
# run to the program's main, and therefore notice all the linked-
# against shlibs, we expect to hit the threshhold.
#
# (Note that we're not using the expect [runto main] function here,
# 'cause we want to match on output from the run command.
#
send_gdb "break main\n"
gdb_expect {
-re "Breakpoint \[0-9\]* at.*$gdb_prompt $"\
{pass "1 set break at main"}
-re "$gdb_prompt $"\
{fail "1 set break at main"}
timeout {fail "(timeout) 1 set break at main"}
}
send_gdb "run\n"
gdb_expect {
-re ".*warning. Symbols for some libraries have not been loaded, because.*
doing so would exceed the size threshold specified by auto-solib-limit.*
To manually load symbols, use the 'sharedlibrary' command.*
To raise the threshold, set auto-solib-limit to a larger value and rerun.*
the program.*$gdb_prompt $"\
{pass "run to main hit auto-solib-limit threshold"}
-re "$gdb_prompt $"\
{fail "run to main hit auto-solib-limit threshold"}
timeout {fail "(timeout) run to main hit auto-solib-limit threshold"}
}
# Verify that "info share" mentions something about libraries whose
# symbols weren't loaded.
#
# We'll assume that at least the last two shlib's symbols weren't
# loaded. As a side-effect of matching this pattern, the text start
# address of the last one is captured in expect_out(1,string).
# (we'll need it for the 'add-symbol-file' command in a nonce...)
#
send_gdb "info sharedlibrary\n"
gdb_expect {
-re ".*lib01_$testfile.sl .*symbols not loaded.*0x\[0-9\]* (0x\[0-9a-fA-F\]*).*$gdb_prompt $"\
{ send_gdb "add-symbol-file lib02_$testfile.sl $expect_out(1,string)\n"
gdb_expect {
-re "add symbol table.*y or n.*$"\
{send_gdb "y\n"
gdb_expect {
-re "$gdb_prompt $" {pass "add-symbol-file and info sharedlib"}
timeout {fail "(timeout) add-symbol-file and info sharedlib"}
}}
-re "$gdb_prompt $"\
{fail "add-symbol-file and info sharedlib"}
timeout {fail "(timeout) add-symbol-file and info sharedlib"}
}
}
-re "$gdb_prompt $" {
setup_xfail hppa*-*-* CHFts24108
fail "info sharedlibrary shows shlibs with unloaded symbols"
}
timeout {fail "(timeout) info sharedlibrary shows shlibs with unloaded symbols"}
}
# Verify that we can manually load the symbol table of a library
# whose symbols weren't loaded. (We'll pick the last one.)
#
# I moved this test inside the one above, because the expect_out array is not ok if the
# previous test has failed, and expect would error out (elz)
#
#send_gdb "add-symbol-file lib02_$testfile.sl $expect_out(1,string)\n"
#gdb_expect {
# -re "add symbol table.*y or n.*$"\
# {send_gdb "y\n"
# gdb_expect {
# -re "$gdb_prompt $" {pass "add-symbol-file"}
# timeout {fail "(timeout) add-symbol-file"}
# }}
# -re "$gdb_prompt $"\
# {fail "add-symbol-file"}
# timeout {fail "(timeout) add-symbol-file"}
#}
# Verify that we can manually load the symbols for all libraries
# which weren't already loaded.
#
# Warning! On a machine with little free swap space, this may
# fail!
#
send_gdb "sharedlibrary\n"
gdb_expect {
-re "Reading symbols from.*done.*$gdb_prompt $"\
{pass "sharedlibrary"}
-re "$gdb_prompt $" {
setup_xfail hppa*-*-* CHFts24108
fail "sharedlibrary"
}
timeout {fail "(timeout) sharedlibrary"}
}
# Rerun the program, this time verifying that we can set the
# threshhold high enough to avoid hitting it.
#
# It appears that gdb isn't freeing memory when rerunning, as one
# would expect. To avoid potentially hitting a virtual memory
# ceiling, start with a fresh gdb.
#
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
send_gdb "break main\n"
gdb_expect {
-re "Breakpoint \[0-9\]* at.*$gdb_prompt $"\
{pass "2 set break at main"}
-re "$gdb_prompt $"\
{fail "2 set break at main"}
timeout {fail "(timeout) 2 set break at main"}
}
send_gdb "set auto-solib-limit 9999\n"
gdb_expect {
-re "$gdb_prompt $"\
{pass "set auto-solib-limit threshold to practical infinity"}
timeout {fail "(timeout) set auto-solib-limit threshold to practical infinity"}
}
send_gdb "run\n"
gdb_expect {
-re ".*warning. Symbols for some libraries have not been loaded, because.*
doing so would exceed the size threshold specified by auto-solib-limit.*
To manually load symbols, use the 'sharedlibrary' command.*
To raise the threshold, set auto-solib-limit to a larger value and rerun.*
the program.*$gdb_prompt $"\
{fail "rerun threshold at practical infinity (still hit threshold)"}
-re "$gdb_prompt $"\
{pass "rerun with threshold at practical infinity"}
timeout {fail "(timeout) rerun with threshold at practical infinity"}
}
# Rerun the program, this time altogether disabling the auto loading
# feature. There should be no information at all about shared
# libraries now.
#
# ??rehrauer: Personally, I'd call that a bug, since it doesn't give
# you the ability to manually load single shlibs (you need the text
# start address that 'info share' normall gives you). On the other
# hand, one can easily choose to load them all...
#
# It appears that gdb isn't freeing memory when rerunning, as one
# would expect. To avoid potentially hitting a virtual memory
# ceiling, start with a fresh gdb.
#
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
send_gdb "break main\n"
gdb_expect {
-re "Breakpoint \[0-9\]* at.*$gdb_prompt $"\
{pass "3 set break at main"}
-re "$gdb_prompt $"\
{fail "3 set break at main"}
timeout {fail "(timeout) 3 set break at main"}
}
send_gdb "set auto-solib-limit 0\n"
gdb_expect {
-re "$gdb_prompt $"\
{pass "set auto-solib-limit threshold to 0"}
timeout {fail "(timeout) set auto-solib-limit threshold to 0"}
}
send_gdb "run\n"
gdb_expect {
-re ".*warning. Symbols for some libraries have not been loaded, because.*
doing so would exceed the size threshold specified by auto-solib-limit.*
To manually load symbols, use the 'sharedlibrary' command.*
To raise the threshold, set auto-solib-limit to a larger value and rerun.*
the program.*$gdb_prompt $"\
{fail "rerun threshold at 0 (still hit threshold)"}
-re "$gdb_prompt $"\
{pass "rerun with threshold at 0"}
timeout {fail "(timeout) rerun with threshold at 0"}
}
# Verify that we can still manually load symbols for all libraries.
# (We'll assume that if the last shlib's symbols are loaded, that
# all of them were.)
#
# Note that we set the GDB "height" variable to prevent GDB from
# prompting
#
# Warning! On a machine with little free swap space, this may
# fail!
#
send_gdb "set height 9999\n"
gdb_expect {
-re "$gdb_prompt $"\
{pass "set screen page height to practical infinity"}
timeout {fail "(timeout) set screen page height to practical infinity"}
}
send_gdb "sharedlibrary\n"
gdb_expect {
-re ".*Reading symbols from .*/lib02-so-thresh\\.sl\\.\\.\\.done\\..*$gdb_prompt $"\
{pass "manually load all symbols"}
-re "$gdb_prompt $" {
setup_xfail hppa*-*-* CHFts24108
fail "manually load all symbols (CHFts24108)"
}
timeout {fail "(timeout) manually load all symbols"}
}
return 0

View file

@ -1,74 +0,0 @@
# Make file for so-thresh test
OBJDIR=.
SRCDIR=.
CFLAGS = +DA1.1 -g
CC=cc
# This is how to build this generator.
genso-thresh.o: ${SRCDIR}/genso-thresh.c
$(CC) $(CFLAGS) -o genso-thresh.o -c ${SRCDIR}/genso-thresh.c
genso-thresh: genso-thresh.o
$(CC) $(CFLAGS) -o genso-thresh genso-thresh.o
# This is how to run this generator.
# This target should be made before the 'all' target,
# to ensure that the shlib sources are all available.
require_shlibs: genso-thresh
if ! [ -a lib00-so-thresh.c ] ; then \
genso-thresh ; \
fi
if ! [ -a lib01-so-thresh.c ] ; then \
genso-thresh ; \
fi
if ! [ -a lib02-so-thresh.c ] ; then \
genso-thresh ; \
fi
# This is how to build all the shlibs.
# Be sure to first make the require_shlibs target!
lib00-so-thresh.o: lib00-so-thresh.c
$(CC) $(CFLAGS) +Z -o lib00-so-thresh.o -c lib00-so-thresh.c
lib00-so-thresh.sl: lib00-so-thresh.o
$(LD) $(LDFLAGS) -b -o lib00-so-thresh.sl lib00-so-thresh.o
lib01-so-thresh.o: lib01-so-thresh.c
$(CC) $(CFLAGS) +Z -o lib01-so-thresh.o -c lib01-so-thresh.c
lib01-so-thresh.sl: lib01-so-thresh.o
$(LD) $(LDFLAGS) -b -o lib01-so-thresh.sl lib01-so-thresh.o
lib02-so-thresh.o: lib02-so-thresh.c
$(CC) $(CFLAGS) +Z -o lib02-so-thresh.o -c lib02-so-thresh.c
lib02-so-thresh.sl: lib02-so-thresh.o
$(LD) $(LDFLAGS) -b -o lib02-so-thresh.sl lib02-so-thresh.o
# For convenience, here's names for all pieces of all shlibs.
SHLIB_SOURCES = \
lib00-so-thresh.c \
lib01-so-thresh.c \
lib02-so-thresh.c
SHLIB_OBJECTS = $(SHLIB_SOURCES:.c=.o)
SHLIBS = $(SHLIB_SOURCES:.c=.sl)
SHLIB_NAMES = $(SHLIB_SOURCES:.c=)
EXECUTABLES = $(SHLIBS) genso-thresh so-thresh
OBJECT_FILES = $(SHLIB_OBJECTS) genso-thresh.o so-thresh.o
shlib_objects: $(SHLIB_OBJECTS)
shlibs: $(SHLIBS)
# This is how to build the debuggable testcase that uses the shlibs.
so-thresh.o: so-thresh.c
$(CC) $(CFLAGS) -o so-thresh.o -c so-thresh.c
so-thresh: shlibs so-thresh.o
$(LD) $(LDFLAGS) -o so-thresh -lc -L${OBJDIR} -c so-thresh.lopt /opt/langtools/lib/end.o /lib/crt0.o so-thresh.o
# Yeah, but you should first make the require_shlibs target!
all: so-thresh genso-thresh
# To remove everything built via this makefile...
clean:
rm -f lib0*-so-thresh.*
rm -f *.o genso-thresh so-thresh.lopt so-thresh.c
rm -f so-thresh

View file

@ -1,34 +0,0 @@
#!/bin/sh
# so-thresh.sh
#
# This script is a "wrapper" to use the so-thresh.mk
# Makefile. See the comments in so-thresh.exp
# regarding why this script exists.
#set -o xtrace
#set -o verbose
if [ "$srcdir" = "${srcdir#/}" ]
then
srcdir="$PWD/$srcdir"
fi
if [ "$objdir" = "${objdir#/}" ]
then
objdir="$PWD/$objdir"
fi
subdir="$1"
HERE=$PWD
cd $subdir
MAKEFLAGS=
make -f ${srcdir}/${subdir}/so-thresh.mk clean require_shlibs all SRCDIR=${srcdir}/${subdir} OBJDIR=${objdir}/${subdir} > ${objdir}/${subdir}/so-thresh.make.out 2>&1
STATUS=$?
cd $HERE
echo "return STATUS is $STATUS"
exit $STATUS

View file

@ -1,25 +0,0 @@
VPATH = @srcdir@
srcdir = @srcdir@
EXECUTABLES = xdb xdb-test
all:
@echo "Nothing to be done for all..."
info:
install-info:
dvi:
install:
uninstall: force
installcheck:
check:
clean mostlyclean:
-rm -f *~ *.o *.ci
-rm -f *.dwo *.dwp
-rm -f core $(EXECUTABLES)
distclean maintainer-clean realclean: clean
-rm -f Makefile config.status config.log
-rm -f *-init.exp
-rm -fr *.log summary detail *.plog *.sum *.psum site.*

View file

@ -1,46 +0,0 @@
/* This is a sample program for the HP WDB debugger. */
#include <stdio.h>
#include <stdlib.h>
#ifdef PROTOTYPES
extern int sum(int *, int, int);
#else
extern int sum();
#endif
#define num 10
static int my_list[num] = {3,4,2,0,2,1,8,3,6,7};
#ifdef __STDC__
void print_average(int *list, int low, int high)
#else
void print_average(list, low, high)
int *list, low, high;
#endif
{
int total = 0, num_elements = 0, average = 0;
total = sum(list, low, high);
num_elements = high - low; /* note this is an off-by-one bug */
average = total / num_elements;
printf("%10.d\n", average);
}
#ifdef __STDC__
int main(void)
#else
main ()
#endif
{
char c;
int first = 0, last = 0;
last = num-1;
/* Try two test cases. */
print_average (my_list, first, last);
print_average (my_list, first, last - 3);
exit(0);
}

View file

@ -1,15 +0,0 @@
/* This is a sample program for the HP/DDE debugger. */
#include <stdio.h>
#ifdef __STDC__
int sum(int *list, int low, int high)
#else
int sum(list, low, high)
int *list, low, high;
#endif
{
int i = 0, s = 0;
for (i = low; i <= high; i++)
s += list[i];
return(s);
}

View file

@ -1,20 +0,0 @@
#include <stdio.h>
int callee( x )
int x;
{
int y = x * x;
return (y - 2);
}
main()
{
int i;
for (i = 1; i < 10; i++)
{
printf( "%d ", callee( i ));
}
printf( " Goodbye!\n" );
}

View file

@ -1,39 +0,0 @@
#include "xdb0.h"
main ()
{
int x;
x = 0;
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
foo (x++);
}
static void
unused ()
{
/* Not used for anything */
}

View file

@ -1,36 +0,0 @@
/* An include file that actually causes code to be generated in the
including file. This is known to cause problems on some systems. */
static void
foo (x)
int x;
{
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
bar (x++);
}

File diff suppressed because one or more lines are too long

View file

@ -1,67 +0,0 @@
# Copyright (C) 1992-2015 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 Fred Fish. (fnf@cygnus.com)
if { [skip_hp_tests] } then { continue }
#
# test running programs
#
set testfile "xdb"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
untested xdb1.exp
return -1
}
if [get_compiler_info] {
return -1
}
if { $gcc_compiled } then { continue }
global GDBFLAGS
set saved_gdbflags $GDBFLAGS
set GDBFLAGS "$GDBFLAGS --xdb"
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
gdb_test "set pagination off" ""
gdb_test "show pagination" "State of pagination is off."
gdb_test "set pagination on" ""
gdb_test "show pagination" "State of pagination is on."
gdb_test "txbreak callee" "Breakpoint.*at.*"
gdb_test "info break" "Num.*Type.*Disp.*Enb.*Address.*What\r\n.*breakpoint.*del.*y.*"
gdb_test "xbreak callee" "Breakpoint.*at.*.*"
gdb_test "info break" "Num.*Type.*Disp.*Enb.*Address.*What\r\n.*breakpoint.*keep.*y.*"
gdb_exit
set GDBFLAGS $saved_gdbflags
return 0

View file

@ -1,95 +0,0 @@
# Copyright (C) 1992-2015 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 Fred Fish. (fnf@cygnus.com)
if { [skip_hp_tests] } then { continue }
global message
#
# test running programs
#
set testfile "xdb"
set binfile ${objdir}/${subdir}/${testfile}
if { [gdb_compile "${srcdir}/${subdir}/xdb0.c" "${binfile}0.o" object {debug}] != "" } {
perror "Couldn't compile ${testfile}0.c to object"
return -1
}
if { [gdb_compile "${srcdir}/${subdir}/xdb1.c" "${binfile}1.o" object {debug}] != "" } {
perror "Couldn't compile ${testfile}1.c to object"
return -1
}
if { [gdb_compile "${binfile}0.o ${binfile}1.o" ${binfile} executable {debug}] != "" } {
perror "Couldn't link ${testfile}."
return -1
}
if [get_compiler_info] {
return -1
}
if { $gcc_compiled } then { continue }
global GDBFLAGS
set saved_gdbflags $GDBFLAGS
set GDBFLAGS "$GDBFLAGS --xdb"
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
gdb_test "break main" ""
gdb_test "run" ""
gdb_test "go +2" "Breakpoint.*at.*file.*xdb0\.c, line 12\.\r\nContinuing at.*\r\nmain \\(\\) at.*xdb0\.c:12\r\n12\[ \t\]+foo \\(x\\+\\+\\);"
gdb_test "go -2" "Note: breakpoint.*also set at pc.*\.\r\nBreakpoint.*at.*file.*xdb0\.c, line 10\.\r\nContinuing at.*\.\r\n\r\nBreakpoint.*, main \\(\\) at.*xdb0\.c:10.*"
gdb_test "go 16" "Breakpoint.*at.*file.*xdb0\.c, line 16\.\r\nContinuing at.*\.\r\nmain \\(\\) at.*xdb0\.c:16\r\n16\[ \t\]+foo \\(x\\+\\+\\);"
send_gdb "go bar\n"
gdb_expect {
-re ".*Line 5 is not in .main.. Jump anyway.*y or n. $" {
send_gdb "y\n"
gdb_expect {
-re "$gdb_prompt $"\
{pass "go bar"}
timeout {fail "(timeout) go bar"}
}
}
-re "Continuing at.*\.\r\nbar \\(x=0\\) at.*xdb1\.c:5" {}
timeout { perror "(timeout) go bar" ; return }
}
# Verify that GDB responds gracefully to a "go" command without
# an argument.
#
gdb_test "go" "Usage: go <location>"
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
gdb_test "break bar" ""
gdb_test "run" ""
gdb_test "backtrace full" ".*bar \\(x=0\\) at.*xdb1\.c:5\r\nNo locals\.\r\n.1.* in foo \\(x=1\\) at.*xdb0\.h:8\r\nNo locals\.\r\n.2.* in main \\(\\) at.*xdb0\.c:11\r\n.*x = 1"
gdb_test "bt 1 full" ".*bar \\(x=0\\) at.*xdb1\.c:5\r\nNo locals\.\r\n\\(More stack frames follow\.\.\.\\)"
gdb_test "bt full 2" ".*bar \\(x=0\\) at.*xdb1\.c:5\r\nNo locals\.\r\n.1.* in foo \\(x=1\\) at.*xdb0\.h:8\r\nNo locals\.\r\n\\(More stack frames follow\.\.\.\\)"
set GDBFLAGS $saved_gdbflags
return 0

View file

@ -1,316 +0,0 @@
# Copyright (C) 1998-2015 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/>. */
if { [skip_hp_tests] } then { continue }
set testfile1 "average"
set testfile2 "sum"
set testfile "xdb-test"
set binfile1 ${objdir}/${subdir}/${testfile1}
set binfile2 ${objdir}/${subdir}/${testfile2}
set binfile ${objdir}/${subdir}/${testfile}
if { [gdb_compile "${srcdir}/${subdir}/average.c" "${binfile1}.o" object {debug}] != "" } {
untested xdb3.exp
return -1
}
if { [gdb_compile "${srcdir}/${subdir}/sum.c" "${binfile2}.o" object {debug}] != "" } {
untested xdb3.exp
return -1
}
if { [gdb_compile "${binfile1}.o ${binfile2}.o" ${binfile} executable {debug}] != "" } {
untested xdb3.exp
return -1
}
if [get_compiler_info] {
return -1
}
if { $gcc_compiled } then { continue }
proc xdb_reinitialize_dir { subdir } {
global gdb_prompt
send_gdb "D\n"
gdb_expect {
-re "Reinitialize source path to empty.*y or n. " {
send_gdb "y\n"
gdb_expect {
-re "Source directories searched.*$gdb_prompt $" {
send_gdb "D $subdir\n"
gdb_expect {
-re "Source directories searched.*$gdb_prompt $" {
verbose "Dir set to $subdir"
}
-re ".*$gdb_prompt $" {
perror "Dir \"$subdir\" failed."
}
}
}
-re ".*$gdb_prompt $" {
perror "Dir \"$subdir\" failed."
}
}
}
-re ".*$gdb_prompt $" {
perror "Dir \"$subdir\" failed."
}
}
}
#
#test_search
#
proc test_search { } {
gdb_test "set listsize 4" ""
gdb_test "list average.c:1" "1\[ \t\]+/. This is a sample .*"
gdb_test "/ print_average" "17\[ \t\]+void print_average\\(int \\*list.*"
gdb_test "/ print_average" "19\[ \t\]+void print_average\\(list, low, high\\)"
gdb_test "/ print_average" "42\[ \t\]+print_average \\(my_list, first, last\\);"
gdb_test "? print_average" "19\[ \t\]+void print_average\\(list, low, high\\)"
gdb_test "? sum" "9\[ \t]+extern int sum\\(\\);"
}
#
#test_viewing_loc
#
proc test_viewing_loc { } {
gdb_test "L" "No stack."
gdb_test "break main" ""
gdb_test "R" ""
gdb_test "L" "#0\[ \t\]+main \\(\\) at.*average.c:38\r\n38\[ \t\]+int first = 0, last = 0;"
}
#
#test_dir_list
#
proc test_dir_list { } {
gdb_test "ld" "Source directories searched: .*"
}
#
#test_list_sources
#
proc test_list_sources { } {
if [istarget "hppa64-*-*"] {
gdb_test "lf" "Source files for which symbols have been read in:\r\n\r\n.*average\\.c.*Source files for which symbols will be read in on demand:\r\n\r\nglobals,.*\[se\]\[un\]\[md\]\\.c.*\[se\]\[un\]\[md\]\\.c"
} else {
gdb_test "lf" "Source files for which symbols have been read in:\r\n\r\n.*average\\.c.*\r\n\r\nSource files for which symbols will be read in on demand:\r\n\r\nglobals, end\\.c,.*sum\\.c"
}
}
#
#test_vlist
#
proc test_vlist { } {
gdb_test "v main" "34\[ \t\]+main \\(\\)\r\n35\[ \t\]+#endif\r\n36\[ \t\]+.\r\n37\[ \t\]+char c;"
}
#
#test_va
#
proc test_va { } {
if [istarget "hppa64-*-*"] {
gdb_test "va main" "Dump of assembler code for function main:\r\n.*0x.* <main>:\[ \t\]+std %rp,-0x10\\(%sp\\)\r\n0x.* <main\\+4>:\[ \t\]+std,ma %r3,0xd0\\(%sp\\)\r\n.*0x.* <main\\+8>:\[ \t\]+std %r4,-0xc8\\(%sp\\)\r\n.*0x.* <main\\+12>:\[ \t\]+copy %ret1,%r3\r\n.*"
} else {
gdb_test "va main" "Dump of assembler code for function main:\r\n.*0x.* <main>:\[ \t\]+stw %rp,-0x14\\(%sr0,%sp\\)\r\n0x.* <main\\+4>:\[ \t\]+ldo 0x\[48\]0\\(%sp\\),%sp\r\n.*0x.* <main\\+8>:\[ \t\]+stw %r0,-0x.*\\(%sr0,%sp\\)\r\n.*0x.* <main\\+12>:\[ \t\]+stw %r0,-0x.*\\(%sr0,%sp\\)\r\n.*"
}
}
#
#test_list_globals
#
proc test_list_globals { } {
gdb_test "lg" "All defined variables:\r\n\r\nFile globals:.*"
# gdb_test "lg" "All defined variables:\r\n\r\nFile globals:\r\nchar __buffer.512.;\r\nint __d_eh_catch_catch;\r\nint __d_eh_catch_throw;.*"
}
#
#test_list_registers
#
proc test_list_registers { } {
if [istarget "hppa64-*-*"] {
gdb_test "lr" "\[ \t\]+flags:.*r17:.*pcsqh:.*cr0:.*\r\n\[ \t\]+r1:.*r18:.*pcoqt:.*cr8:.*"
} else {
gdb_test "lr" "\[ \t\]+flags:.*r18:.*pcsqt:.*ccr:.*\r\n\[ \t\]+r1:.*r19:.*eiem:.*cr12:.*"
}
gdb_test "lr r1" "r1 .*"
}
#
#test_backtrace
#
proc test_backtrace { } {
gdb_test "t" "#0 main \\(\\) at.*average.c:39"
gdb_test "T" "#0 main \\(\\) at.*average.c:39\r\n\[ \t\]+c = *.*\r\n\[ \t\]+first = 0\r\n\[ \t\]+last = 0"
gdb_test "break sum" ""
gdb_test "cont" ""
gdb_test "next"
gdb_test "t" "#0 sum \\(list=0x.*, low=0, high=9\\) at.*sum\.c:12\r\n#1 0x.* in print_average \\(list=0x.*, low=0, high=9\\) at.*average\.c:24\r\n#2 0x.* in main \\(\\) at.*average\.c:42"
gdb_test "t 1" "#0 sum \\(list=0x.*, low=0, high=9\\) at.*sum\.c:12\r\n\\(More stack frames follow\.\.\.\\)"
gdb_test "T" "#0 sum \\(list=0x.*, low=0, high=9\\) at.*sum\.c:12\r\n\[ \t\]+i = 0\r\n\[ \t\]+s = 0\r\n#1 0x.* in print_average \\(list=0x.*, low=0, high=9\\) at.*average\.c:24\r\n\[ \t\]+total = 0\r\n\[ \t\]+num_elements = 0\r\n\[ \t\]+average = 0\r\n#2 0x.* in main \\(\\) at.*average\.c:42\r\n\[ \t\]+c = *.*\r\n\[ \t\]+first = 0\r\n\[ \t\]+last = 9"
gdb_test "T 1" "#0 sum \\(list=0x.*, low=0, high=9\\) at.*sum\.c:12\r\n\[ \t\]+i = 0\r\n\[ \t\]+s = 0\r\n\\(More stack frames follow\.\.\.\\)"
gdb_test "V" "#0 sum \\(list=0x.*, low=0, high=9\\) at.*sum\.c:12\r\n\\12\[ \t\]+for \\(i = low;.*\\)"
gdb_test "V 1" "#1 0x.* in print_average \\(list=0x.*, low=0, high=9\\) at.*average\.c:24\r\n24\[ \t\]+total = sum\\(list, low, high\\);"
}
#
# test_go
#
proc test_go { } {
gdb_test "break main" ""
gdb_test "R" ""
gdb_test "g +1" "Breakpoint.*at 0x.*: file.*average\.c, line 39\.\r\nContinuing at 0x.*\.\r\nmain \\(\\) at.*average\.c:39\r\n39\[ \t\]+last = num-1;"
gdb_test "g 42" "Breakpoint.*at 0x.*: file.*average\.c, line 42\.\r\nContinuing at 0x.*\.\r\nmain \\(\\) at.*average\.c:42\r\n42\[ \t\]+print_average \\(my_list, first, last\\);"
}
#
#test_breakpoints
#
proc test_breakpoints { } {
global gdb_prompt
gdb_test "sb" ""
gdb_test "lb" "Num.*Type.*Disp.*Enb.*Address.*What\r\n1\[ \r\]+breakpoint\[ \r\]+keep n.*in main at.*average\.c:38.*"
gdb_test "ab" ""
gdb_test "lb" "Num.*Type.*Disp.*Enb.*Address.*What\r\n1\[ \r\]+breakpoint\[ \r\]+keep y.*in main at.*average\.c:38.*"
gdb_test "ba sum" "Breakpoint.*at.*: file.*sum\.c, line 11\."
gdb_test "cont" ""
gdb_test "bx" "Breakpoint.*at.*: file.*sum.c, line 15\."
#gdb_test "bx if (1)" "Breakpoint.*at.*: file.*sum.c, line 15\."
gdb_test "bx 1" "Breakpoint.*at.*: file.*average.c, line 29\."
gdb_test "bx 1 if (1)" "Breakpoint.*at.*: file.*average.c, line 29\."
gdb_test "bc 1 2" "Will ignore next 2 crossings of breakpoint 1\."
gdb_test "lb 1" "Num.*Type.*Disp.*Enb.*Address.*What\r\n1\[ \r\]+breakpoint\[ \r\]+keep y.*in main at.*average\.c:38\r\n.*breakpoint already hit 1 time\r\n.*ignore next 2 hits.*"
send_gdb "db\n"
gdb_expect {
-re "Delete all breakpoints.*y or n. $" {
send_gdb "y\n"
exp_continue
}
-re "y\r\n$gdb_prompt $" {}
-re ".*$gdb_prompt $" { # This happens if there were no breakpoints
}
timeout { perror "Delete all breakpoints (timeout)" ; return }
}
send_gdb "lb\n"
gdb_expect {
-re "No breakpoints or watchpoints..*$gdb_prompt $" {}
-re ".*$gdb_prompt $" { perror "breakpoints not deleted" ; return }
timeout { perror "info breakpoints (timeout)" ; return }
}
gdb_test "xbreak" "Breakpoint.*at.*file.*sum.c, line 15."
gdb_test "xbreak print_average" "Breakpoint.*at.*file.*average.c, line 29."
gdb_test "xbreak if (1)" "Note: breakpoint.*also set at pc.*Breakpoint.*at.*file.*sum.c, line 15."
gdb_test "xbreak print_average if (1)" "Note: breakpoint.*also set at pc.*Breakpoint.*at.*file.*average.c, line 29."
send_gdb "lb\n"
gdb_expect {
-re "Num Type Disp Enb Address What.*breakpoint keep y.*sum.c:15.*breakpoint keep y.*average.c:29.*breakpoint keep y.*sum.c:15.*stop only if 1.*breakpoint keep y.*average.c:29.*stop only if 1.*$gdb_prompt $" {pass "lb on xbreaks"}
-re ".*$gdb_prompt $" { fail "breakpoints not deleted"}
timeout { fail "info breakpoints (timeout)" }
}
}
#
# test_signals
#
proc test_signals { } {
gdb_test "handle SIGTERM nostop noprint" ""
gdb_test "z 15 s" "Signal.*Stop.*Print.*Pass to program.*Description\r\nSIGTERM.*Yes.*Yes.*Yes.*Terminated"
gdb_test "z 15 r" "Signal.*Stop.*Print.*Pass to program.*Description\r\nSIGTERM.*No.*No.*Yes.*Terminated"
gdb_test "z 15 i" "Signal.*Stop.*Print.*Pass to program.*Description\r\nSIGTERM.*No.*No.*No.*Terminated"
gdb_test "z 15 r" "Signal.*Stop.*Print.*Pass to program.*Description\r\nSIGTERM.*No.*Yes.*No.*Terminated"
gdb_test "z 15 Q" "Signal.*Stop.*Print.*Pass to program.*Description\r\nSIGTERM.*No.*No.*No.*Terminated"
gdb_test "lz" "Signal.*Stop.*Print.*Pass to program.*Description\r\n\r\nSIGHUP.*Yes.*"
}
# Start with a fresh gdb.
global GDBFLAGS
set saved_gdbflags $GDBFLAGS
set GDBFLAGS "$GDBFLAGS --xdb"
gdb_exit
gdb_start
xdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
send_gdb "set width 0\n"
gdb_expect -re "$gdb_prompt $"
test_search
test_viewing_loc
test_dir_list
test_list_sources
test_vlist
test_va
gdb_test "next"
gdb_test "l" "No arguments.\r\nc = *.*\r\nfirst = 0\r\nlast = 0"
#test_list_globals
test_list_registers
test_backtrace
# Start with a fresh gdb.
gdb_exit
gdb_start
xdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
send_gdb "set width 0\n"
gdb_expect -re "$gdb_prompt $"
test_go
gdb_exit
gdb_start
xdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
send_gdb "set width 0\n"
gdb_expect -re "$gdb_prompt $"
gdb_test "break main" ""
gdb_test "R" ""
gdb_test "S" "39\[ \t\]+last = num-1;"
test_breakpoints
test_signals
gdb_test "sm" ""
gdb_test "info set" ".*pagination: State of pagination is off.*"
gdb_test "am" ""
gdb_test "info set" ".*pagination: State of pagination is on.*"
gdb_exit
set GDBFLAGS $saved_gdbflags
return 0

View file

@ -1,25 +0,0 @@
VPATH = @srcdir@
srcdir = @srcdir@
EXECUTABLES = bs14602 bs15503 solib-d solib-d1.sl solib-d2.sl
all:
@echo "Nothing to be done for all..."
info:
install-info:
dvi:
install:
uninstall: force
installcheck:
check:
clean mostlyclean:
-rm -f *~ *.o *.ci
-rm -f *.dwo *.dwp
-rm -f core $(EXECUTABLES)
distclean maintainer-clean realclean: clean
-rm -f Makefile config.status config.log
-rm -f *-init.exp
-rm -fr *.log summary detail *.plog *.sum *.psum site.*

View file

@ -1,9 +0,0 @@
/* Test file for bs14602.exp */
double v_double = 0;
long double v_long_double = 12345.67890;
int main () {
v_double = 0;
v_long_double = 12345.67890;
}

View file

@ -1,111 +0,0 @@
# This file was written by Sue Kimura. (sue_kimura@hp.com)
#
# Test for CLLbs14602 -- problem with recognizing long double on 10.20.
#
# Source file: bs14602.c
if { [skip_hp_tests] } { continue }
#
# test running programs
#
set testfile bs14602
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
# 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 ansi_option "-Ae"
} else {
set ansi_option ""
}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "$binfile" executable "debug {additional_flags=${ansi_option}}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
# Start with a fresh gdb.
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
# get to end of main so we can check out some stuff
if ![runto main] {
perror "couldn't run to breakpoint main"
continue
}
gdb_test "txbreak" \
"Breakpoint $decimal at $hex: file .*bs14602.c, line 9." \
"set breakpoint at end of main"
gdb_test "continue" \
"Continuing.\r\n$hex in main* \\(\\) at .*bs14602.c:9\r\n.*" \
"continue to end of main"
# test some simple things about long double
gdb_test "whatis v_long_double" \
"type = long double" \
"whatis v_long_double"
gdb_test "ptype v_long_double" \
"type = long double" \
"ptype v_long_double"
gdb_test "print sizeof \(long double\)" \
" = 16" \
"print sizeof long double"
gdb_test "print sizeof \(v_long_double\)" \
" = 16" \
"print sizeof v_long_double"
gdb_test "print v_long_double" \
" = 12345.67890000000079453457146883011" \
"print v_long_double - 1"
gdb_test "set variable v_long_double = 98765.43210" \
"" \
"set variable v_long_double to constant value"
gdb_test "print v_long_double" \
" = 98765.43210000000544823706150054932" \
"print v_long_double - 2"
gdb_test "set variable v_double = v_long_double" \
"" \
" set variable v_double with v_long_double"
gdb_test "print v_double" \
" = 98765.432100000005" \
" print v_double"
#reset v_long_double
gdb_test "set variable v_long_double = 0" \
"" \
"reset v_long_double to 0"
gdb_test "print v_long_double" \
" = 0" \
"print v_long_double - 3"
gdb_test "set variable v_long_double = v_double" \
"" \
" set variable v_long_double with v_long_double"
gdb_test "print v_long_double" \
" = 98765.43210000000544823706150054932" \
"print v_long_double - 4 "

View file

@ -1,6 +0,0 @@
main()
{
function_from_primary();
function_from_secondary();
}

View file

@ -1,271 +0,0 @@
# Copyright (C) 1997-2015 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

View file

@ -1,12 +0,0 @@
static int file_static = 1234;
int global_from_primary = 5678;
int function_from_primary()
{
garbage();
}
force_generation_of_export_stub()
{
_start(); /* force main module to have an export stub for _start() */
}

View file

@ -1,11 +0,0 @@
int global_from_secondary = 9012;
int function_from_secondary()
{
static int local_static = 3456;
return 0;
}
garbage()
{
return 0;
}

View file

@ -1,26 +0,0 @@
VPATH = @srcdir@
srcdir = @srcdir@
EXECUTABLES = objdbg01/test0 objdbg01/test1 objdbg02/test \
objdbg03/test objdbg04/test0 objdbg04/test1
all:
@echo "Nothing to be done for all..."
info:
install-info:
dvi:
install:
uninstall: force
installcheck:
check:
clean mostlyclean:
-rm -f *~ objdbg*/*.o objdbg*/*.ci
-rm -f *.dwo *.dwp
-rm -f core $(EXECUTABLES)
distclean maintainer-clean realclean: clean
-rm -f Makefile config.status config.log
-rm -f *-init.exp
-rm -fr *.log summary detail *.plog *.sum *.psum site.*

View file

@ -1,223 +0,0 @@
# Test reading debug information from in object files.
if { [skip_hp_tests] } { continue }
if { ![istarget "hppa*-*-hpux*"] } {
verbose "HPUX test ignored for non-hppa targets."
return 0
}
set testfile "test"
set srcsubdir ${srcdir}/${subdir}/objdbg01
set toolssubdir ${srcdir}/${subdir}/tools
set objdbgdir ${objdir}/${subdir}/objdbg01
set binfile ${objdbgdir}/${testfile}
set symaddrfile ${toolssubdir}/symaddr
# Create and source the file that provides information about the compiler
# used to compile the test case.
if [get_compiler_info] {
return -1
}
if {!$hp_aCC_compiler && !$hp_cc_compiler} {
return 0
}
if { [gdb_compile "${toolssubdir}/test-objdbg.cc" "${objdbgdir}/test-objdbg.o" object "debug c++ {additional_flags=-I${toolssubdir} +objdebug}"] != "" } {
untested objdbg01.exp
return -1
}
if { [gdb_compile "${srcsubdir}/x1.cc" "${objdbgdir}/x1.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x1.cc"
return -1
}
if { [gdb_compile "${srcsubdir}/x2.cc" "${objdbgdir}/x2.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x2.cc"
return -1
}
if { [gdb_compile "${srcsubdir}/x3.cc" "${objdbgdir}/x3.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x3.cc"
return -1
}
if { [gdb_compile "${objdbgdir}/x1.o ${objdbgdir}/x2.o ${objdbgdir}/x3.o" "${binfile}0" executable "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile ${binfile}0"
return -1
}
if {[gdb_compile "${objdbgdir}/x3.o ${objdbgdir}/x2.o ${objdbgdir}/x1.o" "${binfile}1" executable "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile ${binfile}1"
return -1
}
# Test two executables. The first has x1.cc linked first, the second
# has x3.cc linked first. The difference is that in the first one,
# the Info<PP> instantiation from x1.cc is taken, in the second, its
# from x3.cc.
for {set filenum 0} {$filenum < 2} {incr filenum 1} {
# Lets test some commons
# Need to restart each to make sure objects are not loaded
# Also cross check the address with what is actually in the
# object file (call the executable ${symaddrfile} to retrieve the
# information).
set exec_output [lindex [remote_exec build "${symaddrfile} ${binfile}${filenum} acomm"] 1]
regsub -all "\[\r\n\]" ${exec_output} "" exec_output
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "p &acomm" "..* = \\(int \[*\]\\) 0x${exec_output}.*"
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "b main" "Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+: file ..*/x1.cc, line 20."
gdb_test "run" "Starting program:.*Breakpoint \[0-9\]+, main .*/x1.cc:20.*20.*acomm.*=.*1.*"
gdb_test "s 1" "21.*"
gdb_test "p acomm" ".* = 1.*"
gdb_test "p &acomm" "..* = \\(int \[*\]\\) 0x${exec_output}.*"
# Step through each line.
# Do this three times.
# First round: Test that things are okay after printing commons
# above.
# Second round: Restart gdb and make sure we can walk through
# Third round: Do NOT restrart gdb to verify that the debug information
# was not messed up by loading additional object files from
# the first run through.
for {set i 0} {$i < 3} {incr i 1} {
if $i==1 then {
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
}
if $i!=2 then {
gdb_test "b main" \
"Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+: file ..*/x1.cc, line 20."
}
if $i!=0 then {
gdb_test "run" \
"Starting program:.*Breakpoint \[0-9\]+, main .*/x1.cc:20.*"
gdb_test "s 1" "21.*"
}
gdb_test "s 1" "Info<PP>::p .*/x3.h:11.*"
gdb_test "s 1" "PP::print .*/x2.cc:8.*"
gdb_test "s 1" ".*9.*"
gdb_test "s 1" "Info<PP>::p .*/x3.h:12.*"
gdb_test "s 1" "main .*/x1.cc:22.*"
gdb_test "s 1" "foo .*/x3.cc:5.*"
gdb_test "s 1" "Info<PP>::p .*/x3.h:11.*"
gdb_test "s 1" "PP::print .*/x2.cc:8.*"
gdb_test "s 1" ".*9.*"
gdb_test "s 1" "Info<PP>::p .*/x3.h:12.*"
gdb_test "s 1" "foo .*/x3.cc:6.*"
gdb_test "s 1" "Info<QQ>::p .*/x3.h:11.*"
gdb_test "s 1" "QQ::print .*/x2.cc:13.*"
gdb_test "s 1" ".*14.*"
gdb_test "s 1" "Info<QQ>::p .*/x3.h:12.*"
gdb_test "s 1" "foo .*/x3.cc:7.*"
gdb_test "s 1" "main .*/x1.cc:24.*"
gdb_test "s 1" ".*25.*"
if [istarget "hppa64-*-*"] {
gdb_test "s 1" "0x\[0-9a-f\]+ in .*"
gdb_continue_to_end
} else {
gdb_test "s 1" "0x\[0-9a-f\]+ in _start .*"
gdb_continue_to_end "" "s 1"
}
}
# Test various ptypes, and combinations of them
# Test things multiple times in each set to make sure that the debug
# information did not get messed up.
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype QQ" "type = (class |)QQ {..*void print( |)..*}.*"
gdb_test "ptype PP" "type = (class |)PP {..*void print( |)..*}.*"
gdb_test "ptype QQ" "type = (class |)QQ {..*void print( |)..*}.*"
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype PP" "type = (class |)PP {..*void print( |)..*}.*"
gdb_test "ptype QQ" "type = (class |)QQ {..*void print( |)..*}.*"
gdb_test "ptype PP" "type = (class |)PP {..*void print( |)..*}.*"
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype Info<QQ>" "type = (class |)Info<QQ> {..*void p( |)..*}.*"
gdb_test "ptype Info<PP>" "type = (class |)Info<PP> {..*void p( |)..*}.*"
gdb_test "ptype Info<QQ>" "type = (class |)Info<QQ> {..*void p( |)..*}.*"
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype Info<PP>" "type = (class |)Info<PP> {..*void p( |)..*}.*"
gdb_test "ptype Info<QQ>" "type = (class |)Info<QQ> {..*void p( |)..*}.*"
gdb_test "ptype Info<PP>" "type = (class |)Info<PP> {..*void p( |)..*}.*"
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype Info" "type = template <..*> (class |)Info {..*}.*"
gdb_test "ptype Info<PP>" "type = (class |)Info<PP> {..*void p( |)..*}.*"
gdb_test "ptype Info<QQ>" "type = (class |)Info<QQ> {..*void p( |)..*}.*"
gdb_test "ptype Info" "type = template <..*> (class |)Info {..*}.*"
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype class QQ" "type = (class |)QQ {..*void print( |)..*}.*"
gdb_test "ptype class PP" "type = (class |)PP {..*void print( |)..*}.*"
gdb_test "ptype class QQ" "type = (class |)QQ {..*void print( |)..*}.*"
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype class PP" "type = (class |)PP {..*void print( |)..*}.*"
gdb_test "ptype class QQ" "type = (class |)QQ {..*void print( |)..*}.*"
gdb_test "ptype class PP" "type = (class |)PP {..*void print( |)..*}.*"
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype class Info<QQ>" \
"type = (class |)Info<QQ> {..*void p( |)..*}.*"
gdb_test "ptype class Info<PP>" \
"type = (class |)Info<PP> {..*void p( |)..*}.*"
gdb_test "ptype class Info<QQ>" \
"type = (class |)Info<QQ> {..*void p( |)..*}.*"
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype class Info<PP>" \
"type = (class |)Info<PP> {..*void p( |)..*}.*"
gdb_test "ptype class Info<QQ>" \
"type = (class |)Info<QQ> {..*void p( |)..*}.*"
gdb_test "ptype class Info<PP>" \
"type = (class |)Info<PP> {..*void p( |)..*}.*"
}

View file

@ -1,25 +0,0 @@
#include <stdio.h>
#include "x3.h"
extern void foo();
extern int acomm;
int main3()
{
return 1;
}
int main2()
{
return 0;
}
int main()
{
acomm = 1;
(new Info<PP>)->p(new PP);
foo();
return 0;
}

View file

@ -1,14 +0,0 @@
#include "x3.h"
#include <stdio.h>
int acomm;
void PP::print()
{
printf("In PP::print()\n");
}
void QQ::print()
{
printf("In QQ::print()\n");
}

View file

@ -1,7 +0,0 @@
#include "x3.h"
void foo()
{
(new Info<PP>)->p(new PP);
(new Info<QQ>)->p(new QQ);
}

View file

@ -1,22 +0,0 @@
template <class T>
class Info {
public:
void p(T *x);
};
template <class T>
void Info<T>::p(T *x)
{
x->print();
}
class PP {
public:
void print();
};
class QQ {
public:
void print();
};

View file

@ -1,86 +0,0 @@
# Test reading debug information from in object files.
if { [skip_hp_tests] } { continue }
if { ![istarget "hppa*-*-hpux*"] } {
verbose "HPUX test ignored for non-hppa targets."
return 0
}
set testfile "test"
set srcsubdir ${srcdir}/${subdir}/objdbg02
set objdbgdir ${objdir}/${subdir}/objdbg02
set binfile ${objdbgdir}/${testfile}
set toolssubdir ${srcdir}/${subdir}/tools
# Create and source the file that provides information about the compiler
# used to compile the test case.
if [get_compiler_info] {
return -1
}
if {!$hp_aCC_compiler && !$hp_cc_compiler} {
return 0
}
if { [gdb_compile "${toolssubdir}/test-objdbg.cc" "${objdbgdir}/test-objdbg.o" object "debug c++ {additional_flags=-I${toolssubdir} +objdebug}"] != "" } {
untested objdbg02.exp
return -1
}
if { [gdb_compile "${srcsubdir}/x1.cc" "${objdbgdir}/x1.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x1.cc"
return -1
}
if { [gdb_compile "${srcsubdir}/x2.cc" "${objdbgdir}/x2.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x2.cc"
return -1
}
if { [gdb_compile "${srcsubdir}/x3.cc" "${objdbgdir}/x3.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x3.cc"
return -1
}
remote_exec build "rm -f ${objdbgdir}/test.a"
set status [remote_exec build "ar cr ${objdbgdir}/test.a ${objdbgdir}/x2.o ${objdbgdir}/x3.o"]
if { [lindex $status 0] != 0 } {
perror "Couldn't compile test.a"
return -1
}
remote_exec build "rm -f ${objdbgdir}/x2.o ${objdbgdir}/x3.o"
if { [gdb_compile "${objdbgdir}/x1.o ${objdbgdir}/test.a" "$binfile" executable "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile ${binfile}"
return -1
}
# Test loading debug information from an archive file
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}
gdb_test "b main" "Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+: file ..*/x1.cc, line 12."
gdb_test "run" "Starting program:.*Breakpoint \[0-9\]+, main .*/x1.cc:12.*"
gdb_test "s 1" ".*13.*"
gdb_test "s 1" "foo1 .*/x2.cc:15.*"
gdb_test "s 1" ".*16.*"
gdb_test "s 1" "foo2 .*/x2.cc:10.*"
gdb_test "s 1" ".*11.*"
gdb_test "s 1" "foo1 .*/x2.cc:17.*"
gdb_test "s 1" "main .*/x1.cc:14.*"
gdb_test "s 1" "foo3 .*/x3.cc:5.*"
gdb_test "s 1" ".*6.*"
gdb_test "s 1" "main .*/x1.cc:15.*"
gdb_test "s 1" ".*16.*"
if [istarget "hppa64-*-*"] {
gdb_test "s 1" "0x\[0-9a-f\]+ in .*START.*"
gdb_continue_to_end
} else {
gdb_test "s 1" "0x\[0-9a-f\]+ in _start .*"
gdb_continue_to_end "" "s 1"
}

View file

@ -1,16 +0,0 @@
#include <stdio.h>
extern void foo1();
extern void foo3();
struct foo_type;
int main()
{
struct foo_type *x;
printf("In main.\n");
foo1();
foo3();
return 0;
}

View file

@ -1,17 +0,0 @@
#include <stdio.h>
struct foo_type {
int t1;
int t2;
};
static void foo2()
{
printf("In foo2.\n");
}
void foo1()
{
printf("In foo1.\n");
foo2();
}

View file

@ -1,6 +0,0 @@
#include <stdio.h>
void foo3()
{
printf("In foo3.\n");
}

View file

@ -1,165 +0,0 @@
# Test reading debug information from in object files.
if { [skip_hp_tests] } { continue }
if { ![istarget "hppa*-*-hpux*"] } {
verbose "HPUX test ignored for non-hppa targets."
return 0
}
set testfile "test"
set srcsubdir ${srcdir}/${subdir}/objdbg03
set objdbgdir ${objdir}/${subdir}/objdbg03
set binfile ${objdbgdir}/${testfile}
set toolssubdir ${srcdir}/${subdir}/tools
if [istarget "hppa64-*-*"] {
set symaddrfile ${toolssubdir}/symaddr.pa64
} else {
set symaddrfile ${toolssubdir}/symaddr
}
# Create and source the file that provides information about the compiler
# used to compile the test case.
if [get_compiler_info] {
return -1
}
if {!$hp_aCC_compiler && !$hp_cc_compiler} {
return 0
}
if { [gdb_compile "${toolssubdir}/test-objdbg.cc" "${objdbgdir}/test-objdbg.o" object "debug c++ {additional_flags=-I${toolssubdir} +objdebug}"] != "" } {
untested objdbg03.exp
return -1
}
if { [gdb_compile "${srcsubdir}/x1.cc" "${objdbgdir}/x1.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x1.cc"
return -1
}
if { [gdb_compile "${srcsubdir}/x2.cc" "${objdbgdir}/x2.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x2.cc"
return -1
}
if { [gdb_compile "${srcsubdir}/x3.cc" "${objdbgdir}/x3.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x3.cc"
return -1
}
if { [gdb_compile "${objdbgdir}/x1.o ${objdbgdir}/x2.o ${objdbgdir}/x3.o" "${binfile}" executable "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile ${binfile}"
return -1
}
#
# Test some normal commons
#
# Print the types
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}
gdb_test "ptype common1" "type = int"
gdb_test "ptype common2" "type = int"
gdb_test "ptype common3" "type = int"
gdb_test "ptype data1" "type = int"
gdb_test "ptype data2" "type = int"
gdb_test "ptype data3" "type = int"
gdb_test "ptype common11" "type = int"
gdb_test "ptype common10" "type = int"
gdb_test "ptype data10" "type = int"
gdb_test "ptype data11" "type = int"
# Print the values
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}
gdb_test "b main" "Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+: file ..*/x1.cc, line 11."
gdb_test "run" "Starting program:.*Breakpoint \[0-9\]+, main .*/x1.cc:11.*"
gdb_test "p data1" "..* = 1"
gdb_test "p data2" "..* = 2"
gdb_test "p data3" "..* = 3"
gdb_test "p data10" "..* = 10"
gdb_test "p data11" "..* = 11"
gdb_test "n" ".*12.*"
gdb_test "p common11" "..* = 11"
gdb_test "s 1" "foo .*/x3.cc:15.*"
gdb_test "s 4" ".*20.*"
gdb_test "p data4" "..* = 4"
gdb_test "p common4" "..* = 4"
gdb_test "n" ".*21.*"
gdb_test "n" "main .*/x1.cc:14.*"
gdb_test "p common1" "..* = 1"
gdb_test "p common2" "..* = 2"
gdb_test "p common3" "..* = 3"
# Verify that addresses match those in the executable
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}
set exec_output_data1 [lindex [remote_exec build "${symaddrfile} ${binfile} data1"] 1]
regsub -all "\[\r\n\]" ${exec_output_data1} "" exec_output_data1
set exec_output_data2 [lindex [remote_exec build "${symaddrfile} ${binfile} data2"] 1]
regsub -all "\[\r\n\]" ${exec_output_data2} "" exec_output_data2
set exec_output_data3 [lindex [remote_exec build "${symaddrfile} ${binfile} data3"] 1]
regsub -all "\[\r\n\]" ${exec_output_data3} "" exec_output_data3
set exec_output_data10 [lindex [remote_exec build "${symaddrfile} ${binfile} data10"] 1]
regsub -all "\[\r\n\]" ${exec_output_data10} "" exec_output_data10
set exec_output_data11 [lindex [remote_exec build "${symaddrfile} ${binfile} data11"] 1]
regsub -all "\[\r\n\]" ${exec_output_data11} "" exec_output_data11
set exec_output_common1 [lindex [remote_exec build "${symaddrfile} ${binfile} common1"] 1]
regsub -all "\[\r\n\]" ${exec_output_common1} "" exec_output_common1
set exec_output_common2 [lindex [remote_exec build "${symaddrfile} ${binfile} common2"] 1]
regsub -all "\[\r\n\]" ${exec_output_common2} "" exec_output_common2
set exec_output_common3 [lindex [remote_exec build "${symaddrfile} ${binfile} common3"] 1]
regsub -all "\[\r\n\]" ${exec_output_common3} "" exec_output_common3
set exec_output_common10 [lindex [remote_exec build "${symaddrfile} ${binfile} common10"] 1]
regsub -all "\[\r\n\]" ${exec_output_common10} "" exec_output_common10
set exec_output_common11 [lindex [remote_exec build "${symaddrfile} ${binfile} common11"] 1]
regsub -all "\[\r\n\]" ${exec_output_common11} "" exec_output_common11
if [istarget "hppa64-*-*"] {
gdb_test "p &data1" "..* = \\(int \[*\]\\) ${exec_output_data1}"
gdb_test "p &data2" "..* = \\(int \[*\]\\) ${exec_output_data2}"
gdb_test "p &data3" "..* = \\(int \[*\]\\) ${exec_output_data3}"
gdb_test "p &data10" "..* = \\(int \[*\]\\) ${exec_output_data10}"
gdb_test "p &data11" "..* = \\(int \[*\]\\) ${exec_output_data11}"
gdb_test "p &common1" "..* = \\(int \[*\]\\) ${exec_output_common1}"
gdb_test "p &common2" "..* = \\(int \[*\]\\) ${exec_output_common2}"
gdb_test "p &common3" "..* = \\(int \[*\]\\) ${exec_output_common3}"
gdb_test "p &common10" "..* = \\(int \[*\]\\) ${exec_output_common10}"
gdb_test "p &common11" "..* = \\(int \[*\]\\) ${exec_output_common11}"
} else {
gdb_test "p &data1" "..* = \\(int \[*\]\\) 0x${exec_output_data1}"
gdb_test "p &data2" "..* = \\(int \[*\]\\) 0x${exec_output_data2}"
gdb_test "p &data3" "..* = \\(int \[*\]\\) 0x${exec_output_data3}"
gdb_test "p &data10" "..* = \\(int \[*\]\\) 0x${exec_output_data10}"
gdb_test "p &data11" "..* = \\(int \[*\]\\) 0x${exec_output_data11}"
gdb_test "p &common1" "..* = \\(int \[*\]\\) 0x${exec_output_common1}"
gdb_test "p &common2" "..* = \\(int \[*\]\\) 0x${exec_output_common2}"
gdb_test "p &common3" "..* = \\(int \[*\]\\) 0x${exec_output_common3}"
gdb_test "p &common10" "..* = \\(int \[*\]\\) 0x${exec_output_common10}"
gdb_test "p &common11" "..* = \\(int \[*\]\\) 0x${exec_output_common11}"
}

View file

@ -1,15 +0,0 @@
#include <stdio.h>
extern int foo();
extern int common3;
extern int data3;
extern int common11;
extern int data11;
int main()
{
common11 = 11;
printf("In main: %d %d %d\n", data3, common3, foo(), common11, data11);
return 0;
}

View file

@ -1,7 +0,0 @@
#include <stdio.h>
int common10;
int common11;
int data10 = 10;
int data11 = 11;

View file

@ -1,21 +0,0 @@
#include <stdio.h>
int common1;
int common2;
int common3;
static int common4;
int data1 = 1;
int data2 = 2;
int data3 = 3;
static int data4 = 4;
int foo()
{
common1 = 1;
common2 = 2;
common3 = 3;
common4 = 4;
return data1 + data2 + data3 + data4 + common1 + common2 + common3 + common4;
}

View file

@ -1,66 +0,0 @@
# Test reading debug information from in object files.
if { [skip_hp_tests] } { continue }
if { ![istarget "hppa*-*-hpux*"] } {
verbose "HPUX test ignored for non-hppa targets."
return 0
}
set testfile "test"
set srcsubdir ${srcdir}/${subdir}/objdbg04
set objdbgdir ${objdir}/${subdir}/objdbg04
set binfile ${objdbgdir}/${testfile}
set toolssubdir ${srcdir}/${subdir}/tools
set symaddrfile ${toolssubdir}/symaddr
# Create and source the file that provides information about the compiler
# used to compile the test case.
if [get_compiler_info] {
return -1
}
if {!$hp_aCC_compiler && !$hp_cc_compiler} {
return 0
}
if { [gdb_compile "${toolssubdir}/test-objdbg.cc" "${objdbgdir}/test-objdbg.o" object "debug c++ {additional_flags=-I${toolssubdir} +objdebug}"] != "" } {
untested objdbg04.exp
return -1
}
if { [gdb_compile "${srcsubdir}/x1.cc" "${objdbgdir}/x1.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x1.cc"
return -1
}
if { [gdb_compile "${srcsubdir}/x2.cc" "${objdbgdir}/x2.o" object "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x2.cc"
return -1
}
if { [gdb_compile "${objdbgdir}/x1.o ${objdbgdir}/x2.o" "${binfile}0" executable "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x1.cc"
return -1
}
if { [gdb_compile "${objdbgdir}/x2.o ${objdbgdir}/x1.o" "${binfile}1" executable "debug c++ {additional_flags=-I${srcsubdir} +objdebug}"] != "" } {
perror "Couldn't compile x1.cc"
return -1
}
# Test two executables. The first has x1.cc linked first, the second
# has x2.cc linked first. The difference is which COMDAT section was
# picked.
for {set filenum 0} {$filenum < 2} {incr filenum 1} {
gdb_exit
gdb_start
gdb_reinitialize_dir ${srcsubdir}
gdb_load ${binfile}${filenum}
gdb_test "ptype Adder" "type = template <class T> (class |)Adder {..*T val.*;.*}(.*template instantiations:.*Adder<int>|)"
gdb_test "ptype Adder<int>" "type = (class |)Adder<int> {.*private:.*int val;.*public:.*void set( |)\\(int\\);.*int get( |)\\(void\\);.*int add( |)\\(int\\);.*}"
gdb_test "ptype Adder" "type = template <class T> (class |)Adder {..*T val.*;.*}(.*template instantiations:.*Adder<int>|)"
}

View file

@ -1,30 +0,0 @@
template <class T>
class Adder {
public:
void set(T);
T get();
T add(T);
private:
T val;
};
template <class T>
void Adder<T>::set(T new_val)
{
val = new_val;
}
template <class T>
T Adder<T>::get()
{
return val;
}
template <class T>
T Adder<T>::add(T new_val)
{
val += new_val;
return val;
}

View file

@ -1,15 +0,0 @@
#include <stdio.h>
#include "x.h"
template class Adder<int>;
int main()
{
Adder<int> add;
add.set(3);
add.add(3);
printf("In main: %d\n", add.get());
return 0;
}

View file

@ -1,3 +0,0 @@
#include "x.h"
template class Adder<int>;

View file

@ -1,8 +0,0 @@
#!/bin/sh
# Get the address of a symbol in Hex.
# $1 = object/executable file name
# $2 = symbol name
${srcdir}/gdb.hp/tools/odump -sym "$1" | grep "$2"$ | awk '{print $1}'
exit 0

View file

@ -1,8 +0,0 @@
#!/bin/sh
# Get the address of a symbol in Hex.
# $1 = object/executable file name
# $2 = symbol name
/usr/ccs/bin/elfdump -t +s .symtab "$1" | grep "$2"$ | awk '{print $6}'
exit 0

View file

@ -1,4 +0,0 @@
int main()
{
return 0;
}

View file

@ -1,7 +0,0 @@
#!/bin/ksh
# First source /app/appserver
. /app/appserver
# Exec the executable.
exec $APPROOT/usr/contrib/bin/$(basename $0) "$@"