From f1919c56e1ffce63c5dbd60c9b29c492be9d0787 Mon Sep 17 00:00:00 2001 From: "Jose E. Marchesi" Date: Fri, 5 Jun 2020 16:23:30 +0200 Subject: [PATCH] gas: avoid GCC 10 warning stringop-overflow in tc-bpf.c The GAS struct frag ends with a field `fr_literal' whose purpose is to mark the begining of the frag's data: struct frag { ... /* Data begins here. */ char fr_literal[1]; }; The code in gas/config/tc-bpf.c recently committed: where = fixP->fx_frag->fr_literal + fixP->fx_where; where[1] = target_big_endian ? 0x01 : 0x10; triggers the stringop-overflow warning in GCC 10+, since the compiler assumes the size of the modified buffer is 1 byte. This patch slightly modifies the code to make tc-bpf.c buildable with GCC 10+. 2020-06-05 Jose E. Marchesi * config/tc-bpf.c (md_apply_fix): Avoid GCC 10 warning stringop-overflow. --- gas/ChangeLog | 5 +++++ gas/config/tc-bpf.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 14d10799f0b..3ef92ad961d 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2020-06-05 Jose E. Marchesi + + * config/tc-bpf.c (md_apply_fix): Avoid GCC 10 warning + stringop-overflow. + 2020-06-05 Nelson Chu * config/tc-riscv.c (explicit_csr): New static boolean. diff --git a/gas/config/tc-bpf.c b/gas/config/tc-bpf.c index aa48108748b..026a631280d 100644 --- a/gas/config/tc-bpf.c +++ b/gas/config/tc-bpf.c @@ -324,8 +324,8 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg) Note that the CALL instruction has only one operand, so this code is executed only once per instruction. */ - where = fixP->fx_frag->fr_literal + fixP->fx_where; - where[1] = target_big_endian ? 0x01 : 0x10; + where = fixP->fx_frag->fr_literal + fixP->fx_where + 1; + where[0] = target_big_endian ? 0x01 : 0x10; /* Fallthrough. */ case BPF_OPERAND_DISP16: /* The PC-relative displacement fields in jump instructions -- 2.30.2