diff options
author | Jose E. Marchesi <jose.marchesi@oracle.com> | 2020-06-05 16:23:30 +0200 |
---|---|---|
committer | Jose E. Marchesi <jose.marchesi@oracle.com> | 2020-06-05 16:23:30 +0200 |
commit | f1919c56e1ffce63c5dbd60c9b29c492be9d0787 (patch) | |
tree | 37b172dce58b1e7435d374a846673ce16697acc0 /gas | |
parent | 8a4ba3a14258bb522f7dadf07d92faae99e59301 (diff) | |
download | gdb-f1919c56e1ffce63c5dbd60c9b29c492be9d0787.zip gdb-f1919c56e1ffce63c5dbd60c9b29c492be9d0787.tar.gz gdb-f1919c56e1ffce63c5dbd60c9b29c492be9d0787.tar.bz2 |
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.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-bpf.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 14d1079..3ef92ad 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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. diff --git a/gas/config/tc-bpf.c b/gas/config/tc-bpf.c index aa48108..026a631 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 |