diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2020-05-25 04:50:56 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2020-05-25 04:51:17 -0700 |
commit | a39d29cda15d4f303c989eb0ac644a3144827881 (patch) | |
tree | c69bea759e1899279bcde7de86df7bec2f07d95c /gas | |
parent | 8f7d38efadee2a4f75fb2085e02dab658aa37f38 (diff) | |
download | gdb-a39d29cda15d4f303c989eb0ac644a3144827881.zip gdb-a39d29cda15d4f303c989eb0ac644a3144827881.tar.gz gdb-a39d29cda15d4f303c989eb0ac644a3144827881.tar.bz2 |
gas: Update fr_literal access in frag for GCC 10
When access fr_literal in
struct frag {
...
/* Data begins here. */
char fr_literal[1];
};
with
char *buf = fragp->fr_fix + fragp->fr_literal;
GCC 10 gave
gas/config/tc-csky.c: In function ‘md_convert_frag’:
gas/config/tc-csky.c:4507:9: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
4507 | buf[1] = BYTE_1 (CSKYV1_INST_SUBI | (7 << 4));
| ^
Change
char *buf = fragp->fr_fix + fragp->fr_literal;
to
char *buf = fragp->fr_fix + &fragp->fr_literal[0];
to silence GCC 10 warning.
* config/tc-csky.c (md_convert_frag): Replace fragp->fr_literal
with &fragp->fr_literal[0].
* config/tc-microblaze.c (md_apply_fix): Likewise.
* config/tc-sh.c (md_convert_frag): Likewise.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/config/tc-csky.c | 2 | ||||
-rw-r--r-- | gas/config/tc-microblaze.c | 2 | ||||
-rw-r--r-- | gas/config/tc-sh.c | 2 |
4 files changed, 10 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index e3da873..1b0ec36 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2020-05-25 H.J. Lu <hongjiu.lu@intel.com> + + * config/tc-csky.c (md_convert_frag): Replace fragp->fr_literal + with &fragp->fr_literal[0]. + * config/tc-microblaze.c (md_apply_fix): Likewise. + * config/tc-sh.c (md_convert_frag): Likewise. + 2020-05-24 Jim Wilson <jimw@sifive.com> PR 26025 diff --git a/gas/config/tc-csky.c b/gas/config/tc-csky.c index 83fca2a..be54afb 100644 --- a/gas/config/tc-csky.c +++ b/gas/config/tc-csky.c @@ -4196,7 +4196,7 @@ void md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp) { offsetT disp; - char *buf = fragp->fr_fix + fragp->fr_literal; + char *buf = fragp->fr_fix + &fragp->fr_literal[0]; gas_assert (fragp->fr_symbol); if (IS_EXTERNAL_SYM (fragp->fr_symbol, asec)) diff --git a/gas/config/tc-microblaze.c b/gas/config/tc-microblaze.c index 24ea358..ae5d36d 100644 --- a/gas/config/tc-microblaze.c +++ b/gas/config/tc-microblaze.c @@ -1983,7 +1983,7 @@ md_apply_fix (fixS * fixP, valueT * valp, segT segment) { - char * buf = fixP->fx_where + fixP->fx_frag->fr_literal; + char * buf = fixP->fx_where + &fixP->fx_frag->fr_literal[0]; const char * file = fixP->fx_file ? fixP->fx_file : _("unknown"); const char * symname; /* Note: use offsetT because it is signed, valueT is unsigned. */ diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c index d06cc5e..42f7417 100644 --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -3081,7 +3081,7 @@ md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT seg, fragS *fragP) differently from ones without delay slots. */ { unsigned char *buffer = - (unsigned char *) (fragP->fr_fix + fragP->fr_literal); + (unsigned char *) (fragP->fr_fix + &fragP->fr_literal[0]); int highbyte = target_big_endian ? 0 : 1; int lowbyte = target_big_endian ? 1 : 0; int delay = fragP->fr_subtype == C (COND_JUMP_DELAY, COND12); |