Commit Graph

9475 Commits

Author SHA1 Message Date
Alex Coplan
1d63b4bfae aarch64: Add support for Neoverse N2 CPU
This patch backports the AArch64 support for Arm's Neoverse N2 CPU to
binutils 2.35.

gas/ChangeLog:

	* config/tc-aarch64.c (aarch64_cpus): Add neoverse-n2.
	* doc/c-aarch64.texi: Document support for Neoverse N2.
2020-11-05 14:45:28 +00:00
Srinath Parvathaneni
83b4a887fc arm: Fix the wrong error message string for mve vldr/vstr (PR26763).
For mve vldr/vstr instructions assembler is throwing wrong error message.
Instead of 'Error: syntax error' assembler fails with 'Error: lo register required'.
This patch fixes the issue.

eg:
$ cat x.s
.syntax unified
.thumb

vldrb.s16 q0, r0

Before this patch:
$ arm-none-eabi-as x.s -march=armv8.1-m.main+mve -mfloat-abi=hard
x.s: Assembler messages:
x.s:4: Error: lo register required -- `vldrb.s16 q0,r0'

After this patch:
$ arm-none-eabi-as x.s -march=armv8.1-m.main+mve -mfloat-abi=hard
x.s: Assembler messages:
x.s:4: Error: syntax error -- `vldrb.s16 q0,r0'

gas/ChangeLog:

2020-10-21  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

	PR target/26763
	* config/tc-arm.c (parse_address_main): Add new MVE addressing mode
	check.
	* testsuite/gas/arm/mve-vldr-vstr-bad.d: New test.
	* testsuite/gas/arm/mve-vldr-vstr-bad.l: Likewise.
	* testsuite/gas/arm/mve-vldr-vstr-bad.s: Likewise.
2020-10-22 13:49:21 +01:00
Alex Coplan
72e2c97030 arm: Add support for Neoverse N2 CPU
This patch backports the AArch32 support for Arm's Neoverse N2 CPU to
binutils 2.35.

gas/ChangeLog:

	* config/tc-arm.c (arm_cpus): Add Neoverse N2.
	* doc/c-arm.texi: Document -mcpu=neoverse-n2.
2020-10-09 15:05:51 +01:00
Alex Coplan
923aeb9c87 arm: Add support for Neoverse V1 CPU
This patch backports the AArch32 support for Arm's Neoverse V1 CPU to
binutils 2.35.

gas/ChangeLog:

	* config/tc-arm.c (arm_cpus): Add Neoverse V1.
	* doc/c-arm.texi: Document Neoverse V1 support.
2020-10-09 10:57:01 +01:00
H.J. Lu
be5ff8fe6d x86: Update register operand check for AddrPrefixOpReg
When the address size prefix applies to both the memory and the register
operand, we need to extract the address size prefix from the register
operand if the memory operand has no real registers, like symbol, DISP
or symbol(%rip).

NB: GCC always generates symbol(%rip) for RIP-relative addressing for
both x32 and x86-64.

Move the .code16 tests in movdir.s to movdir-16bit to show the correct
output from objdump.

gas/

	PR gas/26685
	* config/tc-i386.c (process_suffix): Also check the register
	operand for the address size prefix if the memory operand has
	no real registers.
	* testsuite/gas/i386/enqcmd-16bit.d: New file.
	* testsuite/gas/i386/enqcmd-16bit.s: Likewise.
	* testsuite/gas/i386/movdir-16bit.d: Likewise.
	* testsuite/gas/i386/movdir-16bit.s: Likewise.
	* testsuite/gas/i386/enqcmd.s: Add tests with symbol and DISP.
	* testsuite/gas/i386/x86-64-enqcmd.s: Likewise.
	* testsuite/gas/i386/x86-64-movdir.s: Likewise.
	* testsuite/gas/i386/movdir.s: Add tests with symbol and DISP.
	Remove the .code16 test.
	* testsuite/gas/i386/i386.exp: Run movdir-16bit and enqcmd-16bit.
	* testsuite/gas/i386/x86-64-enqcmd-intel.d: Updated.
	* testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
	* testsuite/gas/i386/x86-64-movdir-intel.d: Likewise.
	* testsuite/gas/i386/x86-64-movdir.d: Likewise.
	* testsuite/gas/i386/enqcmd-intel.d: Likewise.
	* testsuite/gas/i386/enqcmd.d: Likewise.
	* testsuite/gas/i386/movdir-intel.d: Likewise.
	* testsuite/gas/i386/movdir.d: Likewise.
	* testsuite/gas/i386/x86-64-enqcmd-intel.d: Likewise.
	* testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
	* testsuite/gas/i386/x86-64-movdir-intel.d: Likewise.
	* testsuite/gas/i386/x86-64-movdir.d: Likewise.

opcodes/

	PR gas/26685
	* i386-dis.c (mod_table): Replace Gv with Gdq on movdiri.

(cherry picked from commit b3a3496f83)
2020-10-07 11:25:28 -07:00
H.J. Lu
3879a8a82d x86: Check register operand for AddrPrefixOpReg
If the address prefix changes the register operand, we need to check the
register operand when the memory operand is RIP-relative.

	PR gas/26685
	* config/tc-i386.c (process_suffix): Check the register operand
	for the address size prefix if the memory operand is symbol(%rip).
	* testsuite/gas/i386/x86-64-enqcmd.s: Add tests with RIP-relative
	addressing.
	* testsuite/gas/i386/x86-64-movdir.s: Likewise.
	* testsuite/gas/i386/x86-64-enqcmd-intel.d: Updated.
	* testsuite/gas/i386/x86-64-enqcmd.d: Likewise.
	* testsuite/gas/i386/x86-64-movdir-intel.d: Likewise.
	* testsuite/gas/i386/x86-64-movdir.d: Likewise.

(cherry picked from commit 27f134698a)
2020-10-07 11:16:29 -07:00
Jan Beulich
95f2e42496 Revert "x86: Don't display eiz with no scale"
This reverts commit 04c662e2b6.
In my underlying suggestion I neglected the fact that in those
cases (,%eiz,1) is the only visible indication that 32-bit
addressing is in effect.

(cherry picked from commit bf4ba07ca6)
2020-10-07 11:13:14 -07:00
Alex Coplan
def9db5cb2 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:

	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.

(cherry picked from commit 05cfb0d8cc)
2020-10-06 16:36:10 +01:00
Alex Coplan
bb671bac84 aarch64: Add support for Neoverse V1 CPU
This backports the AArch64 support for Arm's Neoverse V1 CPU to binutils
2.35.

gas/ChangeLog:

	* config/tc-aarch64.c (aarch64_cpus): Add Neoverse V1.
	* doc/c-aarch64.texi: Document Neoverse V1 support.
2020-10-02 15:04:29 +01:00
Alan Modra
172234e1fa Correct vcmpsq, vcmpuq and xvtlsbb BF field
These shouldn't be optional.  The record form of vector instructions
set CR6, giving an expectation that omitting BF should be the same as
specifying CR6.

opcodes/
	* ppc-opc.c (powerpc_opcodes): Replace OBF with BF for vcmpsq,
	vcmpuq and xvtlsbb.
gas/
	* testsuite/gas/ppc/int128.s: Correct vcmpuq.
	* testsuite/gas/ppc/int128.d: Update.
	* testsuite/gas/ppc/xvtlsbb.d: Update.

(cherry picked from commit 18a8a00ebe)
2020-09-24 12:14:43 +09:30
Alan Modra
f26bb6247b Implement missing powerpc extended mnemonics
gas/
	* testsuite/gas/ppc/power8.d,
	* testsuite/gas/ppc/power8.s: Add miso.
	* testsuite/gas/ppc/power9.d,
	* testsuite/gas/ppc/power8.s: Add exser, msgsndu, msgclru.
opcodes/
	* ppc-opc.c (powerpc_opcodes): Add exser, msgsndu, msgclru.
	Enable icbt for power5, miso for power8.

(cherry picked from commit 8b2742a156)
2020-09-24 12:14:43 +09:30
Alan Modra
904570fe6c Prioritise mtfprd and mtvrd over mtvsrd in PowerPC disassembly
gas/
	* testsuite/gas/ppc/power8.d: Update.
	* testsuite/gas/ppc/vsx2.d: Update.
opcodes/
	* ppc-opc.c (powerpc_opcodes): Prioritise mtfprd and mtvrd over
	mtvsrd, and similarly for mfvsrd.

(cherry picked from commit 5fbec329ec)
2020-09-24 12:14:43 +09:30
Alan Modra
08ec0947d2 Error on lmw, lswi and related PowerPC insns when LE
* config/tc-ppc.c (md_assemble): Error for lmw, stmw, lswi, lswx,
	stswi, or stswx in little-endian mode.
	* testsuite/gas/ppc/476.d,
	* testsuite/gas/ppc/476.s: Delete lmw, stmw, lswi, lswx, stswi, stswx.
	* testsuite/gas/ppc/a2.d,
	* testsuite/gas/ppc/a2.s: Move lmw, stmw, lswi, lswx, stswi, stswx..
	* testsuite/gas/ppc/be.d,
	* testsuite/gas/ppc/be.s: ..to here, new big-endian only test.
	* testsuite/gas/ppc/le_error.d,
	* testsuite/gas/ppc/le_error.l: New little-endian test.
	* testsuite/gas/ppc/ppc.exp: Run new tests.

(cherry picked from commit 86c0f617ac)
2020-09-24 12:14:42 +09:30
Nick Clifton
7e46a74aa3 2.35.1 point release 2020-09-19 11:36:14 +01:00
Nick Clifton
4dce688b93 Import patch from mainline: 2020-09-15 Nick Clifton <nickc@redhat.com>
* read.c (s_nop): Preserve the input_line_pointer around the call
	to md_assemble.
	* config/tc-s12z.c (md_assemble): Revert previous delta.
2020-09-19 08:16:20 +01:00
David Faust
538c131ec2 Use the correct no-op ocode for the BPF assembler.
* config/tc-bpf.h (md_single_noop_insn): Use 'ja 0' for no-op.
2020-09-17 10:42:57 +01:00
Nick Clifton
23f268a023 Add support to the assembler for a ".nop" directive which inserts a single no-op instruction.
Import from mainline:
	2020-09-14  Nick Clifton  <nickc@redhat.com>

	* read.c (s_nop): New function.  Handles the .nop directive.
	(potable): Add entry for "nop".
	(s_nops): Code tidy.
	* read.h (s_nop): Add prototype.
	* config/tc-bpf.h (md_single_noop_insn): Define.
	* config/tc-mmix.h (md_single_noop_insn): Define.
	* config/tc-or1k.h (md_single_noop_insn): Define.
	* config/tc-ia64.h (md_single_noop_insn): Define.
	* write.c (relax_segment): Update error message regarding
	non-absolute values passed to .fill and .nops.
	* NEWS: Mention the new directive.
	* doc/as.texi: Document the new directive.
	* doc/internals.texi: Document the new internal macros used to
	implement the new directive.
	* testsuite/gas/all/nop.s: New test.
	* testsuite/gas/all/nop.d: New test control file.
	* testsuite/gas/all/gas.exp: Run the new test.
	* testsuite/gas/elf/dwarf-5-nop-for-line-table.s: New test.
	* testsuite/gas/elf/dwarf-5-nop-for-line-table.d: New test
	control file.
	* testsuite/gas/elf/elf.exp: Run the new test.
	* testsuite/gas/i386/space1.l: Adjust expected output.
2020-09-15 10:27:50 +01:00
Mark Wielaard
bb4799e9b7 gas: Don't error when .debug_line already exists, unless .loc was used
When -g was used to generate DWARF gas would error out when a .debug_line
already exists. But when a .debug_info section already exists it would
simply skip generating one without warning or error. Do the same for
.debug_line. It is only an error when the user explicitly uses .loc
directives and also generates the .debug_line table itself.

The tests are unfortunately arch specific because the line table is only
generated when actual instructions have been emitted. Use i386 because
that is probably the most used architecture. Before this patch the new
dwarf-line-2 testcase would fail, with this patch it succeeds (and doesn't
try to add its own line table).

gas/ChangeLog:

    * as.texi (-g): Explicitly mention when .debug_info and .debug_line
    are generated for the DWARF format.
    (Loc): Add that it is an error to both use a .loc directive and
    generate a .debug_line yourself.
    * dwarf2dbg.c (dwarf2_any_loc_directive_seen): New static variable.
    (dwarf2_directive_loc): Set dwarf2_any_loc_directive_seen to TRUE.
    (dwarf2_finish): Check dwarf2_any_loc_directive_seen before emitting
    an error. Only create .debug_line if it is empty (or doesn't exist).
    * testsuite/gas/i386/i386.exp: Add dwarf2-line-{1,2,3,4} when testing
    an elf target.
    * testsuite/gas/i386/dwarf2-line-{1,2,3,4}.{s,d,l}: New test files.
2020-09-15 00:31:03 +02:00
Mark Wielaard
b5693f7d5c gas: Output directory and file names in .debug_line_str for DWARF5
* dwarf2dbg.c (add_line_strp): New function.
	(out_dir_and_file_list): Take line_seg and sizeof_offset as
	arguments, Use DW_FORM_line_strp for dir and file. Call
	add_line_strp and set symbol offset for DWARF2_LINE_VERSION 5.
	(out_debug_line): Call out_dir_and_file_list with line_seg and
	sizeof_offset.
	* gas/testsuite/gas/elf/dwarf-5-file0.d: Expect indirect line
	strings.
2020-09-15 00:30:22 +02:00
Mark Wielaard
fe148fc964 gas: Output .debug_rnglists for DWARF 5.
* dwarf2dbg.c (DWARF2_RNGLISTS_VERSION): New constant.
	(out_debug_ranges): Add ranges_sym argument and set it.
	(out_debug_rnglists): New function.
	(out_debug_info): Change ranges_seg argument to ranges_sym
	and use it to set DW_AT_ranges value.
	(dwarf2_finish): Remove ranges_seg, add ranges_sym. For
	DWARF2_VERSION 5 call out_debug_rnglists.
2020-09-15 00:29:38 +02:00
Mark Wielaard
3a7d446f10 gas: Make sure to only add an md5 to a .file when requested.
* dwarf2dbg.c (dwarf2_directive_filename): Initialize with_md5 to
	FALSE.
	* gas/testsuite/gas/elf/dwarf-5-file0.s: Add a random bignum.
2020-09-15 00:25:33 +02:00
Mark Wielaard
1e9cc65075 gas: Use DW_FORM_sec_offset for DWARF version 4 or higher.
Older DWARF versions used DW_FORM_data4 or DW_FORM_data8 for offsets
into sections for e.g. DW_AT_stmt_list ot DW_AT_ranges. But version 4
introduced a dedicated form for such section offsets. Make sure to emit
the proper form for newer DWARF versions.

gas/ChangeLog:

	* dwarf2dbg.c (out_debug_abbrev): Use DW_FORM_sec_offset for DWARF
	version 4 or higher.
2020-09-15 00:24:50 +02:00
Mark Wielaard
a2afee4a2c gas: Handle bad -gdwarf options, just like bad --gdwarf options.
parse_args uses getopt_long_only so it can handle long options both
with double and single dash. But this means that some single dash
options like -gdwarf-1 don't generate an error (unlike --gdwarf-1).

This is especially confusing since there is also --gdwarf2, but no
--gdwarf4 (it is --gdwarf-4). When giving -gdwarf4 the option is
silently interpreted as -g (which set dwarf_version to 2). This causes
some confusion for people who don't expect this and suddenly get
DWARF2 instead of DWARF4 as they might expect.

So make it so that the -gdwarf<unknown> creates an error, just like
--gdwarf<unknown> would.
2020-09-15 00:24:09 +02:00
Jose E. Marchesi
b801c1a41f bpf: add xBPF ISA
This patch adds support for xBPF, another ISA targetting the BPF
virtual architecture. For now, the primary difference between eBPF
and xBPF is that xBPF supports indirect calls through the
'call %reg' form of the call instruction.

bfd/
	* archures.c (bfd_mach_xbpf): Define.
	* bfd-in2.h: Regenerate.
	* cpu-bpf.c (bfd_xbpf_arch) New.
	(bfd_bpf_arch) Update next in list field to point to xbpf arch.

cpu/
	* bpf.cpu (arch bpf): Add xbpf mach and isas.
	(define-xbpf-isa) New pmacro.
	(all-isas) Add xbpfle,xbpfbe.
	(endian-isas): New pmacro.
	(mach xbpf): New.
	(model xbpf-def): Likewise.
	(h-gpr): Add xbpf mach.
	(f-dstle, f-srcle, dstle, srcle): Add xbpfle isa.
	(f-dstbe, f-srcbe, dstbe, srcbe): Add xbpfbe isa.
	(define-alu-insn-un): Use new endian-isas pmacro.
	(define-alu-insn-bin, define-alu-insn-mov): Likewise.
	(define-endian-insn, define-lddw): Likewise.
	(dlind, dxli, dxsi, dsti): Likewise.
	(define-cond-jump-insn, define-call-insn): Likewise.
	(define-atomic-insns): Likewise.

gas/
	* config/tc-bpf.c: Add option -mxbpf to select xbpf isa.
	* testsuite/gas/bpf/indcall-1.d: New file.
	* testsuite/gas/bpf/indcall-1.s: Likewise.
	* testsuite/gas/bpf/indcall-bad-1.l: Likewise.
	* testsuite/gas/bpf/indcall-bad-1.s: Likewise.
	* testsuite/gas/bpf/bpf.exp: Run new tests.

opcodes/
	* bpf-desc.c: Regenerate.
	* bpf-desc.h: Likewise.
	* bpf-opc.c: Likewise.
	* bpf-opc.h: Likewise.
	* disassemble.c (disassemble_init_for_target): Set bits for xBPF
	ISA when appropriate.

(cherry picked from commit 4449c81a85)
2020-08-26 15:46:09 +02:00
Nick Clifton
3b38ef6c31 Backport patches from the mainline to fix bugs in the assembler's support for DWARF-5.
2020-08-04  Mark Wielaard  <mark@klomp.org>

	* dwarf2dbg.c (out_debug_abbrev): When DWARF2_VERSION >= 4, use
	DW_FORM_udata for DW_AT_high_pc.
	(out_debug_info): Use emit_leb128_expr for DW_AT_high_pc, when
	DWARF2_VERSION >= 4.
	* read.c (emit_leb128_exp): No longer static.
	* read.h (emit_leb128_exp): Define.

	2020-08-02  Mark Wielaard  <mark@klomp.org>

	* gas/dwarf2dbg.c (out_dir_and_file_list): For DWARF5 emit at
	least one directory if there is at least one file. Use dirs[1]
	if dirs[0] is not set, or if there is no dirs[1] the current
	working directory. Use files[1] filename, when files[0] filename
	isn't set.

	2020-08-02  Mark Wielaard  <mark@klomp.org>

	* dwarf2dbg.c (out_debug_info): Emit unit type and abbrev offset
	for DWARF5.
	* gas/testsuite/gas/elf/dwarf-4-cu.d: New file.
	* gas/testsuite/gas/elf/dwarf-4-cu.s: Likewise.
	* gas/testsuite/gas/elf/dwarf-5-cu.d: Likewise.
	* gas/testsuite/gas/elf/dwarf-5-cu.s: Likewise.
	* testsuite/gas/elf/elf.exp: Run dwarf-4-cu and dwarf-5-cu.
2020-08-25 14:00:42 +01:00
Peter Bergner
bf8e6edd57 PowerPC: Rename xvcvbf16sp to xvcvbf16spn
The xvcvbf16sp mnemonic has been renamed to xvcvbf16spn, to be consistent
with the other non-signaling conversion instructions which all end with "n".

opcodes/
	Backported from master:
	2020-08-18  Peter Bergner  <bergner@linux.ibm.com>

	* ppc-opc.c (powerpc_opcodes) <xvcvbf16sp>: Rename from this...
	<xvcvbf16spn>: ...to this.

gas/
	Backported from master:
	2020-08-18  Peter Bergner  <bergner@linux.ibm.com>

	* testsuite/gas/ppc/vsx4.s: Update test to use new mnemonic.
	* testsuite/gas/ppc/vsx4.d: Likewise.

(cherry picked from commit f5fc30d05c)
2020-08-18 12:59:26 -05:00
Joe Ramsay
a79ea4cd16 Arm: Fix IT-predicated MVE vcvt
This patch fixes an incorrect parsing of vcvtne for MVE. Even when it appeared
in an IT block, vcvtne would be parsed as a VPT-predicated vcvtn, instead of an
IT-predicated vcvt. This change extends the existing handling of MVE vcvt to
properly account for IT predication.

gas/ChangeLog:

2020-08-13  Joe Ramsay  <joe.ramsay@arm.com>

	Backported from master
	2020-08-04  Joe Ramsay <joe.ramsay@.arm.com>

	* config/tc-arm.c (do_neon_cvt_1): Parse vcvtne as vcvt-ne for
	NS_FD shape when MVE is present
	* testsuite/gas/arm/mve-vcvtne-it-bad.d: New test.
	* testsuite/gas/arm/mve-vcvtne-it-bad.l: New test.
	* testsuite/gas/arm/mve-vcvtne-it-bad.s: New test.
	* testsuite/gas/arm/mve-vcvtne-it.d: New test.
	* testsuite/gas/arm/mve-vcvtne-it.s: New test.
2020-08-14 08:12:40 +01:00
Nick Clifton
6ef598a264 Remove spurious text in changelog entry 2020-08-12 11:28:52 +01:00
H.J. Lu
e2b81f7fcf gas/NEWS: Mention {disp16} pseudo prefix
* NEWS: Mention {disp16} pseudo prefix.

(cherry picked from commit 789198ca95)
2020-08-04 06:00:37 -07:00
H.J. Lu
c74f463281 x86: Add {disp16} pseudo prefix
Use Prefix_XXX for pseudo prefixes.  Add {disp16} pseudo prefix and
replace {disp32} pseudo prefix with {disp16} in 16-bit mode test.
Check invalid {disp16}/{disp32} pseudo prefixes.

gas/

	PR gas/26305
	* config/tc-i386.c (_i386_insn::disp_encoding): Add
	disp_encoding_16bit.
	(parse_insn): Check Prefix_XXX for pseudo prefixes.  Handle
	{disp16}.
	(build_modrm_byte): Handle {disp16}.
	(i386_index_check): Check invalid {disp16} and {disp32} pseudo
	prefixes.
	* doc/c-i386.texi: Update {disp32} documentation and document
	{disp16}.
	* testsuite/gas/i386/i386.exp: Run x86-64-inval-pseudo.
	* testsuite/gas/i386/inval-pseudo.s: Add {disp32}/{disp16}
	tests.
	* testsuite/gas/i386/pseudos.s: Add {disp8}/{disp32} vmovaps
	tests with 128-byte displacement.  Add {disp16} tests.
	* testsuite/gas/i386/x86-64-pseudos.s: Add {disp8}/{disp32}
	vmovaps test.  Add (%r13)/(%r13d) tests.
	* testsuite/gas/i386/x86-64-inval-pseudo.l: New file.
	* testsuite/gas/i386/x86-64-inval-pseudo.s: Likewise.
	* testsuite/gas/i386/inval-pseudo.l: Updated.
	* testsuite/gas/i386/pseudos.d: Likewise.
	* testsuite/gas/i386/x86-64-pseudos.d: Likewise.

opcodes/

	PR gas/26305
	* i386-opc.h (Prefix_Disp8): New.
	(Prefix_Disp16): Likewise.
	(Prefix_Disp32): Likewise.
	(Prefix_Load): Likewise.
	(Prefix_Store): Likewise.
	(Prefix_VEX): Likewise.
	(Prefix_VEX3): Likewise.
	(Prefix_EVEX): Likewise.
	(Prefix_REX): Likewise.
	(Prefix_NoOptimize): Likewise.
	* i386-opc.tbl: Use Prefix_XXX on pseudo prefixes.  Add {disp16}.
	* i386-tbl.h: Regenerated.

(cherry picked from commit 41eb8e8885)
2020-08-04 05:44:17 -07:00
Nick Clifton
d085d01b69 Default to DWARF level 3 in the assembler.
* as.c (dwatf_level): Default to level 3 in case version is not
	set on the command line.
2020-07-30 15:00:38 +01:00
Nick Clifton
6347a63b19 Default to DWARF level 4 in the assembler.
* as.c (dwatf_level): Default to level 4 in case version is not
   set on the command line.
2020-07-30 08:45:04 +01:00
H.J. Lu
2cd5bade18 x86: Handle {disp32} for (%bp)/(%ebp)/(%rbp)
Since (%bp)/(%ebp)/(%rbp) are encoded as 0(%bp)/0(%ebp)/0(%rbp), use
disp32/disp16 on 0(%bp)/0(%ebp)/0(%rbp) for {disp32}.

Note: Since there is no disp32 on 0(%bp), use disp16 instead.

	PR gas/26305
	* config/tc-i386.c (build_modrm_byte): Use disp32/disp16 on
	(%bp)/(%ebp)/(%rbp) for {disp32}.
	* doc/c-i386.texi: Update {disp32} documentation.
	* testsuite/gas/i386/pseudos.s: Add (%bp)/(%ebp) tests.
	* testsuite/gas/i386/x86-64-pseudos.s: Add (%ebp)/(%rbp) tests.
	* testsuite/gas/i386/pseudos.d: Updated.
	* testsuite/gas/i386/x86-64-pseudos.d: Likewise.

(cherry picked from commit 1a02d6b0ff)
2020-07-28 04:04:34 -07:00
Nick Clifton
279745e566 Set version to 2.35.0 and enable development 2020-07-24 12:05:01 +01:00
Nick Clifton
2cb5c79dad 2.35 Release 2020-07-24 10:36:01 +01:00
H.J. Lu
52da8d36c6 x86: Change PLT32 reloc against section to PC32
Commit 292676c1 resolved PLT32 reloc aganst local symbol to section.
Since PLT32 relocation must be against symbols, turn such PLT32
relocation into PC32 relocation.

gas/

	PR gas/26263
	* config/tc-i386.c (i386_validate_fix): Change PLT32 reloc
	against section to PC32 reloc.
	* testsuite/gas/i386/relax-5.d: Updated.
	* testsuite/gas/i386/x86-64-relax-4.d: Likewise.

ld/

	PR gas/26263
	* testsuite/ld-i386/i386.exp: Run PR gas/26263 test.
	* testsuite/ld-x86-64/x86-64.exp: Likewise.
	* testsuite/ld-i386/pr26263.d: New file.
	* testsuite/ld-x86-64/pr26263.d: Likewise.
	* testsuite/ld-x86-64/pr26263.s: Likewise.

(cherry picked from commit 2585b7a5ce)
2020-07-19 11:30:20 -07:00
H.J. Lu
ae310391c7 x86: Don't display eiz with no scale
Change

67 48 8b 1c 25 ef cd ab 89 	mov    0x89abcdef(,%eiz,1),%rbx

to

67 48 8b 1c 25 ef cd ab 89 	mov    0x89abcdef,%rbx

in AT&T syntax and

67 48 8b 1c 25 ef cd ab 89 	mov    rbx,QWORD PTR [eiz*1+0x89abcdef]

to

67 48 8b 1c 25 ef cd ab 89 	mov    rbx,QWORD PTR ds:0x89abcdef

in Intel syntax.

gas/

	PR gas/26237
	* testsuite/gas/i386/evex-no-scale-64.d: Updated.
	* testsuite/gas/i386/addr32.d: Likewise.
	* testsuite/gas/i386/x86-64-addr32-intel.d: Likewise.
	* testsuite/gas/i386/x86-64-addr32.d: Likewise.

opcodes/

	PR gas/26237
	* i386-dis.c (OP_E_memory): Don't display eiz with no scale
	without base nor index registers.

(cherry picked from commit 04c662e2b6)
2020-07-15 07:18:49 -07:00
H.J. Lu
b3239a5e9e x86-64: Zero-extend lower 32 bits displacement to 64 bits
Since the addr32 (0x67) prefix zero-extends the lower 32 bits address to
64 bits, change disassembler to zero-extend the lower 32 bits displacement
to 64 bits when there is no base nor index registers.

gas/

	PR gas/26237
	* testsuite/gas/i386/addr32.s: Add tests for 32-bit wrapped around
	address.
	* testsuite/gas/i386/x86-64-addr32.s: Likewise.
	* testsuite/gas/i386/addr32.d: Updated.
	* testsuite/gas/i386/x86-64-addr32-intel.d: Likewise.
	* testsuite/gas/i386/x86-64-addr32.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-addr32-intel.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-addr32.d: Likewise.

opcodes/

	PR gas/26237
	* i386-dis.c (OP_E_memory): Without base nor index registers,
	32-bit displacement to 64 bits.

(cherry picked from commit 8e58ef803c)
2020-07-15 07:18:45 -07:00
H.J. Lu
ed0e8aece0 x86: Remove 32-bit sign extension in offset_in_range
When encoding a 32-bit offset, there is no need to sign-extend it to 64
bits since only the lower 32 bits are used.

	PR gas/26237
	* config/tc-i386.c (offset_in_range): Remove 32-bit sign
	extension.

(cherry picked from commit 7a70531559)
2020-07-15 07:15:33 -07:00
Nick Clifton
2952e9275c Fix the generation of REL relocs for missing build notes.
* write.c (create_note_reloc): Add desc2_size parameter.  Zero out
	the addend field of REL relocations.  Store the full addend into
	the note for REL relocations.
2020-07-15 12:53:59 +01:00
Nick Clifton
a0af250a0e Updated French translation for the gas/ and binutils/ sub-directories 2020-07-13 14:48:15 +01:00
H.J. Lu
171ee0dc14 x86: Remove an incorrect AVX2 entry
The upper 16 vector registers were added by AVX512.

	PR gas/26212
	* doc/c-i386.texi: Remove an incorrect AVX2 entry.

(cherry picked from commit dbdba9b04d)
2020-07-07 05:55:39 -07:00
Nick Clifton
b3eaec43b9 Updated translations for various binutils sub-directories 2020-07-06 10:40:44 +01:00
Nick Clifton
d63813ff85 Set version to 2.34.90 and regenerate files 2020-07-04 10:41:03 +01:00
Nick Clifton
b115b9fd3c Add markers for binutils 2.35 branch 2020-07-04 10:16:22 +01:00
Alan Modra
b657622c3e Re: Change readelf's display of symbol names
Fixes some fallout from git commit 0942c7ab94.

	PR 26028
gas/
	* testsuite/gas/ia64/unwind-ilp32.d: Add -T to readelf options.
gold/
	* testsuite/Makefile.am (file_in_many_sections.stdout): Add -W
	to readelf options.
	* testsuite/Makefile.in: Regenerate.
ld/
	* testsuite/ld-arm/arm-elf.exp (vxworks1): Pass --wide to readelf
	when dumping relocs.
	* testsuite/ld-i386/i386.exp (vxworks1): Likewise.
	* testsuite/ld-sh/sh-vxworks.exp (vxworks1): Likewise.
	* testsuite/ld-sparc/sparc.exp (vxworks1): Likewise.
	* testsuite/ld-arm/vxworks1.rd: Adjust to suit.
	* testsuite/ld-i386/vxworks1.rd: Adjust.
	* testsuite/ld-sh/vxworks1.rd: Adjust.
	* testsuite/ld-sparc/vxworks1.rd: Adjust.
2020-07-03 17:15:16 +09:30
H.J. Lu
c2ecccb33c x86: Add SwapSources
We check register-only source operand to decide if two source operands of
VEX encoded instructions should be swapped.  But source operands in AMX
instructions with two source operands swapped are all register-only
operand.  Add SwapSources to indicate two source operands should be
swapped.

gas/

	* config/tc-i386.c (build_modrm_byte): Check vexswapsources to
	swap two source operands.

opcodes/

	* i386-gen.c (opcode_modifiers): Add VexSwapSources.
	* i386-opc.h (VexSwapSources): New.
	(i386_opcode_modifier): Add vexswapsources.
	* i386-opc.tbl: Add VexSwapSources to BMI2 and BMI instructions
	with two source operands swapped.
	* i386-tbl.h: Regenerated.
2020-07-02 08:46:48 -07:00
Nick Clifton
f436f38e7d Skip fill-1 gas test for MeP targets.
* testsuite/gas/all/fill-1.d: Skip for MeP targets.
2020-07-02 14:08:16 +01:00
Alex Coplan
f405494f21 aarch64: Fix segfault on unicode symbols
This patch fixes a segfault which occurs when the AArch64 backend parses
a symbol operand that begins with a register name and ends with a
unicode byte (byte value > 127).

For example, the following input causes the crash:

x0é: udf x0é

gas/ChangeLog:

2020-07-02  Alex Coplan  <alex.coplan@arm.com>

	* config/tc-aarch64.c (reg_name_p): Fix cast so that we don't
	segfault on negative chars.
	* testsuite/gas/aarch64/reglike-label-unicode-segv.d: New test.
	* testsuite/gas/aarch64/reglike-label-unicode-segv.s: Input.
2020-07-02 13:53:07 +01:00
Nick Clifton
0942c7ab94 Change readelf's display of symbol names (when not in --wide mode) so that if they are going to be truncated then "[...]" is displayed at the end. Add a comment line option to disable this enhancement and restore the old behaviour.
PR 26028
binutils* readelf.c (print_symbol): Handle truncation of symbol names.
	(options): Add -T/--silent-truncation option.
	(parse_args): Handle the option.
	(print_dynamic_symbol): Correct calculation of width available to
	display symbol name.
	* doc/binutils.texi: Document the -T option to readelf.
	* NEWS: Mention the new feature.

gas	* testsuite/gas/ia64/group-2.d: Add -T option to readelf
	command line.
	* testsuite/gas/ia64/unwind.d: Likewise.
	* testsuite/gas/mmix/bspec-1.d: Likewise.
	* testsuite/gas/mmix/bspec-2.d: Likewise.
	* testsuite/gas/mmix/comment-1.d: Likewise.
	* testsuite/gas/tic6x/scomm-directive-4.d: Likewise.

ld	* testsuite/ld-powerpc/powerpc.exp: Add -T option to readelf
	command line when running some tests.
	* testsuite/ld-arm/arm-elf.exp: Likewise.
	* testsuite/ld-mips-elf/mips-elf.exp: Likewise.
	* testsuite/ld-mmix/local1.d: Likewise.
	* testsuite/ld-mmix/local3.d: Likewise.
	* testsuite/ld-mmix/local5.d: Likewise.
	* testsuite/ld-mmix/local7.d: Likewise.
	* testsuite/ld-powerpc/powerpc.exp: Likewise.
2020-07-02 11:30:52 +01:00