diff options
author | Jose E. Marchesi <jose.marchesi@oracle.com> | 2016-06-17 02:13:30 -0700 |
---|---|---|
committer | Jose E. Marchesi <jose.marchesi@oracle.com> | 2016-06-17 02:13:30 -0700 |
commit | 8b8c7c9f49992750f66f81b4601d593a3858d98c (patch) | |
tree | 2519ddafa4cb27bc36cdb9f6effcee87546905a9 /gas/gdbinit.in | |
parent | 4f26fb3a1b1369a044ac642d1e82bf6fc6dfa9d9 (diff) | |
download | gdb-8b8c7c9f49992750f66f81b4601d593a3858d98c.zip gdb-8b8c7c9f49992750f66f81b4601d593a3858d98c.tar.gz gdb-8b8c7c9f49992750f66f81b4601d593a3858d98c.tar.bz2 |
gas: sparc: fix collision of registers and pseudo-ops.
The current sparc assembler breaks when the name of an ancillary-state
register, privileged register or hyperprivileged register has a
%-pseudo-operation name as a prefix. For example, %hmcdper and %hm(),
or %hintp and %hi().
This patch fixes it by introducing a new table `perc_table' (for
%-table) that contains an entry for every %name supported by the
assembler, other than the general registers. This table is used to
detect name collisions when the assembler tries to detect a %-pseudo-op.
This patch also fixes a related bug, making sure that v9a_asr_table and
hpriv_reg_table are sorted in reverse lexicographic order, as otherwise
the search code may fail.
gas/ChangeLog:
2016-06-17 Jose E. Marchesi <jose.marchesi@oracle.com>
* config/tc-sparc.c (priv_reg_table): Use NULL instead of the
empty string to mark the end of the array.
(hpriv_reg_table): Likewise.
(v9a_asr_table): Likewise.
(cmp_reg_entry): Handle entries with NULL names.
(F_POP_V9): Define.
(F_POP_PCREL): Likewise.
(F_POP_TLS_CALL): Likewise.
(F_POP_POSTFIX): Likewise.
(struct pop_entry): New type.
(pop_table): New variable.
(enum pop_entry_type): New type.
(struct perc_entry): Likewise.
(NUM_PERC_ENTRIES): Define.
(perc_table): New variable.
(cmp_perc_entry): New function.
(md_begin): Sort hpriv_reg_table and v9a_asr_table, and initialize
perc_table.
(sparc_ip): Handle entries with NULL names in priv_reg_table,
hpriv_reg_table and v9a_asr_table. Use perc_table to handle
%-pseudo-ops.
Diffstat (limited to 'gas/gdbinit.in')
0 files changed, 0 insertions, 0 deletions