From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fernando Nasser To: gdb-patches Subject: Re: [RFA]: testsuite/gdb.base/miscexprs.* Date: Wed, 31 Oct 2001 12:33:00 -0000 Message-id: <3BE06005.AFD211D4@redhat.com> References: <20011031175346.G32706@cygbert.vinschen.de> <3BE05398.C708813C@cygnus.com> <20011031212016.L32706@cygbert.vinschen.de> X-SW-Source: 2001-10/msg00403.html And it is already done!!! Yes, it is OK with me. Regards, Fernando Corinna Vinschen wrote: > > 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." > } > -- Fernando Nasser Red Hat Canada Ltd. E-Mail: fnasser@redhat.com 2323 Yonge Street, Suite #300 Toronto, Ontario M4P 2C9