This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Re: gas will miscompile with SPARCompiler 3.0.1 on Solaris7
- To: Alan Modra <alan at linuxcare dot com dot au>
- Subject: Re: gas will miscompile with SPARCompiler 3.0.1 on Solaris7
- From: Alexandre Oliva <aoliva at cygnus dot com>
- Date: 06 Apr 2000 23:44:25 -0300
- Cc: binutils at sourceware dot cygnus dot com, jakub at redhat dot com
- Organization: Cygnus Solutions, a Red Hat Company
- References: <Pine.LNX.4.21.0004070939510.6764-100000@front.linuxcare.com.au>
[back to the list]
On Apr 6, 2000, Alan Modra <alan@linuxcare.com.au> wrote:
> It's either from line 3026 of gas/config/tc-sparc.c, or line 971 of
> gas/write.c Maybe you could change one (or both, to make sure I know
> what I'm talking about!) of the error messages to see which it is?
Instead, I run it within a debugger and found out it was in line 3026
of gas/config/tc-sparc.c.
The problem is in in_signed_range(). bfd_signed_vma is `long long',
whose size is 8 bytes. When it does:
/* Sign-extend the value from the architecture word size, so that
0xffffffff is always considered -1 on sparc32. */
if (sparc_arch_size == 32)
{
bfd_signed_vma sign = (bfd_signed_vma)1 << 31;
val = ((val & 0xffffffff) ^ sign) - sign;
}
val, that was -112ll, becomes -4294967408ll, which certain doesn't fit
in 13 bits. Jakub, it seems that you are responsible for having
introduced this change, back in Sept 1998. Do you still remember why
it was necessary? Can't we just remove it?
--
Alexandre Oliva Enjoy Guaranį, see http://www.ic.unicamp.br/~oliva/
Cygnus Solutions, a Red Hat company aoliva@{redhat, cygnus}.com
Free Software Developer and Evangelist CS PhD student at IC-Unicamp
oliva@{lsd.ic.unicamp.br, gnu.org} Write to mailing lists, not to me