These files were removed in the 1999-06-28 snapshot.
This commit is contained in:
parent
085dd6e638
commit
9cd2c67bac
@ -1,59 +0,0 @@
|
||||
# compilers and assemblers
|
||||
CC = i386-aout-gcc
|
||||
CFLAGS = -g -D${target_os}
|
||||
C++ = ${CC}
|
||||
C++FLAGS = ${CFLAGS}
|
||||
CXX = ${CC}
|
||||
CXXFLAGS = ${CFLAGS}
|
||||
AS = i386-aout-as
|
||||
ASFLAGS =
|
||||
FC =
|
||||
FCFLAGS =
|
||||
LD = ld
|
||||
LDFLAGS =
|
||||
LIBS =
|
||||
|
||||
# binutils
|
||||
|
||||
RANLIB = i386-aout-ranlib
|
||||
RANLIBFLAGS =
|
||||
|
||||
NM = i386-aout-nm
|
||||
NMFLAGS =
|
||||
|
||||
SIZE = i386-aout-size
|
||||
SIZEFLAGS =
|
||||
|
||||
STRIP = i386-aout-strip
|
||||
STRIPFLAGS =
|
||||
|
||||
OBJDUMP = i386-aout-objdump
|
||||
OBJDUMPFLAGS =
|
||||
|
||||
DEMANGLE = i386-aout-demangle
|
||||
DEMANGLEFLAGS =
|
||||
|
||||
COPY = i386-aout-copy
|
||||
COPYFLAGS =
|
||||
|
||||
# other utils
|
||||
LEX = flex
|
||||
LEXFLAGS =
|
||||
|
||||
YACC = byacc
|
||||
YACCFLAGS =
|
||||
|
||||
AR = i386-aout-ar
|
||||
ARFLAGS =
|
||||
|
||||
CPP = ${CC} -E
|
||||
CPPFLAGS =
|
||||
|
||||
GDB = i386-aout-gdb
|
||||
GDBFLAGS = -nx
|
||||
|
||||
DIFF = diff
|
||||
DIFFFLAGS =
|
||||
|
||||
RUNTEST=i386-aout-runtest
|
||||
RUNTESTFLAGS=
|
@ -1 +0,0 @@
|
||||
LDFLAGS_FOR_TARGET = -nostartfiles
|
@ -1,4 +0,0 @@
|
||||
CFLAGS_FOR_TARGET =
|
||||
STEP_EXECUTABLE = step
|
||||
THREADFLAGS = -mposix -mthreads
|
||||
#LDFLAGS= -L/usr/cygnus/progressive-95q1/H-sparc-sun-sunos4.1.3/i386-lynx/lib/thread
|
@ -1 +0,0 @@
|
||||
CFLAGS_FOR_TARGET = -Tidp.ld -nostartfiles
|
@ -1,2 +0,0 @@
|
||||
CFLAGS = -I/s1/cygnus/dejagnu/mips-idt-ecoff/include -g
|
||||
LDFLAGS = -nostartfiles /s1/cygnus/dejagnu/mips-idt-ecoff/crt0.o -L/s1/cygnus/dejagnu/mips-idt-ecoff -g
|
@ -1 +0,0 @@
|
||||
LDFLAGS = -r
|
@ -1,8 +0,0 @@
|
||||
LIBS = -lc -lg -lgcc
|
||||
CFLAGS = -g -Dusestubs
|
||||
LDFLAGS = ` \
|
||||
if [ -f $${rootme}/../../newlib/Makefile ]; then \
|
||||
echo -L$${rootsrc}/../../libgloss/ex93x -L$${rootme}/../../libgloss/ex93x -Tex93x.ld -nostartfiles -nostdlib -N; \
|
||||
else \
|
||||
echo -Tex93x.ld -nostartfiles -nostdlib -N; \
|
||||
fi`
|
@ -1 +0,0 @@
|
||||
CFLAGS_FOR_TARGET = -g
|
@ -1,2 +0,0 @@
|
||||
CFLAGS = -g -Dvxworks
|
||||
LDFLAGS = -Xlinker -Ur
|
@ -1,40 +0,0 @@
|
||||
/* Test various kinds of stepping.
|
||||
*/
|
||||
int glob = 0;
|
||||
|
||||
int callee() {
|
||||
glob++;
|
||||
return (0);
|
||||
}
|
||||
|
||||
int main () {
|
||||
int w,x,y,z;
|
||||
int a[10], b[10];
|
||||
|
||||
/* Test "next" and "step" */
|
||||
w = 0;
|
||||
x = 1;
|
||||
y = 2;
|
||||
z = 3;
|
||||
w = w + 2;
|
||||
x = x + 3;
|
||||
y = y + 4;
|
||||
z = z + 5;
|
||||
|
||||
/* Test that "next" goes over a call */
|
||||
callee(); /* OVER */
|
||||
|
||||
/* Test that "step" doesn't */
|
||||
callee(); /* INTO */
|
||||
|
||||
/* Test "stepi" */
|
||||
a[5] = a[3] - a[4];
|
||||
callee(); /* STEPI */
|
||||
|
||||
/* Test "nexti" */
|
||||
callee(); /* NEXTI */
|
||||
|
||||
y = w + z;
|
||||
|
||||
return (0);
|
||||
}
|
@ -1,480 +0,0 @@
|
||||
// Test various -*- C++ -*- things.
|
||||
|
||||
typedef struct fleep fleep;
|
||||
struct fleep { int a; } s;
|
||||
|
||||
// ====================== simple class structures =======================
|
||||
|
||||
struct default_public_struct {
|
||||
// defaults to public:
|
||||
int a;
|
||||
int b;
|
||||
};
|
||||
|
||||
struct explicit_public_struct {
|
||||
public:
|
||||
int a;
|
||||
int b;
|
||||
};
|
||||
|
||||
struct protected_struct {
|
||||
protected:
|
||||
int a;
|
||||
int b;
|
||||
};
|
||||
|
||||
struct private_struct {
|
||||
private:
|
||||
int a;
|
||||
int b;
|
||||
};
|
||||
|
||||
struct mixed_protection_struct {
|
||||
public:
|
||||
int a;
|
||||
int b;
|
||||
private:
|
||||
int c;
|
||||
int d;
|
||||
protected:
|
||||
int e;
|
||||
int f;
|
||||
public:
|
||||
int g;
|
||||
private:
|
||||
int h;
|
||||
protected:
|
||||
int i;
|
||||
};
|
||||
|
||||
class public_class {
|
||||
public:
|
||||
int a;
|
||||
int b;
|
||||
};
|
||||
|
||||
class protected_class {
|
||||
protected:
|
||||
int a;
|
||||
int b;
|
||||
};
|
||||
|
||||
class default_private_class {
|
||||
// defaults to private:
|
||||
int a;
|
||||
int b;
|
||||
};
|
||||
|
||||
class explicit_private_class {
|
||||
private:
|
||||
int a;
|
||||
int b;
|
||||
};
|
||||
|
||||
class mixed_protection_class {
|
||||
public:
|
||||
int a;
|
||||
int b;
|
||||
private:
|
||||
int c;
|
||||
int d;
|
||||
protected:
|
||||
int e;
|
||||
int f;
|
||||
public:
|
||||
int g;
|
||||
private:
|
||||
int h;
|
||||
protected:
|
||||
int i;
|
||||
};
|
||||
|
||||
// ========================= simple inheritance ==========================
|
||||
|
||||
class A {
|
||||
public:
|
||||
int a;
|
||||
int x;
|
||||
};
|
||||
|
||||
A g_A;
|
||||
|
||||
class B : public A {
|
||||
public:
|
||||
int b;
|
||||
int x;
|
||||
};
|
||||
|
||||
B g_B;
|
||||
|
||||
class C : public A {
|
||||
public:
|
||||
int c;
|
||||
int x;
|
||||
};
|
||||
|
||||
C g_C;
|
||||
|
||||
class D : public B, public C {
|
||||
public:
|
||||
int d;
|
||||
int x;
|
||||
};
|
||||
|
||||
D g_D;
|
||||
|
||||
class E : public D {
|
||||
public:
|
||||
int e;
|
||||
int x;
|
||||
};
|
||||
|
||||
E g_E;
|
||||
|
||||
class class_with_anon_union
|
||||
{
|
||||
public:
|
||||
int one;
|
||||
union
|
||||
{
|
||||
int a;
|
||||
long b;
|
||||
};
|
||||
};
|
||||
|
||||
class_with_anon_union g_anon_union;
|
||||
|
||||
void inheritance2 (void)
|
||||
{
|
||||
}
|
||||
|
||||
void inheritance1 (void)
|
||||
{
|
||||
int ival;
|
||||
int *intp;
|
||||
|
||||
// {A::a, A::x}
|
||||
|
||||
g_A.A::a = 1;
|
||||
g_A.A::x = 2;
|
||||
|
||||
// {{A::a,A::x},B::b,B::x}
|
||||
|
||||
g_B.A::a = 3;
|
||||
g_B.A::x = 4;
|
||||
g_B.B::b = 5;
|
||||
g_B.B::x = 6;
|
||||
|
||||
// {{A::a,A::x},C::c,C::x}
|
||||
|
||||
g_C.A::a = 7;
|
||||
g_C.A::x = 8;
|
||||
g_C.C::c = 9;
|
||||
g_C.C::x = 10;
|
||||
|
||||
// {{{A::a,A::x},B::b,B::x},{{A::a,A::x},C::c,C::x},D::d,D::x}
|
||||
|
||||
// The following initialization code is non-portable, but allows us
|
||||
// to initialize all members of g_D until we can fill in the missing
|
||||
// initialization code with legal C++ code.
|
||||
|
||||
for (intp = (int *) &g_D, ival = 11;
|
||||
intp < ((int *) &g_D + sizeof (g_D) / sizeof (int));
|
||||
intp++, ival++)
|
||||
{
|
||||
*intp = ival;
|
||||
}
|
||||
|
||||
// Overlay the nonportable initialization with legal initialization.
|
||||
|
||||
// ????? = 11; (g_D.A::a = 11; is ambiguous)
|
||||
// ????? = 12; (g_D.A::x = 12; is ambiguous)
|
||||
g_D.B::b = 13;
|
||||
g_D.B::x = 14;
|
||||
// ????? = 15;
|
||||
// ????? = 16;
|
||||
g_D.C::c = 17;
|
||||
g_D.C::x = 18;
|
||||
g_D.D::d = 19;
|
||||
g_D.D::x = 20;
|
||||
|
||||
|
||||
// {{{{A::a,A::x},B::b,B::x},{{A::a,A::x},C::c,C::x},D::d,D::x}},E::e,E::x}
|
||||
|
||||
// The following initialization code is non-portable, but allows us
|
||||
// to initialize all members of g_D until we can fill in the missing
|
||||
// initialization code with legal C++ code.
|
||||
|
||||
for (intp = (int *) &g_E, ival = 21;
|
||||
intp < ((int *) &g_E + sizeof (g_E) / sizeof (int));
|
||||
intp++, ival++)
|
||||
{
|
||||
*intp = ival;
|
||||
}
|
||||
|
||||
// Overlay the nonportable initialization with legal initialization.
|
||||
|
||||
// ????? = 21; (g_E.A::a = 21; is ambiguous)
|
||||
// ????? = 22; (g_E.A::x = 22; is ambiguous)
|
||||
g_E.B::b = 23;
|
||||
g_E.B::x = 24;
|
||||
// ????? = 25;
|
||||
// ????? = 26;
|
||||
g_E.C::c = 27;
|
||||
g_E.C::x = 28;
|
||||
g_E.D::d = 29;
|
||||
g_E.D::x = 30;
|
||||
g_E.E::e = 31;
|
||||
g_E.E::x = 32;
|
||||
|
||||
g_anon_union.one = 1;
|
||||
g_anon_union.a = 2;
|
||||
|
||||
inheritance2 ();
|
||||
}
|
||||
|
||||
// ======================== virtual base classes=========================
|
||||
|
||||
class vA {
|
||||
public:
|
||||
int va;
|
||||
int vx;
|
||||
};
|
||||
|
||||
vA g_vA;
|
||||
|
||||
class vB : public virtual vA {
|
||||
public:
|
||||
int vb;
|
||||
int vx;
|
||||
};
|
||||
|
||||
vB g_vB;
|
||||
|
||||
class vC : public virtual vA {
|
||||
public:
|
||||
int vc;
|
||||
int vx;
|
||||
};
|
||||
|
||||
vC g_vC;
|
||||
|
||||
class vD : public virtual vB, public virtual vC {
|
||||
public:
|
||||
int vd;
|
||||
int vx;
|
||||
};
|
||||
|
||||
vD g_vD;
|
||||
|
||||
class vE : public virtual vD {
|
||||
public:
|
||||
int ve;
|
||||
int vx;
|
||||
};
|
||||
|
||||
vE g_vE;
|
||||
|
||||
void inheritance4 (void)
|
||||
{
|
||||
}
|
||||
|
||||
void inheritance3 (void)
|
||||
{
|
||||
int ival;
|
||||
int *intp;
|
||||
|
||||
// {vA::va, vA::vx}
|
||||
|
||||
g_vA.vA::va = 1;
|
||||
g_vA.vA::vx = 2;
|
||||
|
||||
// {{vA::va, vA::vx}, vB::vb, vB::vx}
|
||||
|
||||
g_vB.vA::va = 3;
|
||||
g_vB.vA::vx = 4;
|
||||
g_vB.vB::vb = 5;
|
||||
g_vB.vB::vx = 6;
|
||||
|
||||
// {{vA::va, vA::vx}, vC::vc, vC::vx}
|
||||
|
||||
g_vC.vA::va = 7;
|
||||
g_vC.vA::vx = 8;
|
||||
g_vC.vC::vc = 9;
|
||||
g_vC.vC::vx = 10;
|
||||
|
||||
// {{{{vA::va, vA::vx}, vB::vb, vB::vx}, vC::vc, vC::vx}, vD::vd,vD::vx}
|
||||
|
||||
g_vD.vA::va = 11;
|
||||
g_vD.vA::vx = 12;
|
||||
g_vD.vB::vb = 13;
|
||||
g_vD.vB::vx = 14;
|
||||
g_vD.vC::vc = 15;
|
||||
g_vD.vC::vx = 16;
|
||||
g_vD.vD::vd = 17;
|
||||
g_vD.vD::vx = 18;
|
||||
|
||||
|
||||
// {{{{{vA::va,vA::vx},vB::vb,vB::vx},vC::vc,vC::vx},vD::vd,vD::vx},vE::ve,vE::vx}
|
||||
|
||||
g_vD.vA::va = 19;
|
||||
g_vD.vA::vx = 20;
|
||||
g_vD.vB::vb = 21;
|
||||
g_vD.vB::vx = 22;
|
||||
g_vD.vC::vc = 23;
|
||||
g_vD.vC::vx = 24;
|
||||
g_vD.vD::vd = 25;
|
||||
g_vD.vD::vx = 26;
|
||||
g_vE.vE::ve = 27;
|
||||
g_vE.vE::vx = 28;
|
||||
|
||||
inheritance4 ();
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
class Base1 {
|
||||
public:
|
||||
int x;
|
||||
Base1(int i) { x = i; }
|
||||
};
|
||||
|
||||
class Foo
|
||||
{
|
||||
public:
|
||||
int x;
|
||||
int y;
|
||||
static int st;
|
||||
Foo (int i, int j) { x = i; y = j; }
|
||||
int operator! ();
|
||||
operator int ();
|
||||
int times (int y);
|
||||
};
|
||||
|
||||
class Bar : public Base1, public Foo {
|
||||
public:
|
||||
int z;
|
||||
Bar (int i, int j, int k) : Base1 (10*k), Foo (i, j) { z = k; }
|
||||
};
|
||||
|
||||
int Foo::operator! () { return !x; }
|
||||
|
||||
int Foo::times (int y) { return x * y; }
|
||||
|
||||
int Foo::st = 100;
|
||||
|
||||
Foo::operator int() { return x; }
|
||||
|
||||
Foo foo(10, 11);
|
||||
Bar bar(20, 21, 22);
|
||||
|
||||
class Contains_static_instance
|
||||
{
|
||||
public:
|
||||
int x;
|
||||
int y;
|
||||
Contains_static_instance (int i, int j) { x = i; y = j; }
|
||||
static Contains_static_instance null;
|
||||
};
|
||||
|
||||
Contains_static_instance Contains_static_instance::null(0,0);
|
||||
Contains_static_instance csi(10,20);
|
||||
|
||||
class Contains_nested_static_instance
|
||||
{
|
||||
public:
|
||||
class Nested
|
||||
{
|
||||
public:
|
||||
Nested(int i) : z(i) {}
|
||||
int z;
|
||||
static Contains_nested_static_instance xx;
|
||||
};
|
||||
|
||||
Contains_nested_static_instance(int i, int j) : x(i), y(j) {}
|
||||
|
||||
int x;
|
||||
int y;
|
||||
|
||||
static Contains_nested_static_instance null;
|
||||
static Nested yy;
|
||||
};
|
||||
|
||||
Contains_nested_static_instance Contains_nested_static_instance::null(0, 0);
|
||||
Contains_nested_static_instance::Nested Contains_nested_static_instance::yy(5);
|
||||
Contains_nested_static_instance
|
||||
Contains_nested_static_instance::Nested::xx(1,2);
|
||||
Contains_nested_static_instance cnsi(30,40);
|
||||
|
||||
typedef struct {
|
||||
int one;
|
||||
int two;
|
||||
} tagless_struct;
|
||||
tagless_struct v_tagless;
|
||||
|
||||
/* Try to get the compiler to allocate a class in a register. */
|
||||
class small {
|
||||
public:
|
||||
int x;
|
||||
int method ();
|
||||
};
|
||||
int small::method ()
|
||||
{
|
||||
return x + 5;
|
||||
}
|
||||
void marker_reg1 () {}
|
||||
|
||||
int
|
||||
register_class ()
|
||||
{
|
||||
/* We don't call any methods for v, so gcc version cygnus-2.3.3-930220
|
||||
might put this variable in a register. This is a lose, though, because
|
||||
it means that GDB can't call any methods for that variable. */
|
||||
register small v;
|
||||
|
||||
int i;
|
||||
|
||||
/* Perform a computation sufficiently complicated that optimizing compilers
|
||||
won't optimized out the variable. If some compiler constant-folds this
|
||||
whole loop, maybe using a parameter to this function here would help. */
|
||||
v.x = 0;
|
||||
for (i = 0; i < 13; ++i)
|
||||
v.x += i;
|
||||
--v.x; /* v.x is now 77 */
|
||||
marker_reg1 ();
|
||||
return v.x + 5;
|
||||
}
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
#ifdef usestubs
|
||||
set_debug_traps();
|
||||
breakpoint();
|
||||
#endif
|
||||
inheritance1 ();
|
||||
inheritance3 ();
|
||||
register_class ();
|
||||
|
||||
/* FIXME: pmi gets optimized out. Need to do some more computation with
|
||||
it or something. (No one notices, because the test is xfail'd anyway,
|
||||
but that probably won't always be true...). */
|
||||
int Foo::* pmi = &Foo::y;
|
||||
|
||||
/* Make sure the AIX linker doesn't remove the variable. */
|
||||
v_tagless.one = 5;
|
||||
|
||||
return foo.*pmi;
|
||||
}
|
||||
|
||||
/* Create an instance for some classes, otherwise they get optimized away. */
|
||||
default_public_struct default_public_s;
|
||||
explicit_public_struct explicit_public_s;
|
||||
protected_struct protected_s;
|
||||
private_struct private_s;
|
||||
mixed_protection_struct mixed_protection_s;
|
||||
public_class public_c;
|
||||
protected_class protected_c;
|
||||
default_private_class default_private_c;
|
||||
explicit_private_class explicit_private_c;
|
||||
mixed_protection_class mixed_protection_c;
|
@ -1,181 +0,0 @@
|
||||
# Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
# Please email any bugs, comments, and/or additions to this file to:
|
||||
# bug-gdb@prep.ai.mit.edu
|
||||
|
||||
# smoke.exp -- Expect script to test gdb before checkins
|
||||
|
||||
# use this to debug:
|
||||
#
|
||||
#log_user 1
|
||||
|
||||
if $tracelevel then {
|
||||
strace $tracelevel
|
||||
}
|
||||
|
||||
set testfile smoke
|
||||
set testfile1 smoke1
|
||||
set c_srcfile ${srcdir}/${subdir}/${testfile}.c
|
||||
set cpp_srcfile ${srcdir}/${subdir}/${testfile}.cc
|
||||
set binfile ${objdir}/${subdir}/${testfile}
|
||||
set binfile1 ${objdir}/${subdir}/${testfile1}
|
||||
|
||||
#remote_exec build "rm -f ${binfile}"
|
||||
remote_exec build "rm -f core"
|
||||
|
||||
# "C" section, using source copied from "step-test.c" from "gdb.base"
|
||||
#
|
||||
if { [gdb_compile "${c_srcfile}" "${binfile}" executable {debug}] != "" } {
|
||||
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
|
||||
}
|
||||
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_load ${binfile}
|
||||
|
||||
# Some basic tests
|
||||
#
|
||||
gdb_test "tb main" ".*Breakpoint 1 at.*line 15.*" "temp breakpoint"
|
||||
gdb_test "b callee" ".*Breakpoint 2 at.*line 6.*" "breakpoint"
|
||||
gdb_test "l 10" ".*10.*int main.*11.*int w,x,y,z;.*12.*int a.*" "list"
|
||||
gdb_test "c" ".*The program is not being run.*" "catch error"
|
||||
gdb_test "r" ".*Starting program.*main.*15.*" "hit bp"
|
||||
gdb_test "hel r" ".*Start debugged program.*without arguments.*" "help"
|
||||
gdb_test "n" ".*x = 1;.*" "next"
|
||||
gdb_test "s" ".*y = 2;.*" "step"
|
||||
gdb_test "p/t x" ".* = 1.*" "print x in binary"
|
||||
gdb_test "p 1+2*3+4" ".* = 11.*" "calculate"
|
||||
gdb_test "p/t 1+2*3+4" ".* = 1011.*" "binary"
|
||||
|
||||
# Note: accept either "Watchpoint" or "Hardware watchpoint";
|
||||
# 10.20 can't do the hardware watch. The hardware kind
|
||||
# triggers one line earlier than the regular kind.
|
||||
#
|
||||
gdb_test "wat y" ".*atchpoint.*y.*" "set watch"
|
||||
gdb_test "c" ".*atchpoint.*Old.*= .*New.*= 2.*1\[78\].*" "continue, hit watch"
|
||||
|
||||
gdb_test "set glob=999" ".*.*" "set"
|
||||
gdb_test "p glob" ".*= 999.*.*" "print glob"
|
||||
gdb_test "p/x glob" ".*= 0x3e7.*" "hex"
|
||||
gdb_test "c" ".*atchpoint.*Old.*= 2.*New.*= 6.*2\[12\].*" "continue, 2nd hit watch"
|
||||
gdb_test "d 5" "No breakpoint number 5." "del non existing watch"
|
||||
gdb_test "c" ".*Breakpoint.*callee.*6.*" "hit bp"
|
||||
gdb_test "bt" ".*callee.*6.*main.*25.*" "bt"
|
||||
gdb_test "fin" ".*Run till exit.*callee.*Value returned.*0.*" "finish"
|
||||
gdb_test "c" ".*Breakpoint.*callee.*6.*" "hit bp again"
|
||||
gdb_test "cle" ".*Deleted breakpoint.*" "clear"
|
||||
gdb_test "wat glob" ".*atchpoint.*glob.*" "set 2nd watch"
|
||||
gdb_test "i wat" ".*" ""
|
||||
gdb_test "whe" ".*" ""
|
||||
|
||||
# ??rehrauer: We're now disabling watchpoints while an interactive
|
||||
# call is "in flight". When/if we can teach gdb how to unwind through
|
||||
# the call dummy frame, we can then allow watches during calls, and
|
||||
# also then restore this testpoint to the original, commented-out form.
|
||||
#
|
||||
gdb_test "call callee()" ".*\[0-9\]* = 0.*" "call, didn't hit watch"
|
||||
#gdb_test "call callee()" ".*atchpoint.*Old.*= 1000.*New.*= 1001.*\[67\].*being debug.*is done.*" "call, hit watch"
|
||||
|
||||
gdb_test "d 4" ".*" "del watch 2"
|
||||
gdb_test "d 3" ".*" "del watch 1"
|
||||
gdb_test "info break" "No breakpoints or watchpoints."
|
||||
# since we have deleted all the watchpoints this test is useless
|
||||
#gdb_test "c" ".*Continuing.*" "end call"
|
||||
gdb_test "c" ".*Program exited normally.*" "pgm exit"
|
||||
|
||||
# Check for production of a core file
|
||||
#
|
||||
#set exec_output [execute_anywhere "ls core"]
|
||||
set exec_output [remote_exec build "ls core"]
|
||||
|
||||
if [ regexp "core not found" $exec_output] {
|
||||
pass "No core dumped on quit"
|
||||
} else {
|
||||
if [ regexp "No such file or directory" $exec_output] {
|
||||
pass "ls: core: No core dumped on quit"
|
||||
} else {
|
||||
remote_exec build "rm -f core"
|
||||
fail "Core dumped on quit"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#========================================
|
||||
#
|
||||
# "C++" section, using source copied from "misc.cc" from "gdb.c++"
|
||||
#
|
||||
|
||||
#
|
||||
#remote_exec build "rm -f ${binfile}"
|
||||
#remote_exec build "CC -g -o ${binfile} ${cpp_srcfile}"
|
||||
if {[gdb_compile "${cpp_srcfile}" "${binfile1}" executable {c++ debug}] != ""} {
|
||||
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
|
||||
}
|
||||
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_load ${binfile1}
|
||||
|
||||
# Tests, some copied from misc.exp.
|
||||
#
|
||||
|
||||
# See what language gdb thinks main() is, prior to reading full symbols.
|
||||
# I think this fails for COFF targets.
|
||||
setup_xfail "a29k-*-udi"
|
||||
send_gdb "show language\n"
|
||||
gdb_expect {
|
||||
-re ".* source language is \"auto; currently c\\+\\+\".*$gdb_prompt $" {
|
||||
pass "deduced language is C++, before full symbols"
|
||||
}
|
||||
-re ".*$gdb_prompt $" { fail "source language not correct for C++ (psymtabs only)"}
|
||||
return
|
||||
|
||||
timeout { fail "can't show language (timeout)"}
|
||||
return
|
||||
}
|
||||
|
||||
gdb_test "b main" ".*Breakpoint 1 at.*" ""
|
||||
gdb_test "r" ".*Starting program.*Breakpoint 1.*" "run to main"
|
||||
gdb_test "ptype Foo" ".*type = class Foo.*static int st;.*int operator.*" "ptype"
|
||||
gdb_test "step" ".*inheritance1.*" "step"
|
||||
gdb_test "ptype g_anon_union" ".*anon_union.*union.*int a;.*" "anon"
|
||||
gdb_test "p g_E" ".*class D.*class B.*class A.*class C.*class A.*x = 0.*" "print inherited class "
|
||||
gdb_test "p g_E.x = 99" ".*warn.*x ambiguous; using E::x. Use a cast to disambig.*99.*" "set via print"
|
||||
gdb_test "c" ".*Program exited.*" "run to end"
|
||||
|
||||
gdb_exit
|
||||
|
||||
# Check for production of a core file
|
||||
#
|
||||
#set exec_output [execute_anywhere "ls core"]
|
||||
set exec_output [remote_exec build "ls core"]
|
||||
if [ regexp "core not found" $exec_output] {
|
||||
pass "No core dumped on quit"
|
||||
} else {
|
||||
if [ regexp "No such file or directory" $exec_output] {
|
||||
pass "ls: core: No core dumped on quit"
|
||||
} else {
|
||||
remote_exec build "rm -f core"
|
||||
fail "Core dumped on quit"
|
||||
}
|
||||
}
|
||||
|
||||
# execute_anywhere "rm -f ${binfile1}"
|
||||
#
|
||||
return 0
|
@ -1,12 +0,0 @@
|
||||
pot1: MODULE
|
||||
|
||||
SYNMODE m_array1 = ARRAY (2:3) ulong;
|
||||
SYNMODE m_struct = STRUCT (f1 int,
|
||||
f2 REF m_array1,
|
||||
f3 m_array1);
|
||||
SYNMODE m_array3 = ARRAY (5:6) m_struct;
|
||||
SYNMODE m_array4 = ARRAY (7:8) ARRAY (9:10) m_struct;
|
||||
|
||||
GRANT all;
|
||||
|
||||
END pot1;
|
@ -1,16 +0,0 @@
|
||||
pottendo: MODULE
|
||||
|
||||
<> USE_SEIZE_FILE "extstruct-grt.grt" <>
|
||||
SEIZE m_array3;
|
||||
SEIZE m_array4;
|
||||
|
||||
SYNMODE m_x = STRUCT (i long,
|
||||
ar m_array3);
|
||||
SYNMODE m_y = STRUCT (i long,
|
||||
ar m_array4);
|
||||
|
||||
DCL x LONG;
|
||||
|
||||
x := 10;
|
||||
|
||||
END pottendo;
|
@ -1,66 +0,0 @@
|
||||
# Copyright (C) 1992, 1994, 1997 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# Please email any bugs, comments, and/or additions to this file to:
|
||||
# bug-gdb@prep.ai.mit.edu
|
||||
|
||||
# This file was written by Per Bothner. (bothner@cygnus.com)
|
||||
|
||||
if $tracelevel then {
|
||||
strace $tracelevel
|
||||
}
|
||||
|
||||
if [skip_chill_tests] then { continue }
|
||||
|
||||
set testfile2 "extstruct-grt"
|
||||
set srcfile2 ${srcdir}/$subdir/${testfile2}.ch
|
||||
set objfile2 ${objdir}/$subdir/${testfile2}.o
|
||||
if { [compile "${srcfile2} -g -c -o ${objfile2}"] != "" } {
|
||||
perror "Couldn't compile ${srcfile2}"
|
||||
return -1
|
||||
}
|
||||
|
||||
set testfile "extstruct"
|
||||
set srcfile ${srcdir}/$subdir/${testfile}.ch
|
||||
set binfile ${objdir}/${subdir}/${testfile}.exe
|
||||
if { [compile "${srcfile} -g ${objfile2} -o ${binfile} ${CHILL_RT0} ${CHILL_LIB}"] != "" } {
|
||||
perror "Couldn't compile ${srcfile}"
|
||||
return -1
|
||||
}
|
||||
|
||||
proc do_tests {} {
|
||||
global prms_id bug_id subdir objdir srcdir binfile gdb_prompt
|
||||
|
||||
set prms_id 0
|
||||
set bug_id 0
|
||||
|
||||
# Start with a fresh gdb.
|
||||
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_load $binfile
|
||||
|
||||
gdb_test "set language chill" ""
|
||||
|
||||
gdb_test "set var \$i := m_x\[\]" ""
|
||||
gdb_test "print \$i" { = \[.i: 0, .ar: \[\(5:6\): \[.f1: 0, .f2: NULL, .f3: \[\(2:3\): 0\]\]\]\]}
|
||||
|
||||
gdb_test "set var \$j := m_y\[\]" ""
|
||||
gdb_test "print \$j" { = \[.i: 0, .ar: \[\(7:8\): \[\(9:10\): \[.f1: 0, .f2: NULL, .f3: \[\(2:3\): 0\]\]\]\]\]}
|
||||
}
|
||||
|
||||
do_tests
|
Loading…
Reference in New Issue
Block a user