c/8268: no compile time array index checking

Wolfgang Bangerth bangerth@ticam.utexas.edu
Tue Jan 28 00:46:00 GMT 2003


The following reply was made to PR c/8268; it has been noted by GNATS.

From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: David Binderman <d.binderman@virgin.net>,
   <falk.hueffner@student.uni-tuebingen.de>
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c/8268: no compile time array index checking
Date: Mon, 27 Jan 2003 18:45:53 -0600 (CST)

 David,
 thanks for checking this out. This seems like if the patch was going in 
 the right direction. Falk, regarding the abort, can you take a look at it?
 
 Thanks
   W.
 
 
 > I tried out the suggested patch, and it seems ok, until I run
 > the gcc test suite, where I get problems on test
 > 
 > gcc.c-torture/execute/20010924-1.c
 > 
 > as shown
 > 
 > (gdb) r /tmp/1.i
 > Starting program:
 > /home/dcb/gnu/gcc321/results.check/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/cc1
 > /tmp/1.i
 >  main
 > Program received signal SIGSEGV, Segmentation fault.
 > 0x080f12d3 in get_inner_reference (exp=0x40271700, pbitsize=0xbffff1ec,
 >     pbitpos=0xbffff1f0, poffset=0xbffff1f4, pmode=0x0,
 > punsignedp=0x40016c60,
 >     pvolatilep=0xbffff1fc) at ../../src/gcc-3.2.1/gcc/expr.c:5338
 > 5338                      || (TREE_CODE (TYPE_MAX_VALUE (domain)) ==
 > INTEGER_CST(gdb) list
 > 5333
 > 5334              if (domain && TREE_CODE (index) == INTEGER_CST)
 > 5335                {
 > 5336                  if ((TREE_CODE (low_bound) == INTEGER_CST
 > 5337                       && tree_int_cst_lt(index, low_bound))
 > 5338                      || (TREE_CODE (TYPE_MAX_VALUE (domain)) ==
 > INTEGER_CST5339                          && tree_int_cst_lt (TYPE_MAX_VALUE
 > (domain), index)
 > 5340                          /* Accesses after the end of arrays of size 0
 > (gcc5341                             extension) and 1 are likely
 > intentional. */
 > 5342                          && !tree_int_cst_lt (TYPE_MAX_VALUE (domain),
 > (gdb)
 > 
 > 
 > Further, it seems a good idea if the warning message produced could be
 > enhanced to give a clue about the index value and the size of the array.
 > 
 > Something like
 > 
 >  warning: array index '10' in array 'fred' of size '5' is not valid.
 > 
 > A possible second enhancement is to make sure that all six bugs in my
 > original demonstration case are found. The current version of the patch
 > only finds four of the six problems.
 > 
 > The supplied patch does seem to find bugs in the gcc321 source code,
 > however.
 > 
 > Regards
 > 
 > dcb
 > 
 > 
 > ----- Original Message -----
 > From: <bangerth@dealii.org>
 > To: <d.binderman@virgin.net>; <gcc-bugs@gcc.gnu.org>; <gcc-prs@gcc.gnu.org>;
 > <nobody@gcc.gnu.org>
 > Sent: Wednesday, January 08, 2003 2:40 AM
 > Subject: Re: c/8268: no compile time array index checking
 > 
 > 
 > > Synopsis: no compile time array index checking
 > >
 > > State-Changed-From-To: open->analyzed
 > > State-Changed-By: bangerth
 > > State-Changed-When: Tue Jan  7 18:40:02 2003
 > > State-Changed-Why:
 > >     Valid request. Falk even has a patch for that, but it
 > >     does not seem to be in.
 > >
 > >     In fact, the category should not be accepts-illegal, since
 > >     the code is perfectly legal. It just does something
 > >     undefined.
 > >
 > >     W.
 > >
 > >
 > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
 > r=8268
 > >
 > 
 
 -------------------------------------------------------------------------
 Wolfgang Bangerth             email:            bangerth@ticam.utexas.edu
                               www: http://www.ticam.utexas.edu/~bangerth/
 
 



More information about the Gcc-prs mailing list