This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Query regarding execute test 960521-1. c in gcc.c-torture

	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 



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]