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