https://sourceware.org/bugzilla/show_bug.cgi?id=19910
Bug ID: 19910
Summary: Unsigned arithmetic and %hi()/%low() operators
Product: binutils
Version: 2.26
Status: NEW
Severity: normal
Priority: P2
Component: gas
Assignee: unassigned at sourceware dot org
Reporter: orlandoarias at gmail dot com
Target Milestone: ---
Working with he sparc-leon3-linux target in gas versions 2.26.20160125
and 2.23, the following behaviour is observed:
sethi %hi(((((0x40000000U + 0x40000000U) - 160)-(8192U-160))-32U)), %fp
or %g0, %lo(((((0x40000000U +0x40000000U) - 160)-(8192U-160))-32U)), %fp
These statements fail to assemble with the error:
Error: missing ')'
However, the following assembles with no issues:
sethi %hi(((((0x40000000 + 0x40000000) - 160)-(8192-160))-32)), %fp
or %g0, %lo(((((0x40000000 +0x40000000) - 160)-(8192-160))-32)), %fp
The issue can be reduced to the following lines:
or %g0, %lo(0x40000000U +0x40000000U), %g1
or %g0, %lo((0x40000000U +0x40000000U)), %g1
The first line assembles properly, whereas the second line fails to assemble.
It looks like this is a bug with the parser. I have only tested this with the
sparc-leon3-linux target, but other targets may also be affected with the
issue. Thank you for looking into this.
Cheers,
Orlando.
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils