Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [RFA/testsuite] stack check
@ 2008-09-01 17:03 Jerome Guitton
  2008-09-01 17:14 ` Jerome Guitton
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Jerome Guitton @ 2008-09-01 17:03 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 323 bytes --]


Test that GDB is able to get a correct backtrace when the application
is compiled with -fstack-check. Related to:
http://sourceware.org/ml/gdb-patches/2008-09/msg00005.html


2008-09-01  Jerome Guitton  <guitton@adacore.com>

	* (stack-checking.c, stack-checking.exp): New testcase.


OK to apply?

Thanks,
- Jerome







[-- Attachment #2: stack-checking.c --]
[-- Type: text/x-csrc, Size: 389 bytes --]

/*
  Test file to be compiled with -fstack-check, for testing "bt" against
  different stack checking prologue sequences.
 */

int i = 0;

void
small_frame ()
{
  i++; /* set breakpoint here */
}

void medium_frame ()
{
  char S [16384];
  small_frame ();
}

void big_frame ()
{
  char S [524188];
  small_frame ();
}

void
main ()
{
  small_frame ();
  medium_frame ();
  big_frame ();
}

[-- Attachment #3: stack-checking.exp --]
[-- Type: text/plain, Size: 1665 bytes --]

# Copyright 2008 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 $tracelevel then {
    strace $tracelevel
}

set prms_id 0
set bug_id 0

set testfile "stack-checking"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug optimize=-fstack-check nowarnings]] != "" } {
     untested stack-checking.exp
     return -1
}

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

if ![runto_main] then {
    fail "Can't run to main"
    return 0
}


# Test that the debugger is able to unwind to "main" at the next breakpoint
# hit. The frame number of "main" should be passed into MAIN_FRAME_NUMBER."
proc backtrace_test {name main_frame_number} {
    gdb_continue_to_breakpoint "breakpoint for $name"
    gdb_test "bt" "#${main_frame_number}.*in main ().*"
}

gdb_breakpoint [gdb_get_line_number "set breakpoint here"]
backtrace_test "small frame" "1"
backtrace_test "medium frame" "2"
backtrace_test "big frame" "2"

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFA/testsuite] stack check
  2008-09-01 17:03 [RFA/testsuite] stack check Jerome Guitton
@ 2008-09-01 17:14 ` Jerome Guitton
  2008-09-02 21:03   ` Joel Brobecker
  2008-09-02 21:02 ` Joel Brobecker
  2008-09-11 16:26 ` [commit] Fix testcase for SPU (Re: [RFA/testsuite] stack check) Ulrich Weigand
  2 siblings, 1 reply; 11+ messages in thread
From: Jerome Guitton @ 2008-09-01 17:14 UTC (permalink / raw)
  To: gdb-patches

Jerome Guitton (guitton@adacore.com):

> 
> Test that GDB is able to get a correct backtrace when the application
> is compiled with -fstack-check.

BTW, I have a similar testcase in PPC assembly. It checks that the
different stack-checking sequences that GCC may emit for this target
are understood by GDB. It could be merged into
gdb.arch/powerpc-aix-prologue.exp. If it is of any help, I'll be happy
to post it in this list.

Thanks,
- Jerome



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFA/testsuite] stack check
  2008-09-01 17:03 [RFA/testsuite] stack check Jerome Guitton
  2008-09-01 17:14 ` Jerome Guitton
@ 2008-09-02 21:02 ` Joel Brobecker
  2008-09-03  8:53   ` Jerome Guitton
  2008-09-08 10:17   ` Jerome Guitton
  2008-09-11 16:26 ` [commit] Fix testcase for SPU (Re: [RFA/testsuite] stack check) Ulrich Weigand
  2 siblings, 2 replies; 11+ messages in thread
From: Joel Brobecker @ 2008-09-02 21:02 UTC (permalink / raw)
  To: Jerome Guitton; +Cc: gdb-patches

> 2008-09-01  Jerome Guitton  <guitton@adacore.com>
> 
> 	* (stack-checking.c, stack-checking.exp): New testcase.

OK, except for a little nit: You forgot to add a copyright header
in the C file...

Also:

> if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug optimize=-fstack-check nowarnings]] != "" } {

I would think that the "optimize" flag was only meant to force a certain
optimization level.  Perhaps you should use additional_flags instead.

-- 
Joel


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFA/testsuite] stack check
  2008-09-01 17:14 ` Jerome Guitton
@ 2008-09-02 21:03   ` Joel Brobecker
  0 siblings, 0 replies; 11+ messages in thread
From: Joel Brobecker @ 2008-09-02 21:03 UTC (permalink / raw)
  To: Jerome Guitton; +Cc: gdb-patches

> BTW, I have a similar testcase in PPC assembly. It checks that the
> different stack-checking sequences that GCC may emit for this target
> are understood by GDB. It could be merged into
> gdb.arch/powerpc-aix-prologue.exp. If it is of any help, I'll be happy
> to post it in this list.

Yes, I think that would be useful as well. It would allow us to make
sure that we test all variants of the stack-check code...

-- 
Joel


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFA/testsuite] stack check
  2008-09-02 21:02 ` Joel Brobecker
@ 2008-09-03  8:53   ` Jerome Guitton
  2008-09-08 10:17   ` Jerome Guitton
  1 sibling, 0 replies; 11+ messages in thread
From: Jerome Guitton @ 2008-09-03  8:53 UTC (permalink / raw)
  To: Joel Brobecker; +Cc: gdb-patches

Joel Brobecker (brobecker@adacore.com):

> I would think that the "optimize" flag was only meant to force a certain
> optimization level.  Perhaps you should use additional_flags instead.

Ooops, right. Thanks for catching that.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFA/testsuite] stack check
  2008-09-02 21:02 ` Joel Brobecker
  2008-09-03  8:53   ` Jerome Guitton
@ 2008-09-08 10:17   ` Jerome Guitton
  2008-09-08 15:42     ` Joel Brobecker
  1 sibling, 1 reply; 11+ messages in thread
From: Jerome Guitton @ 2008-09-08 10:17 UTC (permalink / raw)
  To: Joel Brobecker; +Cc: gdb-patches

Joel Brobecker (brobecker@adacore.com):

> > 2008-09-01  Jerome Guitton  <guitton@adacore.com>
> > 
> > 	* (stack-checking.c, stack-checking.exp): New testcase.
> 
> OK, except for a little nit: You forgot to add a copyright header
> in the C file...

I also forgot to mention the directory. Would gdb.base be OK?

2008-09-08  Jerome Guitton  <guitton@adacore.com>

	* gdb.base/stack-checking.c: New file
	* gdb.base/stack-checking.exp: New file.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFA/testsuite] stack check
  2008-09-08 10:17   ` Jerome Guitton
@ 2008-09-08 15:42     ` Joel Brobecker
  2008-09-08 15:56       ` Jerome Guitton
  0 siblings, 1 reply; 11+ messages in thread
From: Joel Brobecker @ 2008-09-08 15:42 UTC (permalink / raw)
  To: Jerome Guitton; +Cc: gdb-patches

> I also forgot to mention the directory. Would gdb.base be OK?

Yes :)

> 2008-09-08  Jerome Guitton  <guitton@adacore.com>
> 
> 	* gdb.base/stack-checking.c: New file
> 	* gdb.base/stack-checking.exp: New file.

-- 
Joel


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFA/testsuite] stack check
  2008-09-08 15:42     ` Joel Brobecker
@ 2008-09-08 15:56       ` Jerome Guitton
  0 siblings, 0 replies; 11+ messages in thread
From: Jerome Guitton @ 2008-09-08 15:56 UTC (permalink / raw)
  To: Joel Brobecker; +Cc: gdb-patches

Joel Brobecker (brobecker@adacore.com):

> > I also forgot to mention the directory. Would gdb.base be OK?
> 
> Yes :)
> 
> > 2008-09-08  Jerome Guitton  <guitton@adacore.com>
> > 
> > 	* gdb.base/stack-checking.c: New file
> > 	* gdb.base/stack-checking.exp: New file.

Now checked in!

Thanks,
Jerome


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [commit] Fix testcase for SPU (Re: [RFA/testsuite] stack check)
  2008-09-01 17:03 [RFA/testsuite] stack check Jerome Guitton
  2008-09-01 17:14 ` Jerome Guitton
  2008-09-02 21:02 ` Joel Brobecker
@ 2008-09-11 16:26 ` Ulrich Weigand
  2008-09-11 16:35   ` Jerome Guitton
  2 siblings, 1 reply; 11+ messages in thread
From: Ulrich Weigand @ 2008-09-11 16:26 UTC (permalink / raw)
  To: Jerome Guitton; +Cc: gdb-patches

Jerome Guitton wrote:

> void big_frame ()
> {
>   char S [524188];
>   small_frame ();
> }

This breaks on the SPU where we only have 256 KB local store.

I've committed the following patch to reduce stack consumption
on the SPU.

Bye,
Ulrich


ChangeLog:

	* gdb.base/stack-checking.c (big_frame): Reduce stack consumption
	on SPU.

Index: gdb/testsuite/gdb.base/stack-checking.c
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/stack-checking.c,v
retrieving revision 1.1
diff -c -p -r1.1 stack-checking.c
*** gdb/testsuite/gdb.base/stack-checking.c	8 Sep 2008 15:54:29 -0000	1.1
--- gdb/testsuite/gdb.base/stack-checking.c	11 Sep 2008 16:20:29 -0000
*************** void medium_frame ()
*** 36,42 ****
--- 36,46 ----
  
  void big_frame ()
  {
+ #ifdef __SPU__
+   char S [131072];
+ #else
    char S [524188];
+ #endif
    small_frame ();
  }
  


-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [commit] Fix testcase for SPU (Re: [RFA/testsuite] stack check)
  2008-09-11 16:26 ` [commit] Fix testcase for SPU (Re: [RFA/testsuite] stack check) Ulrich Weigand
@ 2008-09-11 16:35   ` Jerome Guitton
  2008-09-11 18:12     ` Ulrich Weigand
  0 siblings, 1 reply; 11+ messages in thread
From: Jerome Guitton @ 2008-09-11 16:35 UTC (permalink / raw)
  To: Ulrich Weigand; +Cc: gdb-patches

Ulrich Weigand (uweigand@de.ibm.com):

> Jerome Guitton wrote:
> 
> > void big_frame ()
> > {
> >   char S [524188];
> >   small_frame ();
> > }
> 
> This breaks on the SPU where we only have 256 KB local store.


Sorry about that. I guess that this may break other configurations;
maybe we should enable this test on a limited set of targets?



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [commit] Fix testcase for SPU (Re: [RFA/testsuite] stack check)
  2008-09-11 16:35   ` Jerome Guitton
@ 2008-09-11 18:12     ` Ulrich Weigand
  0 siblings, 0 replies; 11+ messages in thread
From: Ulrich Weigand @ 2008-09-11 18:12 UTC (permalink / raw)
  To: Jerome Guitton; +Cc: gdb-patches

Jeroms Guitton wrote:

> Ulrich Weigand (uweigand@de.ibm.com):
> 
> > Jerome Guitton wrote:
> > 
> > > void big_frame ()
> > > {
> > >   char S [524188];
> > >   small_frame ();
> > > }
> > 
> > This breaks on the SPU where we only have 256 KB local store.
> 
> 
> Sorry about that. I guess that this may break other configurations;
> maybe we should enable this test on a limited set of targets?

Hmm, the GCC testsuite supports a gcc,stack_size target_info property
and modified the behaviour of some test cases depending on that info.
Maybe we want to use something like that in GDB as well ...

But for now, I'd be fine with either leaving this particular as is
and see if other platforms complain, or else restrict it only those
platforms it is supposed to be testing (the particular levels of
frame size where prologue code generation changes is platform-specific
anyway).

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2008-09-11 18:12 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-09-01 17:03 [RFA/testsuite] stack check Jerome Guitton
2008-09-01 17:14 ` Jerome Guitton
2008-09-02 21:03   ` Joel Brobecker
2008-09-02 21:02 ` Joel Brobecker
2008-09-03  8:53   ` Jerome Guitton
2008-09-08 10:17   ` Jerome Guitton
2008-09-08 15:42     ` Joel Brobecker
2008-09-08 15:56       ` Jerome Guitton
2008-09-11 16:26 ` [commit] Fix testcase for SPU (Re: [RFA/testsuite] stack check) Ulrich Weigand
2008-09-11 16:35   ` Jerome Guitton
2008-09-11 18:12     ` Ulrich Weigand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox