]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
bpf: fix error conversion from long unsigned int to unsigned int [-Werror=overflow]
authorGuillermo E. Martinez <guillermo.e.martinez@oracle.com>
Fri, 3 Feb 2023 17:17:49 +0000 (11:17 -0600)
committerAlan Modra <amodra@gmail.com>
Mon, 6 Feb 2023 00:09:18 +0000 (10:39 +1030)
commit3e888977f165594cf44dbe8f67e3a4960b22c11f
treefc17b25e35490b186997fa25a974aaa48803ef8b
parent8395d8e2007d62c82979999a78dfefe374d241e0
bpf: fix error conversion from long unsigned int to unsigned int [-Werror=overflow]

Regenerating BPF target using the maintainer mode emits:
.../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 } }

The use of a narrow size to handle the mask CGEN in instruction format
is causing this error.  Additionally eBPF `call' instructions
constructed by expressions using symbols (BPF_PSEUDO_CALL) emits
annotations in `src' field of the instruction, used to identify BPF
target endianness.

cpu/
* bpf.cpu (define-call-insn): Remove `src' field from
instruction mask.

include/
*opcode/cge.h (CGEN_IFMT): Adjust mask bit width.

opcodes/
* bpf-opc.c: Regenerate.

(cherry picked from commit 7f6ebecd56e690012b05af0a492280765b17f186)
cpu/bpf.cpu
include/opcode/cgen.h
opcodes/bpf-opc.c
opcodes/cgen-dis.c