Re: Compute correct mask and values when offset in define-ifield is not 0

Alan Modra via Cgen <[email protected]> Fri, 6 Jan 2023 11:22:55 +1030
Newsgroups gmane.comp.tools.cgen.devel,gmane.comp.gnu.binutils
Message-ID <[email protected]>
Updating the copyright dates this year reminded me that I have a cgen
patch of yours, commit d1dd5fcc38ea, reverted in order to build
binutils.  Without the reversion there are 10 or so errors like
.../opcodes/bpf-opc.c:57:11: error: conversion from ‘long unsigned int’ to ‘unsigned int’ changes value from ‘18446744073709486335’ to ‘4294902015’ [-Werror=overflow]
   57 |   64, 64, 0xffffffffffff00ff, { { F (F_IMM32) }, { F (F_OFFSET16) }, { F (F_SRCLE) }, { F (F_OP_CODE) }, { F (F_DSTLE) }, { F (F_OP_SRC) }, { F (F_OP_CLASS) }, { 0 } }
      |           ^~~~~~~~~~~~~~~~~~

What's more, if I build with --disable-werror, then the following
testsuite fails show up:
gas/
+FAIL: eBPF CALL instruction
+FAIL: eBPF CALL instruction, big endian
ld/
+FAIL: CALL with disp32 reloc
+FAIL: CALL with disp32 reloc and addend
+FAIL: CALL check unsigned underflow

All caused by failure of call insns to disassemble with your patch
applied.  Please fix, or revert in the cgen sources.

-- 
Alan Modra
Australia Development Lab, IBM