When parsing the operand instruction flags we don't currently detect the
case where multiple flags are provided from the same class set, these
will be accepted and the bit values merged together, resulting in the
wrong instruction being assembled. For example:
adc.n.eq r0,r0,r2
Will assemble without error, yet, upon disassembly, the instruction will
actually be:
adc.c r0,r0,r2
In a later commit the concept of required flags will be introduced.
Required flags are just like normal instruction flags, except that they
must be present for the instruction to match. Adding this will allow
for simpler instructions in the instruction table, and allow for more
sharing of operand extraction and insertion functions.
To solve both of the above issues (multiple flags being invalid, and
required flags), this commit reworks the flag class mechanism.
Currently the flag class is never used. Each instruction can reference
multiple flag classes, each flag class has a class type and a set of
flags. However, at present, the class type is never used. The current
values identify the type of instruction that the flag will be used in,
but this is not required information.
Instead, this commit discards the old flag classes, and introduces 3 new
classes. The first F_CLASS_NONE, is just a NULL marker value, and is
only used in the NULL marker flag class. The other two flag classes are
F_FLAG_OPTIONAL, and F_FLAG_REQUIRED.
The class F_FLAG_OPTIONAL has the property that at most one of the flags
in the flag set for that class must be present in the instruction. The
"at most" one means that no flags being present is fine.
The class F_FLAG_REQUIRED is not currently used, but will be soon. With
this class, exactly one of the flags from this class must be present in
the instruction. If the flag class contains a single flag, then of
course that flag must be present. However, if the flag class contained
two or more, then one, and only one of them must be present.
gas/ChangeLog:
* config/tc-arc.c (find_opcode_match): Move lnflg, and i
declarations to start of block. Reset code on all flags before
attempting to match them. Handle multiple hits on the same flag.
Handle flag class.
* testsuite/gas/arc/asm-errors.d: New file.
* testsuite/gas/arc/asm-errors.err: New file.
* testsuite/gas/arc/asm-errors.s: New file.
include/ChangeLog:
* opcode/arc.h (flag_class_t): Remove all old flag classes, add 3
new classes instead.
opcodes/ChangeLog:
* arc-opc.c (arc_flag_classes): Convert all flag classes to use
the new class enum values.
187 lines
5.6 KiB
Plaintext
187 lines
5.6 KiB
Plaintext
2016-03-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* opcode/arc.h (flag_class_t): Remove all old flag classes, add 3
|
||
new classes instead.
|
||
|
||
2016-03-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* elf/arc.h (E_ARC_MACH_NPS400): Define.
|
||
* opcode/arc.h (ARC_OPCODE_NPS400): Define.
|
||
|
||
2016-03-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* elf/arc.h (EF_ARC_CPU_GENERIC): Delete. Update related comment.
|
||
|
||
2016-03-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* elf/arc.h (EF_ARC_MACH): Delete.
|
||
(EF_ARC_MACH_MSK): Remove out of date comment.
|
||
|
||
2016-03-21 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* opcode/arc.h (ARC_OPCODE_BASE): Delete.
|
||
|
||
2016-03-15 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/19807
|
||
* bfdlink.h (bfd_link_info): Add no_reloc_overflow_check.
|
||
|
||
2016-03-08 Cupertino Miranda <Cupertino.Miranda@synopsys.com>
|
||
Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* elf/arc-reloc.def: Add a call to ME within the formula for each
|
||
relocation that requires middle-endian correction.
|
||
|
||
2016-03-07 Trevor Saunders <tbsaunde+binutils@tbsaunde.org>
|
||
|
||
* opcode/dlx.h (struct dlx_opcode): Add const qualifiers.
|
||
* opcode/h8300.h (struct h8_opcode): Likewise.
|
||
* opcode/hppa.h (struct pa_opcode): Likewise.
|
||
* opcode/msp430.h: Likewise.
|
||
* opcode/spu.h (struct spu_opcode): Likewise.
|
||
* opcode/tic30.h (struct _register): Likewise.
|
||
* opcode/tic4x.h (struct tic4x_register): Likewise.
|
||
(struct tic4x_cond): Likewise.
|
||
(struct tic4x_indirect): Likewise.
|
||
(struct tic4x_inst): Likewise.
|
||
* opcode/visium.h (struct reg_entry): Likewise.
|
||
|
||
2016-03-04 Matthew Wahab <matthew.wahab@arm.com>
|
||
|
||
* arm.h (ARM_ARCH_V8_1A): Add FPU_NEON_EXT_RDMA.
|
||
(ARM_CPU_HAS_FEATURE): Add comment.
|
||
|
||
2016-03-03 Than McIntosh <thanm@google.com>
|
||
|
||
* plugin-api.h: Add new hooks to the plugin transfer vector to
|
||
to support querying section alignment and section size.
|
||
(ld_plugin_get_input_section_alignment): New hook.
|
||
(ld_plugin_get_input_section_size): New hook.
|
||
(ld_plugin_tag): Add LDPT_GET_INPUT_SECTION_ALIGNMENT
|
||
and LDPT_GET_INPUT_SECTION_SIZE.
|
||
(ld_plugin_tv): Add tv_get_input_section_alignment and
|
||
tv_get_input_section_size.
|
||
|
||
2016-03-03 Evgenii Stepanov <eugenis@google.com>
|
||
|
||
* plugin-api.h (enum ld_plugin_tag): Add LDPT_GET_SYMBOLS_V3.
|
||
|
||
2016-02-26 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/19645
|
||
* bfdlink.h (bfd_link_elf_stt_common): New enum.
|
||
(bfd_link_info): Add elf_stt_common.
|
||
|
||
2016-02-26 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/19636
|
||
PR ld/19704
|
||
PR ld/19719
|
||
* bfdlink.h (bfd_link_info): Add dynamic_undefined_weak.
|
||
|
||
2016-02-19 Matthew Wahab <matthew.wahab@arm.com>
|
||
Jiong Wang <jiong.wang@arm.com>
|
||
|
||
* opcode/arm.h (ARM_EXT2_FP16_INSN): New.
|
||
|
||
2016-02-10 Claudiu Zissulescu <claziss@synopsys.com>
|
||
Janek van Oirschot <jvanoirs@synopsys.com>
|
||
|
||
* opcode/arc.h (arc_opcode arc_relax_opcodes, arc_num_relax_opcodes):
|
||
Declare.
|
||
|
||
2016-02-09 Nick Clifton <nickc@redhat.com>
|
||
|
||
* opcode/metag.h (metag_scondtab): Mark as possibly unused.
|
||
* opcode/nds32.h (nds32_r45map): Likewise.
|
||
(nds32_r54map): Likewise.
|
||
* opcode/visium.h (gen_reg_table): Likewise.
|
||
(fp_reg_table, cc_table, opcode_table): Likewise.
|
||
|
||
2016-02-09 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 16583
|
||
* elf/common.h (AT_SUN_HWCAP): Undef before defining.
|
||
|
||
2016-02-04 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR target/19561
|
||
* opcode/msp430.h (IGNORE_CARRY_BIT): New define.
|
||
(RRUX): Synthesise using case 2 rather than 7.
|
||
|
||
2016-01-19 John Baldwin <jhb@FreeBSD.org>
|
||
|
||
* elf/common.h (NT_FREEBSD_THRMISC): Define.
|
||
(NT_FREEBSD_PROCSTAT_PROC): Define.
|
||
(NT_FREEBSD_PROCSTAT_FILES): Define.
|
||
(NT_FREEBSD_PROCSTAT_VMMAP): Define.
|
||
(NT_FREEBSD_PROCSTAT_GROUPS): Define.
|
||
(NT_FREEBSD_PROCSTAT_UMASK): Define.
|
||
(NT_FREEBSD_PROCSTAT_RLIMIT): Define.
|
||
(NT_FREEBSD_PROCSTAT_OSREL): Define.
|
||
(NT_FREEBSD_PROCSTAT_PSSTRINGS): Define.
|
||
(NT_FREEBSD_PROCSTAT_AUXV): Define.
|
||
|
||
2016-01-18 Miranda Cupertino <Cupertino.Miranda@synopsys.com>
|
||
Zissulescu Claudiu <Claudiu.Zissulescu@synopsys.com>
|
||
|
||
* elf/arc-reloc.def (ARC_32, ARC_GOTPC, ARC_TLS_GD_GOT)
|
||
(ARC_TLS_IE_GOT, ARC_TLS_DTPOFF, ARC_TLS_DTPOFF_S9, ARC_TLS_LE_S9)
|
||
(ARC_TLS_LE_32): Fixed formula.
|
||
(ARC_TLS_GD_LD): Use new special function.
|
||
* opcode/arc-func.h: Changed all the replacement
|
||
functions to clear the patching bits before doing an or it with the value
|
||
argument.
|
||
|
||
2016-01-18 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR ld/19440
|
||
* coff/internal.h (internal_syment): Use int to hold section
|
||
number.
|
||
(N_UNDEF): Cast to int not short.
|
||
(N_ABS): Likewise.
|
||
(N_DEBUG): Likewise.
|
||
(N_TV): Likewise.
|
||
(P_TV): Likewise.
|
||
|
||
2016-01-11 Nick Clifton <nickc@redhat.com>
|
||
|
||
Import this change from GCC mainline:
|
||
|
||
2016-01-07 Mike Frysinger <vapier@gentoo.org>
|
||
|
||
* longlong.h: Change !__SHMEDIA__ to
|
||
(!defined (__SHMEDIA__) || !__SHMEDIA__).
|
||
Change __SHMEDIA__ to defined (__SHMEDIA__) && __SHMEDIA__.
|
||
|
||
2016-01-06 Maciej W. Rozycki <macro@imgtec.com>
|
||
|
||
* opcode/mips.h: Add a summary of MIPS16 operand codes.
|
||
|
||
2016-01-05 Mike Frysinger <vapier@gentoo.org>
|
||
|
||
* libiberty.h (dupargv): Change arg to char * const *.
|
||
(writeargv, countargv): Likewise.
|
||
|
||
2016-01-01 Alan Modra <amodra@gmail.com>
|
||
|
||
Update year range in copyright notice of all files.
|
||
|
||
For older changes see ChangeLog-0415, aout/ChangeLog-9115,
|
||
cgen/ChangeLog-0915, coff/ChangeLog-0415, elf/ChangeLog-0415,
|
||
mach-o/ChangeLog-1115, nlm/ChangeLog-9315, opcode/ChangeLog-0415,
|
||
som/ChangeLog-1015, and vms/ChangeLog-1015
|
||
|
||
Copyright (C) 2016 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|
||
|
||
Local Variables:
|
||
mode: change-log
|
||
left-margin: 8
|
||
fill-column: 74
|
||
version-control: never
|
||
End:
|