Commit Graph

95459 Commits

Author SHA1 Message Date
H.J. Lu
606cc04085 x86: Check non-WIG EVEX instruction encoding with -mevexwig=1
Verify that -mevexwig=1 has no impact on non-WIG EVEX instruction encoding.

	PR gas/23642
	* testsuite/gas/i386/evex-wig2.d: New file.
	* testsuite/gas/i386/evex-wig2.s: Likewise.
	* testsuite/gas/i386/x86-64-evex-wig2.d: Likewise.
	* testsuite/gas/i386/x86-64-evex-wig2.s: Likewise.
	* testsuite/gas/i386/i386.exp: Run evex-wig2 and
	x86-64-evex-wig2.
2018-09-14 12:21:19 -07:00
H.J. Lu
6865c0435a x86: Support VEX/EVEX WIG encoding
Add VEXWIG, defined as 3, to indicate that the VEX.W/EVEX.W bit is
ignored by such VEX/EVEX instructions, aka WIG instructions.  Set
VexW=3 on VEX/EVEX WIG instructions.  Update assembler to check
VEXWIG when setting the VEX.W bit.

gas/

	PR gas/23642
	* config/tc-i386.c (build_vex_prefix): Check VEXWIG when setting
	the VEX.W bit.
	(build_evex_prefix): Check VEXWIG when setting the EVEX.W bit.

opcodes/

	PR gas/23642
	* i386-opc.h (VEXWIG): New.
	* i386-opc.tbl: Set VexW=3 on VEX/EVEX WIG instructions.
	* i386-tbl.h: Regenerated.
2018-09-14 12:20:10 -07:00
H.J. Lu
70df6fc9bc x86: Handle unsupported static rounding in vcvt[u]si2sd in 32-bit mode
Update x86 disassembler to handle the unsupported static rounding in
vcvt[u]si2sd in 32-bit mode.

gas/

	PR binutils/23655
	* testsuite/gas/i386/evex.d: Updated.

opcodes/

	PR binutils/23655
	* i386-dis-evex.h: Replace EXxEVexR with EXxEVexR64 for
	vcvtsi2sd%LQ and vcvtusi2sd%LQ.
	* i386-dis.c (EXxEVexR64): New.
	(evex_rounding_64_mode): Likewise.
	(OP_Rounding): Handle evex_rounding_64_mode.
2018-09-14 11:25:13 -07:00
H.J. Lu
d20dee9efa x86: Properly decode EVEX.W in vcvt[u]si2s[sd] in 32-bit mode
Update x86 disassembler to ignore the EVEX.W bit in EVEX vcvt[u]si2s[sd]
instructions in 32-bit mode.

gas/

	PR binutils/23655
	* testsuite/gas/i386/evex.d: New file.
	* testsuite/gas/i386/evex.s: Likewise.
	* testsuite/gas/i386/i386.exp: Run evex.

opcodes/

	PR binutils/23655
	* i386-dis-evex.h (evex_table): Replace Eq with Edqa for
	vcvtsi2ss%LQ, vcvtsi2sd%LQ, vcvtusi2ss%LQ and vcvtusi2sd%LQ.
	* i386-dis.c (Edqa): New.
	(dqa_mode): Likewise.
	(intel_operand_size): Handle dqa_mode as m_mode.
	(OP_E_register): Handle dqa_mode as dq_mode.
	(OP_E_memory): Set shift for dqa_mode based on address_mode.
2018-09-14 10:49:53 -07:00
H.J. Lu
5074ad8a66 i386: Reformat OP_E_memory
* i386-dis.c (OP_E_memory): Reformat.
2018-09-14 06:53:48 -07:00
Tom Tromey
b4b08fa2aa Remove an unnecessary block in call_function_by_hand_dummy
I noticed that call_function_by_hand_dummy has a block that only
exists to declare a variable, like:

    {
      int i;
      for (i = ...0)
	...
    }

This patch removes the unnecessary and the extra indentation by moving
the declaration into the "for".

gdb/ChangeLog
2018-09-14  Tom Tromey  <tom@tromey.com>

	* infcall.c (call_function_by_hand_dummy): Remove unnecessary
	block.
2018-09-14 07:11:50 -06:00
Lifang Xia
fe75f42ee1 csky: Support PC relative diff relocation
Define DIFF_EXPR_OK to Support PC relative diff relocation,
and add CKCORE_PCREL32 relocation process

bfd/
        * elf32-csky.c (csky_elf_howto_table): Fill special_function of
        R_CKCORE_PCREL32.
        (csky_elf_relocate_section): Add R_CKCORE_PCREL32 process.
gas/
        * config/tc-csky.c (md_apply_fix): Transmit
        BFD_RELOC_32_PCREL to BFD_RELOC_CKCORE_PCREL32.
        (tc_gen_reloc): Trasmit BFD_RELOC_CKCORE_ADDR32 to
        BFD_RELOC_CKCORE_PCREL32 while pc-relative.
        * config/tc-csky.h (DIFF_EXPR_OK): Define to enable PC relative
        diff relocs.
2018-09-14 21:04:47 +08:00
Tom Tromey
87b240d485 Make variable in get_startup_shell non-static
I noticed that a variable in get_startup_shell is "static".  However,
I couldn't see any reason it ought to be, so this removes the
"static".

gdb/ChangeLog
2018-09-14  Tom Tromey  <tom@tromey.com>

	* nat/fork-inferior.c (get_startup_shell): Remove "static".
2018-09-14 06:49:13 -06:00
Alan Modra
1fcd7e871c PR23633 testcase fix
PR binutils/23633
	* testsuite/binutils-all/pr23633.d: Don't fail when assembler
	generates sections other than .text.
2018-09-14 21:21:40 +09:30
Alan Modra
a4cd947aca PR23425, unresolved symbol diagnostic
dwarf2.c code reasonably assumes that debug info is local to a file,
an assumption now violated by gcc, resulting in "DWARF error: invalid
abstract instance DIE ref" or wrong details when attempting to print
linker error messages with file, function and line reported.

This is because find_abstract_instance is only prepared to handle
DW_FORM_ref_addr when the .debug_info section referenced is in the
current file.  When that isn't the case, relocations to access another
file's .debug_info will typically be against a symbol defined at the
start of that .debug_info section, plus an addend.  Since the dwarf2.c
code only considers the current file's debug info, that symbol will be
undefined, resolving to zero.  In effect the ref_addr will wrongly
resolve to the current file's .debug_info.

This patch avoids the problem by treating relocations in debug
sections against undefined symbols in a similar manner to the way
relocations against symbols defined in discarded sections are
resolved.  They result in a zero value (except in .debug_ranges)
regardless of the addend.

	PR 23425
	* reloc.c (bfd_generic_get_relocated_section_contents): Zero reloc
	fields in debug sections when reloc is against an undefined symbol
	and called from bfd_simple_get_relocated_section_contents or
	similar.
	* dwarf2.c (find_abstract_instance): Return true for zero offset
	DW_FORM_ref_addr without returning values.
2018-09-14 21:21:28 +09:30
Jan Beulich
556059dd13 x86: fold CRC32 templates
Just like other insns having byte and word forms, these can also make
use of the W modifier, which at the same time allows simplifying some
other code a little bit.
2018-09-14 11:21:15 +02:00
Alan Hayward
bf32645253 Testsuite: Add gdb_simple_compile
Simplfy gdb.exp by adding a function that will attempt to
compile a piece of code, then clean up, leaving the created
object.

gdb/testsuite

        * lib/gdb.exp (gdb_simple_compile): Add proc.
        (is_elf_target): Use gdb_simple_compile.
        (skip_altivec_tests): Likewise.
        (skip_vsx_tests): Likewise.
        (skip_tsx_tests): Likewise.
        (skip_btrace_tests): Likewise.
        (skip_btrace_pt_tests): Likewise.
        (gdb_can_simple_compile): Likewise.
        (gdb_has_argv0): Likewise.
        (gdb_target_symbol_prefix): Likewise.
        (target_supports_scheduler_locking): Likewise.
2018-09-14 09:56:52 +01:00
GDB Administrator
ca5f750004 Automatic date update in version.in 2018-09-14 00:00:32 +00:00
Tom Tromey
2361b0fb1d Generate more tags in gdb/testsuite/Makefile
I noticed that the TAGS target in gdb/testsuite/Makefile does not pick
up Tcl procs defined with proc_with_prefix or gdb_caching_proc.  This
patch fixes this by updating the regexp.

Tested in Emacs.

gdb/testsuite/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	* Makefile.in (TAGS): Recognize proc_with_prefix and
	gdb_caching_proc.
2018-09-13 16:30:48 -06:00
Tom Tromey
7d2215128b Make infpy_thread_from_thread_handle static
I noticed that infpy_thread_from_thread_handle is not static, but
should be.  This patch changes it.

gdb/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	* python/py-inferior.c (infpy_thread_from_thread_handle): Now
	static.
2018-09-13 16:23:52 -06:00
Tom Tromey
97e67fc620 Remove cleanup from try_open_exec_file
This removes a cleanup from try_open_exec_file, using std::string to
manage the storage instead.

gdb/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	* exec.c (try_open_exec_file): Use std::string.
2018-09-13 16:22:34 -06:00
Tom Tromey
803c08d083 Return std::string from gdb_bfd_errmsg
This changes gdb_bfd_errmsg to return a std::string, removing a
cleanup.  This approach may be slightly less efficient than the
previous code, but I don't believe this is very important in this
situation.

gdb/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	* utils.h (gdb_bfd_errmsg): Return std::string.
	* exec.c (exec_file_attach): Update.
	* compile/compile-object-load.c (compile_object_load): Update.
	* utils.c (gdb_bfd_errmsg): Return std::string.
2018-09-13 16:22:34 -06:00
Tom Tromey
5b4cbbe357 Remove cleanup from procfs.c
This removes the last remaining cleanup from procfs.c, replacing it
with a unique_ptr specialization.

gdb/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	* procfs.c (struct procinfo_deleter): New.
	(procinfo_up): New typedef.
	(do_destroy_procinfo_cleanup): Remove.
	(procfs_target::info_proc): Use procinfo_up.  Remove cleanups.
2018-09-13 16:22:33 -06:00
Tom Tromey
db68fbe2f9 Remove cleanup from add_path
This removes a cleanup from add_path, replacing it with a use of
gdb::unique_xmalloc_ptr.  Note that this declaration had to be hoisted
somewhat, to avoid inteference from the "goto"s in this function.

gdb/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	* source.c (add_path): Use gdb::unique_xmalloc_ptr.
2018-09-13 16:22:33 -06:00
Simon Marchi
74d3fbbb3e python: Fix erroneous doc about gdb.objfiles()
The code implementing gdb.objfiles() returns a list of objfiles for the
current program space (the program space of the selected inferior).  The
documentation for the gdb.objfiles() Python method, however, states:

    Return a sequence of all the objfiles current known to GDB.

That sounds wrong to me.  I tried to phrase to be more precise.

gdb/doc/ChangeLog:

	* python.texi (Objfiles In Python): Update gdb.objfiles() doc.
2018-09-13 15:43:33 -04:00
Simon Marchi
0ae1a3211a python: Add Progspace.objfiles method
This patch adds an objfiles method to the Progspace object, which
returns a sequence of the objfiles associated to that program space.  I
chose a method rather than a property for symmetry with gdb.objfiles().

gdb/ChangeLog:

	* python/py-progspace.c (PSPY_REQUIRE_VALID): New macro.
	(pspy_get_objfiles): New function.
	(progspace_object_methods): New.
	(pspace_object_type): Add tp_methods callback.
	* python/python-internal.h (build_objfiles_list): New
	declaration.
	* python/python.c (build_objfiles_list): New function.
	(gdbpy_objfiles): Implement using build_objfiles_list.
	* NEWS: Mention the Progspace.objfiles method.

gdb/doc/ChangeLog:

	* python.texi (Program Spaces In Python): Document the
	Progspace.objfiles method.
	(Objfiles In Python): Mention that gdb.objfiles() is identical
	to gdb.selected_inferior().progspace.objfiles().

gdb/testsuite/ChangeLog:

	* gdb.python/py-progspace.exp: Test the Progspace.objfiles
	method.
2018-09-13 15:42:12 -04:00
Simon Marchi
a40bf0c2e9 python: Add Inferior.progspace property
This patch adds a progspace property to the gdb.Inferior type, which
allows getting the gdb.Progspace object associated to that inferior.
In conjunction with the following patch, this will allow scripts iterate
on objfiles associated with a particular inferior.

gdb/ChangeLog:

	* python/py-inferior.c (infpy_get_progspace): New function.
	(inferior_object_getset): Add progspace property.
	* NEWS: Mention the new property.

gdb/doc/ChangeLog:

	* python.texi (Inferiors In Python): Document
	Inferior.progspace.
	(Program Spaces In Python): Document that
	gdb.current_progspace() is the same as
	gdb.selected_inferior().progspace.

gdb/testsuite/ChangeLog:

	* gdb.python/py-inferior.exp: Add tests for Inferior.progspace
	and a few other Inferior properties when the Inferior is no
	longer valid.
2018-09-13 15:42:12 -04:00
Tom Tromey
4a3fe98f88 Make Rust error message mention the field name
I noticed a spot in rust-lang.c where the placeholder "foo" was used
instead of the actual field name.  This patch fixes the bug.

gdb/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	PR rust/23650:
	* rust-lang.c (rust_evaluate_subexp): Use field name, not "foo".

gdb/testsuite/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	PR rust/23650:
	* gdb.rust/simple.exp: Add test for enum field access error.
2018-09-13 10:57:40 -06:00
Tom Tromey
098b2108a2 Fix crash with empty Rust enum
While testing my Rust compiler patch to fix the DWARF representation
of Rust enums (https://github.com/rust-lang/rust/pull/54004), I found
a gdb crash coming from one of the Rust test cases.

The bug here is that the new variant support in gdb does not handle
the case where there are no variants in the enum.

This patch fixes the problem in a straightforward way.  Note that the
new tests are somewhat lax because I did not want to try to fully fix
this corner case for older compilers.  If you think that's
unacceptable, let meknow.

Tested on x86-64 Fedora 28 using several versions of the Rust
compiler.  I intend to push this to the 8.2 branch as well.

gdb/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	PR rust/23626:
	* rust-lang.c (rust_enum_variant): Now static.
	(rust_empty_enum_p): New function.
	(rust_print_enum, rust_evaluate_subexp, rust_print_struct_def):
	Handle empty enum.

gdb/testsuite/ChangeLog
2018-09-13  Tom Tromey  <tom@tromey.com>

	PR rust/23626:
	* gdb.rust/simple.rs (EmptyEnum): New type.
	(main): Use it.
	* gdb.rust/simple.exp (test_one_slice): Add empty enum test.
2018-09-13 10:57:39 -06:00
Sergio Durigan Junior
80ca5f98b8 Add "contrib" to the list of GDB support dirs (on src-release.sh)
On commit:

  commit 5a6996172e
  Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
  Date:   Mon Aug 6 16:05:16 2018 +0200

      Update dg-extract-results.* from gcc

dg-extract-results.sh was moved from the "gdb/contrib/" directory to
the toplevel "contrib/" directory.  However, src-release.sh was not
updated in order to include "contrib/" in the tarball release of GDB.
This makes it very inconvenient to run and analyze the GDB testsuite
results.  This commit adds "contrib/" to the list of support
directories that are included in each GDB release.

ChangeLog:
2018-09-12  Sergio Durigan Junior  <sergiodj@redhat.com>

	* src-release.sh (GDB_SUPPORT_DIRS): Add "contrib".
2018-09-13 12:33:19 -04:00
H.J. Lu
319dbdfbb7 Add a testcase for PR binutils/23633
PR binutils/23633
	* testsuite/binutils-all/objcopy.exp: Run pr23633.
	* testsuite/binutils-all/pr23633.d: New file.
	* testsuite/binutils-all/pr23633.list: Likewise.
	* testsuite/binutils-all/pr23633.s: Likewise.
2018-09-13 09:09:15 -07:00
Simon Marchi
1256af7d1a python: Provide textual representation for Inferior and Objfile
Printing a GDB Python object is notoriously not helpful:

>>> print(gdb.selected_inferior())
<gdb.Inferior object at 0x7fea59aed198>
>>> print(gdb.objfiles())
[<gdb.Objfile object at 0x7fea59b57c90>]

This makes printing debug traces more difficult than it should be.  This
patch provides some repr() implementation for these two types (more to
come if people agree with the idea, but I want to test the water first).
Here's the same example as above, but with this patch:

>>> print(gdb.selected_inferior())
<gdb.Inferior num=1>
>>> print(gdb.objfiles())
[<gdb.Objfile filename=/home/emaisin/build/binutils-gdb-gcc-git/gdb/test>]

I implemented repr rather than str, because when printing a list (or
another container I suppose), Python calls the repr method of the
elements.  This is useful when printing a list of inferiors or objfiles.
The print(gdb.objfiles()) above would not have worked if I had
implemented str.

I found this post useful to understand the difference between repr and
str:

  https://stackoverflow.com/questions/1436703/difference-between-str-and-repr

gdb/ChangeLog:

	* python/py-inferior.c (infpy_repr): New.
	(inferior_object_type): Register infpy_repr.
	* python/py-objfile.c (objfpy_repr): New.
	(objfile_object_type): Register objfpy_repr.

gdb/testsuite/ChangeLog:

	* gdb.python/py-inferior.exp: Test repr() of gdb.Inferior.
	* gdb.python/py-objfile.exp: Test repr() of gdb.Objfile.
	* gdb.python/py-symtab.exp: Update test printing an objfile.

gdb/doc/ChangeLog:

	* python.texi (Basic Python): Mention the string representation
	of GDB Python objects.
2018-09-13 11:54:38 -04:00
Nick Clifton
508d0c9b59 Fix a use-after-freed error introduced by previous attempt to fix a Coverity scan result.
PR 23633
	* objcopy.c (add_specific_symbols): Do not free the buffer at the
	end of the function.
2018-09-13 16:14:36 +01:00
H.J. Lu
5be12fc1ad x86: Remove VexW=1 from WIG VEX movq and vmovq
Put back changes lost in commit 41d1ab6a6d.
2018-09-13 07:38:45 -07:00
H.J. Lu
41d1ab6a6d i386: Update VexW field for VEX instructions
1. Mark VEX.W0 VEX instructions with VexW=1.
2. Mark VEX.W1 VEX instructions with VexW=2.
3. Remove VexW=1 from WIG VEX instructions.

	* i386-opc.tbl: Add VexW=1 to VEX.W0 VEX movd, cvtsi2ss, cvtsi2sd,
	pextrd, pinsrd, vcvtsi2sd, vcvtsi2ss, vmovd, vpextrd and vpinsrd.
	Add VexW=2 to VEX.W1 VEX movd, movq, pextrq, pinsrq, vmod, vmovq,
	vpextrq and vpinsrq.  Remove VexW=1 from WIG VEX movq and vmovq.
	* i386-tbl.h: Regenerated.
2018-09-13 06:21:19 -07:00
H.J. Lu
79f0fa25b9 x86: Swap destination/source to encode VEX only if possible
When encoding VEX, we can swap destination and source only if there are
more than 1 register operand.

	* config/tc-i386.c (build_vex_prefix): Swap destination and
	source only if there are more than 1 register operand.
2018-09-13 06:12:31 -07:00
Jan Beulich
57f6375ec1 x86: drop bogus IgnoreSize from a few further insns 2018-09-13 11:26:06 +02:00
Jan Beulich
2589a7e59b x86: drop bogus IgnoreSize from AVX512_4* insns 2018-09-13 11:25:30 +02:00
Jan Beulich
a760eb41aa x86: drop bogus IgnoreSize from AVX512DQ insns 2018-09-13 11:24:53 +02:00
Jan Beulich
e90426589d x86: drop bogus IgnoreSize from AVX512BW insns 2018-09-13 11:24:23 +02:00
Jan Beulich
9caa306f80 x86: drop bogus IgnoreSize from AVX512VL insns 2018-09-13 11:23:50 +02:00
Jan Beulich
fb6ce599e0 x86: drop bogus IgnoreSize from AVX512ER insns 2018-09-13 11:23:17 +02:00
Jan Beulich
6a8da88669 x86: drop bogus IgnoreSize from AVX512F insns 2018-09-13 11:22:49 +02:00
Jan Beulich
c7f279191f x86: drop bogus IgnoreSize from SHA insns 2018-09-13 11:22:03 +02:00
Jan Beulich
0f407ee9f4 x86: drop bogus IgnoreSize from XOP and SSE4a insns 2018-09-13 11:21:36 +02:00
Jan Beulich
2fbbbee5e7 x86: drop bogus IgnoreSize from AVX2 insns 2018-09-13 11:19:21 +02:00
Jan Beulich
2b02b9a2ab x86: drop bogus IgnoreSize from AVX insns 2018-09-13 11:18:52 +02:00
Jan Beulich
963c68aa4a x86: drop bogus IgnoreSize from GNFI insns 2018-09-13 11:16:49 +02:00
Jan Beulich
64e025c3a1 x86: drop bogus IgnoreSize from PCLMUL/VPCLMUL insns 2018-09-13 11:16:19 +02:00
Jan Beulich
47603f888d x86: drop bogus IgnoreSize from AES/VAES insns 2018-09-13 11:15:38 +02:00
Jan Beulich
0001cfd00c x86: drop bogus IgnoreSize from SSE4.2 insns 2018-09-13 11:15:01 +02:00
Jan Beulich
be4b452e28 x86: drop bogus IgnoreSize from SSE4.1 insns 2018-09-13 11:14:32 +02:00
Jan Beulich
d09a13943b x86: drop bogus IgnoreSize from SSSE3 insns 2018-09-13 11:13:46 +02:00
Jan Beulich
07599e13ac x86: drop bogus IgnoreSize from SSE3 insns 2018-09-13 11:12:23 +02:00
Jan Beulich
1ee3e48715 x86: drop bogus IgnoreSize from SSE2 insns 2018-09-13 11:11:55 +02:00