From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Snyder To: gdb-patches Subject: Re: [RFA]: testsuite/gdb.base/miscexprs.* Date: Wed, 31 Oct 2001 11:39:00 -0000 Message-id: <3BE05398.C708813C@cygnus.com> References: <20011031175346.G32706@cygbert.vinschen.de> X-SW-Source: 2001-10/msg00399.html Corinna Vinschen wrote: > > Hi, > > on my target I have the same problem with the very small (2K) stack > when running miscexprs.exp as I already had with call-ar-st.exp. > > I would like to propose the following patch, which adds the ability > to extend miscexprs.exp for targets, which also suffer from the > small stack. I added a compiler switch to define the preprocessor > symbol `STORAGE', which by default is set to empty. A target > specific conditional can be used for setting it to "static", to > allow running the tests with the datastructures allocated in the > global data area instead of on the stack. Obviously, miscexprs.exp > in the below incarantion just contains such a conditional only for > the target I'm just working on... This is a good step, and I'm in favor of accepting it. I'd just like to suggest that an even better approach might be to add a dejagnu variable that could be defined in the baseboard file, rather than put a target ifdef in the testsuite script. Something like this: baseboard file: set_board_info gdb, small_stack_section, 1 set_board_info gdb, small_data_section, 1 // future extension testsuite file: if [target_info exists gdb,small_stack_section] { set storage "-DSTORAGE=static" } > > Corinna > > 2001-10-31 Corinna Vinschen > > * gdb.base/miscexprs.c (main): Add usage of preprocessor > symbol `STORAGE' to allow to choose the storage class of > the local datastructures. > * gdb.base/miscexprs.exp: Handle setting a `-DSTORAGE=...' > compiler directive. > > Index: miscexprs.c > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/gdb.base/miscexprs.c,v > retrieving revision 1.1.1.2 > diff -u -p -r1.1.1.2 miscexprs.c > --- miscexprs.c 1999/04/26 18:27:11 1.1.1.2 > +++ miscexprs.c 2001/10/31 16:43:01 > @@ -7,27 +7,27 @@ marker1 () > int > main () > { > - struct { > + STORAGE struct { > char c[100]; > } cbig; > > - struct { > + STORAGE struct { > int i[800]; > } ibig; > > - struct { > + STORAGE struct { > long l[900]; > } lbig; > > - struct { > + STORAGE struct { > float f[200]; > } fbig; > > - struct { > + STORAGE struct { > double d[300]; > } dbig; > > - struct { > + STORAGE struct { > short s[400]; > } sbig; > > Index: miscexprs.exp > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/gdb.base/miscexprs.exp,v > retrieving revision 1.5 > diff -u -p -r1.5 miscexprs.exp > --- miscexprs.exp 2001/03/06 08:21:50 1.5 > +++ miscexprs.exp 2001/10/31 16:43:01 > @@ -30,6 +30,17 @@ if $tracelevel then { > strace $tracelevel > } > > +# By default, the datastructures are allocated on the stack. For targets > +# with very small stack, that will not work. In that case, just set > +# storage to `-DSTORAGE=static' which changes the datastructures to be > +# allocated in data segment. > +set storage "-DSTORAGE=" > +if [istarget "stormy16-*-*"] then { > + set storage "-DSTORAGE=static" > +} > + > +set additional_flags "additional_flags=-w ${storage}" > + > # > # test running programs > # > @@ -40,7 +51,7 @@ set testfile "miscexprs" > set srcfile ${testfile}.c > set binfile ${objdir}/${subdir}/${testfile} > > -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } { > +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug ${additional_flags}]] != "" } { > gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." > } >