[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: regex.c value out of range on Solaris compiler
From: |
Gavin Smith |
Subject: |
Re: regex.c value out of range on Solaris compiler |
Date: |
Fri, 14 Apr 2017 23:08:19 +0100 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Fri, Apr 14, 2017 at 10:27:45PM +0100, Gavin Smith wrote:
> Line 21273 is
> subl $4294967296,%eax
>
> Line 21294 is
> subl $4294967296,%eax
>
>
> the problem occurs. I believe that the faulty code is coming from the
> use of INT_ADD_WRAPV from intprops.h. I haven't investigated how exactly
> this macro leads to the faulty code.
The macro expands to a lot of code, but I simplified the code that gives
the same error:
$ cat tmp.c
int main (void)
{
int length1 = 0, length2 = 0;
if ( ( int ) ( ( ( unsigned int ) ( length1 ) + ( unsigned int ) (
length2 ) ) - ( ( - 2147483647 - 1 ) ) ) + ( ( - 2147483647 - 1 ) ) )
1;
}
$ /opt/solarisstudio12.3/bin/c99 -Xc -D_XPG6 -DHAVE_CONFIG_H -I. -I../..
-D_REENTRANT tmp.c
Assembler: "/tmp/yabeAAAUsaiac", line 23 : Value out of range
Failure in /opt/solarisstudio12.3/prod/bin/fbe, status = 0x7f00
Fatal Error exec'ing /opt/solarisstudio12.3/prod/bin/fbe
c99: acomp failed for tmp.c
The same
subl $4294967296,%eax
line occurs in the assembly output.
Can this be fixed in intprops.h?