mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 19:44:11 +08:00
aarch64: Fix bogus type punning in parse_barrier() [PR26699]
This patch fixes a bogus use of type punning in parse_barrier() which was causing an assembly failure on big endian LP64 hosts when attempting to assemble "isb sy" for AArch64. The type of the entries in aarch64_barrier_opt_hsh is aarch64_name_value_pair. We were incorrectly casting this to the locally-defined asm_barrier_opt which has a wider type (on LP64) for the second member. This happened to work on little-endian hosts but fails on LP64 big endian. The fix is to use the correct type in parse_barrier(). This makes the locally-defined asm_barrier_opt redundant, so remove it. gas/ChangeLog: * config/tc-aarch64.c (asm_barrier_opt): Delete. (parse_barrier): Fix bogus type punning. * testsuite/gas/aarch64/system.d: Update disassembly. * testsuite/gas/aarch64/system.s: Add isb sy test.
This commit is contained in:
parent
0ec992e664
commit
05cfb0d8cc
@ -1,3 +1,11 @@
|
||||
2020-10-06 Alex Coplan <alex.coplan@arm.com>
|
||||
|
||||
PR 26699
|
||||
* config/tc-aarch64.c (asm_barrier_opt): Delete.
|
||||
(parse_barrier): Fix bogus type punning.
|
||||
* testsuite/gas/aarch64/system.d: Update disassembly.
|
||||
* testsuite/gas/aarch64/system.s: Add isb sy test.
|
||||
|
||||
2020-10-06 Sergey Belyashav <sergey.belyashov@gmail.com>
|
||||
|
||||
PR 26692
|
||||
|
@ -247,12 +247,6 @@ set_fatal_syntax_error (const char *error)
|
||||
present. */
|
||||
#define COND_ALWAYS 0x10
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *template;
|
||||
unsigned long value;
|
||||
} asm_barrier_opt;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *template;
|
||||
@ -3993,7 +3987,7 @@ static int
|
||||
parse_barrier (char **str)
|
||||
{
|
||||
char *p, *q;
|
||||
const asm_barrier_opt *o;
|
||||
const struct aarch64_name_value_pair *o;
|
||||
|
||||
p = q = *str;
|
||||
while (ISALPHA (*q))
|
||||
|
@ -190,6 +190,7 @@ Disassembly of section \.text:
|
||||
.*: d5033edf isb #0xe
|
||||
.*: d5033fdf isb
|
||||
.*: d5033fdf isb
|
||||
.*: d5033fdf isb
|
||||
.*: d503309f ssbb
|
||||
.*: d503349f pssbb
|
||||
.*: d8000000 prfm pldl1keep, 0 <LABEL1>
|
||||
|
@ -44,6 +44,7 @@
|
||||
all_barriers op=isb, from=0, to=15
|
||||
|
||||
isb
|
||||
isb sy
|
||||
ssbb
|
||||
pssbb
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user