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.