This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Query regarding execute test 960521-1. c in gcc.c-torture
- From: Saurabh Verma <saurabh dot verma at codito dot com>
- To: gcc at gcc dot gnu dot org
- Date: Wed, 28 Sep 2005 21:18:12 +0530
- Subject: Query regarding execute test 960521-1. c in gcc.c-torture
- Reply-to: saurabh dot verma at codito dot com
hi,
i had a query regarding testcase gcc.c-torture/execute/960521-1.c [Link
below]. The testcase does the following:
i) mallocs two integer arrays a and b of size n each
ii) *b=0 and increment b
{lets call the new b as bnew, and the old b as bold, so
that bnew = bold+1,and bold[0]=bnew[-1]=0 }
iii) sets a[0] to a[n-1] to -1
iv) sets bnew[0] to bnew[BLOCK_SIZE-2] to -1
=> bold [1] to bold [BLOCK_SIZE-1] to -1
v) results in PASS if bnew [-1] {i.e. bold[0]} is still zero
FAILs otherwise
Now this test fails for a particular architecture, because on of the
mallocs returned zero (the amount of stack and heap available being 65K
and 20K respectively). This is because the testcase decides the size to
be malloc'ed based on the stack available. Since the heap space
available to me is much smaller than the stack, this calculation ( size
of each array = (STACK_SIZE / (sizeof (*a) + sizeof (*b)))) results in
an impossibly large malloc request, and the array value setting
overwrites the text.
Before making any changes to the testcase to adapt it to our
requirements, i wanted to be sure about the reason for the test, i.e.
what exactly is the testcase supposed to check for? This is a very old
testcase and a look at viewcvs shows it as an initial import from egcs
testsuite base.
thanks in advance for any help
regards
saurabh
Link:
~~~~
http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/960521-1.c?rev=1.2&content-type=text/plain