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  <jose.marchesi@oracle.com>

	* config/tc-bpf.c (md_apply_fix): Avoid GCC 10 warning
	stringop-overflow.
This commit is contained in:
Jose E. Marchesi 2020-06-05 16:23:30 +02:00
parent 8a4ba3a142
commit f1919c56e1
2 changed files with 7 additions and 2 deletions

View File

@ -1,3 +1,8 @@
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.

View File

@ -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