From mboxrd@z Thu Jan 1 00:00:00 1970 From: Corinna Vinschen To: gdb-patches Subject: Re: [RFA]: testsuite/gdb.base/miscexprs.* Date: Wed, 31 Oct 2001 12:20:00 -0000 Message-id: <20011031212016.L32706@cygbert.vinschen.de> References: <20011031175346.G32706@cygbert.vinschen.de> <3BE05398.C708813C@cygnus.com> X-SW-Source: 2001-10/msg00400.html On Wed, Oct 31, 2001 at 11:40:08AM -0800, Michael Snyder wrote: > Corinna Vinschen wrote: > > 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" > } Thanks for the suggestion! I like it so much that I immediately changed my patch. The new patch is below. 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 20:18:04 @@ -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 20:18:04 @@ -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 [target_info exists gdb,small_stack_section] { + 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." }