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 <jose.marchesi@oracle.com>
* config/tc-bpf.c (md_apply_fix): Avoid GCC 10 warning
stringop-overflow.
+2020-06-05 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * config/tc-bpf.c (md_apply_fix): Avoid GCC 10 warning
+ stringop-overflow.
+
2020-06-05 Nelson Chu <nelson.chu@sifive.com>
* config/tc-riscv.c (explicit_csr): New static boolean.
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