bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/31919] New: AArch64 gas test case "gas/aarch64/brbe-brb-in


From: jremus at linux dot ibm.com
Subject: [Bug binutils/31919] New: AArch64 gas test case "gas/aarch64/brbe-brb-inst" fails on s390x
Date: Fri, 21 Jun 2024 15:27:43 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=31919

            Bug ID: 31919
           Summary: AArch64 gas test case "gas/aarch64/brbe-brb-inst"
                    fails on s390x
           Product: binutils
           Version: 2.43 (HEAD)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: jremus at linux dot ibm.com
  Target Milestone: ---

The AArch64 GNU Assembler test case "gas/aarch64/brbe-brb-inst" fails in a GNU
Binutils build for target "aarch64-linux-gnu" on s390x as follows:


Target is aarch64-unknown-linux-gnu
Host   is s390x-ibm-linux-gnu
...
regexp_diff match failure
regexp "^.*:    d509729e        brb     iall    // unpredictable encoding
\(Rt!=31\): #30$"
line   "   4:   d509729e        brb     iall    // unpredictable encoding
(Rt!=31): #128849018880"
regexp_diff match failure
regexp "^.*:    d50972be        brb     inj     // unpredictable encoding
\(Rt!=31\): #30$"
line   "   c:   d50972be        brb     inj     // unpredictable encoding
(Rt!=31): #128849018880"
FAIL: gas/aarch64/brbe-brb-inst

The AArch64 instruction table (aarch64-tbl.h) defines the operand
Rt_IN_SYS_ALIASES as register number. During assembly it is correctly
encoded as register number (reg.regno) in parse_operands. During
disassembly it is first correctly decoded as register number (reg.regno)
in aarch64_ext_regno called by aarch64_extract_operand, but then
erroneously treated as immediate value (imm.value) in
aarch64_print_operand.

This resolves the assembler test case "gas/aarch64/brbe-brb-inst" to
erroneously fail on s390. On AArch64 - being little-endian - the struct
aarch64_opnd_info union fields reg.regno and imm.value share their
least-significant bits. On s390 - being big-endian - they do not.

I will send a patch.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]