[PATCH] Don't define ARCH_cris for BFD64

Hans-Peter Nilsson hp@axis.com
Fri May 6 02:35:24 GMT 2022


> From: Alan Modra <amodra@gmail.com>
> Date: Fri, 6 May 2022 02:56:46 +0200

> As is often the case the truth is more complicated than it would
> appear on the surface.

While aiming for the bigger picture is a good thing, you're
here letting the perfect be the enemy of the good.  A
reasonable step would be to get all targets want64=true, to
avoid this annoying host-32/64-bit difference.

>  I think the cris support works fine with a
> 32-bit bfd.  It's just that the cris testsuite has expressions
> that overflow 32 bits.
> 
> gas/testsuite/gas/cris/shexpr-1.s has this expression:
> 
>     ((0x17<<23)+((0xfede4194/8192)<<4)+8)
>
> It evaluates to 0x0bff6f28 when calculating in 64 bits, but to
> 0x0b7f6f38 when calculating in 32 bits

But seeing it as "calculating in 32 bits" is just So Wrong!

I admit I worked around this missing tracking of
subexpression signeness and papering over the gas bug by
just making the problem go away for *this* port.

Now 20 years down the line, when 64-bit is the norm, IMHO
that's a preferred solution (while waiting for Someone to
rewrite the expression bits, but it also happens to get
host-size-uniform address output).

brgds, H-P


More information about the Binutils mailing list