Commit Graph

96966 Commits

Author SHA1 Message Date
Tom Tromey
595915c1c1 Merge handle_inferior_event and handle_inferior_event_1
I noticed that handle_inferior_event is just a small wrapper that
frees the value chain.  This patch replaces it with a
scoped_value_mark, reducing the number of lines of code here.

Regression tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-03-20  Tom Tromey  <tromey@adacore.com>

	* infrun.c (handle_inferior_event): Rename from
	handle_inferior_event_1.  Create a scoped_value_mark.
	(handle_inferior_event): Remove.
2019-03-20 11:09:10 -06:00
GDB Administrator
e946b687ba Automatic date update in version.in 2019-03-20 00:00:30 +00:00
Tom Tromey
4c7d57e72e Don't show "display"s twice in MI
If you run "gdb -i=mi2" and set a "display", then when "next"ing the
displays will be shown twice:

    ~"1: x = 23\n"
    ~"7\t  printf(\"%d\\n\", x);\n"
    ~"1: x = 23\n"
    *stopped,reason="end-stepping-range",frame={addr="0x0000000000400565",func="main",args=[],file="q.c",fullname="/tmp/q.c",line="7"},thread-id="1",stopped-threads="all",core="1"

The immediate cause of this is this code in mi_on_normal_stop_1:

      print_stop_event (mi_uiout);

      console_interp = interp_lookup (current_ui, INTERP_CONSOLE);
      if (should_print_stop_to_console (console_interp, tp))
	print_stop_event (mi->cli_uiout);

... which obviously prints the stop twice.

However, I think the first call to print_stop_event is intended just
to emit the MI *stopped notification, which explains why the source
line does not show up two times.

This patch fixes the bug by changing print_stop_event to only call
do_displays for non-MI-like ui-outs.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-03-19  Tom Tromey  <tromey@adacore.com>

	* mi/mi-interp.c (mi_on_normal_stop_1): Only show displays once.
	* infrun.h (print_stop_event): Add "displays" parameter.
	* infrun.c (print_stop_event): Add "displays" parameter.

gdb/testsuite/ChangeLog
2019-03-19  Tom Tromey  <tromey@adacore.com>

	* gdb.mi/mi2-cli-display.c: New file.
	* gdb.mi/mi2-cli-display.exp: New file.
2019-03-19 12:16:48 -06:00
Pedro Alves
cb24623460 Add comments describing tui_ui_out and its fields, cleanup a bit
This commit add comments describing tui_ui_out and its fields, and
cleans up the code a little bit.

Also switch to using in-class initialization so that the initial
values can be seen alongside the comments.

I see no reason for initializing m_line as -1 instead of 0, since all
the checks in the .c file are of the form "> 0".  AFAICS there's no
practical difference between -1 and 0.  So it seems simpler to
initialize it as 0.

There's a bit of redundancy in tui_ui_out::do_field_string, which is
fixed by this commit.

gdb/ChangeLog:
2019-03-19  Pedro Alves  <palves@redhat.com>

	* tui/tui-out.c (tui_ui_out::do_field_string): Simplify.
	(tui_ui_out::do_text): Add comments.  Reset M_LINE to 0 instead of
	to -1.  Fix TABs vs spaces.
	(tui_ui_out::tui_ui_out): Don't initialize fields here.
	* tui/tui-out.h (tui_ui_out) Add intro comments.
	<m_line, m_start_of_line>: In-class initialize, and add describing
	comment.
2019-03-19 18:08:27 +00:00
Nick Clifton
634557801d Prevent an illegal memory access by objdump when parsing a corrupt file on a 32-bit host.
PR 24360
	* objdump.c (load_specific_debug_section): Check that the amount
	of memory to be allocated matches the size of the section.
2019-03-19 13:39:30 +00:00
H.J. Lu
392a59728b x86: Correct EVEX vector load/store optimization
Update EVEX vector load/store optimization:

1. There is no need to check AVX since AVX2 is required for AVX512F.
2. We need to check both operands for ZMM register since AT&T syntax
may not set zmmword on the first operand.
3. Update Opcode_SIMD_IntD check and set.
4. Since the VEX prefix has 2 or 3 bytes, the EVEX prefix has 4 bytes,
EVEX Disp8 has 1 byte and VEX Disp32 has 4 bytes, we choose EVEX Disp8
over VEX Disp32.

	* config/tc-i386.c (optimize_encoding): Don't check AVX for
	EVEX vector load/store optimization.  Check both operands for
	ZMM register.  Update EVEX vector load/store opcode check.
	Choose EVEX Disp8 over VEX Disp32.
	* testsuite/gas/i386/optimize-1.d: Updated.
	* testsuite/gas/i386/optimize-1a.d: Likewise.
	* testsuite/gas/i386/optimize-2.d: Likewise.
	* testsuite/gas/i386/optimize-4.d: Likewise.
	* testsuite/gas/i386/optimize-5.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-2.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-2a.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-2b.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-3.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-5.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-6.d: Likewise.
	* testsuite/gas/i386/optimize-1.s: Add ZMM register load
	test.
	* testsuite/gas/i386/x86-64-optimize-2.s: Likewise.
2019-03-19 21:13:49 +08:00
H.J. Lu
7b1d7ca194 x86: Correct EVEX to 128-bit EVEX optimization
Since not all AVX512F processors support AVX512VL, we can optimize
512-bit EVEX to 128-bit EVEX encoding for upper 16 vector registers
only when AVX512VL is enabled explicitly at command-line or via
".arch .avx512vl" directive.

	PR gas/24352
	* config/tc-i386.c (optimize_encoding): Check only
	cpu_arch_flags.bitfield.cpuavx512vl.
	* testsuite/gas/i386/i386.exp: Run x86-64-optimize-2b.
	* testsuite/gas/i386/x86-64-optimize-2.d: Revert the last
	change.
	* testsuite/gas/i386/x86-64-optimize-2b.d: New file.
	* testsuite/gas/i386/x86-64-optimize-2b.s: Likewise.
2019-03-19 21:11:21 +08:00
H.J. Lu
89199bb5a0 ix86: Disable AVX512F when disabling AVX2
Since AVX2 is required for AVX512F, we should disable AVX512F when AVX2
is disabled.

gas/

	PR gas/24359
	* testsuite/gas/i386/i386.exp: Change optimize-6a, optimize-7,
	x86-64-optimize-7a and x86-64-optimize-8 tests to run_list_test.
	Remove optimize-6c and x86-64-optimize-7c tests.
	* testsuite/gas/i386/noavx-3.l: Updated.
	* testsuite/gas/i386/noavx-4.d: Likewise.
	* testsuite/gas/i386/noavx-5.d: Likewise.
	* testsuite/gas/i386/noavx-3.s: Add AVX512F tests.
	* testsuite/gas/i386/noavx-4.s: Remove AVX512F tests.
	* testsuite/gas/i386/nosse-5.s: Likewise.
	* testsuite/gas/i386/optimize-6a.d: Removed.
	* testsuite/gas/i386/optimize-6c.d: Likewise.
	* testsuite/gas/i386/optimize-7.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7a.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7c.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-8.d: Likewise.
	* testsuite/gas/i386/optimize-6a.l: New file.
	* testsuite/gas/i386/optimize-6a.s: Likewise.
	* testsuite/gas/i386/optimize-7.l: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7a.l: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7a.s: Likewise.
	* testsuite/gas/i386/x86-64-optimize-8.l: Likewise.

opcodes/

	PR gas/24359
	* i386-gen.c (cpu_flag_init): Add CPU_ANY_AVX512F_FLAGS to
	CPU_ANY_AVX2_FLAGS.
	* i386-init.h: Regenerated.
2019-03-19 21:08:31 +08:00
Alan Hayward
3a0e45b2f1 Fix Arm build error
The following commit broke the build for Arm:
d3a70e03cf
Change iterate_over_lwps to take a gdb::function_view

Correct the changes made to arm_linux_insert_hw_breakpoint1 and make
similar changes to arm_linux_remove_hw_breakpoint1.

2019-03-18  Alan Hayward  <alan.hayward@arm.com>

	* arm-linux-nat.c (arm_linux_insert_hw_breakpoint1): Fix
	variable names.
	(arm_linux_remove_hw_breakpoint1): Use a gdb::function_view.
2019-03-19 09:59:55 +00:00
GDB Administrator
4faa59bbb7 Automatic date update in version.in 2019-03-19 00:00:21 +00:00
Pedro Alves
5371b8502a Fix first time you type UP or DOWN in TUI's command window
The first time you type UP or DOWN arrow in the command window, GDB
should scroll the source window, but instead it displays the line
number and the file name in the command window(?).

What happens there is that the first time we call
tui_ui_out::do_field_int, it doesn't initialize m_line, because
m_start_of_line is -1, as set by the constructor; and then the
following call to tui_ui_out::do_field_string falls back to
cli_ui_out::do_field_string because m_line is zero.

The problem is caused by a typo in the C++ification of tui_ui_out,
commit 112e8700a6, where m_line and m_start_of_line's initial values
were swapped from what they used to be:

 -struct ui_out *
 -tui_out_new (struct ui_file *stream)
 +tui_ui_out::tui_ui_out (ui_file *stream)
 +: cli_ui_out (stream, 0),
 +  m_line (0),
 +  m_start_of_line (-1)
  {
 -
 -  /* Initialize our fields.  */
 -  data->line = -1;
 -  data->start_of_line = 0;

This commit fixes it.

gdb/ChangeLog:
2019-03-18  Pedro Alves  <palves@redhat.com>
	    Eli Zaretskii <eliz@gnu.org>

	* tui/tui-out.c (tui_ui_out::tui_ui_out): Fix initialization of
	m_line and m_start_of_line.
2019-03-18 18:32:42 +00:00
Eli Zaretskii
b17c4cd078 Fix gdb/TUI behavior in response to [Enter] keypress
gdb/ChangeLog:
2019-03-18  Eli Zaretskii  <eliz@gnu.org>

	* tui/tui-io.c (gdb_wgetch): Don't echo CR.
	(tui_getc): When gdb_wgetch returns a CR, behave the same as when
	it returns a newline.  This fixes a regression in TUI mode, whereby
	the next line is output on the same screen line as the user input.
2019-03-18 20:04:40 +02:00
Tom Tromey
4bd56d18cc Fix regression caused by minimal symbol changes
The earlier patch to change minimal symbol allocations to use xmalloc
erroneously left a call to obstack_blank in
minimal_symbol_reader::install.  Because obstack_blank does not finish
the object allocation on an obstack, this in turn could cause invalid
memory reads in some situations.

This patch fixes the problem by removing the call.  Tested on x86-64
Fedora 29; also verified with valgrind.

gdb/ChangeLog
2019-03-18  Tom Tromey  <tromey@adacore.com>

	* minsyms.c (minimal_symbol_reader::install): Remove call to
	obstack_blank.
2019-03-18 09:56:27 -06:00
Pedro Alves
55c10aca2e Improve/fix the TUI's current source line highlight
With styling enabled, I think the way we display the TUI's
highlighted/current line is very ugly and distracting.  The problem in
my view is that we reverse foreground/background in colored text as
well, leading to rainbow of background colors.

This patch changes that to something that I find much more sensible --
only reverse the default foreground/background colors, leave styled
text colors alone.  If the foreground color is not the default
(because the text was styled), leave the foreground color as is.  If
e.g., the terminal is fg=BLACK, and bg=WHITE, and the style wants to
print text in RED, reverse the background color (print in BLACK), but
still print the text in RED.

Note: The new ui_file_style::set_fg method isn't called set_foreground
instead, because set_foreground is a macro in /usr/lib/term.h (ncurses).

gdb/ChangeLog:
2019-03-18  Pedro Alves  <palves@redhat.com>

	* tui/tui-io.c (reverse_mode_p, reverse_save_bg, reverse_save_fg):
	New globals.
	(apply_style): New, factored out from ...
	(apply_ansi_escape): ... this.  Handle reverse video mode.
	(tui_set_reverse_mode): New function.
	* tui/tui-io.h (tui_set_reverse_mode): New declaration.
	* tui/tui-winsource.c (tui_show_source_line): Use
	tui_set_reverse_mode instead of setting A_STANDOUT.
	* ui-style.h (struct ui_file_style) <set_reverse, set_fg, set_bg>:
	New setter methods.
2019-03-18 14:26:00 +00:00
Hannes Domani
647bb750c2 Fix scrolling right in the TUI
This commit fixes two issues in scrolling right in the TUI:

#1 - Scrolling right with the arrow keys, the first keypress doesn't
do anything.  The problem is that copy_source_line() checks if
(column < first_col), and because of the ++column directly before, it
basically starts with 1 instead of 0.

#2 - Scrolling right handles TABS and escaped characters as single
characters, which just looks weird.  The problem is that there's a
spot that misses handling TABS.

gdb/ChangeLog:
2019-03-18  Hannes Domani  <ssbssa@yahoo.de>

	* tui/tui-source.c (copy_source_line): Fix handling of 'column'.
	Handle tabs.
2019-03-18 14:25:59 +00:00
Tom Tromey
bff8c71fd8 Fix Ada "ptype" bug with array types
Using ptype on an array type in Ada can sometimes show an incorrect
high bound.  This happens because ada_evaluate_subexp will create an
array with an incorrect upper bound in the EVAL_AVOID_SIDE_EFFECTS
case.

This patch fixes the problem by arranging to always create such an
array with valid bounds.

Tested on x86-64 Fedora 29.

gdb/ChangeLog
2019-03-18  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (empty_array): Add "high" parameter.
	(ada_evaluate_subexp): Update.

gdb/testsuite/ChangeLog
2019-03-18  Joel Brobecker  <brobecker@adacore.com>
	    Tom Tromey  <tromey@adacore.com>

	* gdb.ada/ptype_array/pck.adb: New file.
	* gdb.ada/ptype_array/pck.ads: New file.
	* gdb.ada/ptype_array/foo.adb: New file.
	* gdb.ada/ptype_array.exp: New file.
2019-03-18 06:45:16 -06:00
Alan Modra
af60449c26 Use temp_ilp and restore_ilp in more places
* as.c (macro_expr): Use temp_ilp and restore_ilp.
	* macro.c (buffer_and_nest): Likewise.
	* read.c (temp_ilp): Remove FIXME.
2019-03-18 22:39:55 +10:30
Alan Modra
c6cdff46c9 Fix MRI mode testsuite failures
These fails were introduced by git commit 2469b3c584 with the
inroduction of "input_from_string":
m68k-linux  FAIL: MRI structured for
m68k-linux  FAIL: MRI structured if
m68k-linux  FAIL: MRI structured repeat
m68k-linux  FAIL: MRI structured while

Since the m68k parser called expression() without setting
input_from_string, get_symbol_name rejected FAKE_LABEL_CHAR in names.

	* config/m68k-parse.y (yylex): Use temp_ilp and restore_ilp.
2019-03-18 22:39:16 +10:30
Alan Modra
8cd1fe1bf5 PR24355, segmentation fault in function called from ppc_finish_symbols
This one looks to be a bug going back to 2009, git commit e054468f6c
"STT_GNU_IFUNC support for PowerPC".  That bug was carried over with
git commit 49c09209d0 "Rearrange PLT reloc output on powerpc".

If the refcount for an ifunc local sym plt entry was zero,
ppc_elf_size_dynamic_sections would correctly set plt.offset to -1 but
leave glink_offset uninitialized.  That leads to occasional segfaults
(which can be made solid with MALLOC_PERTURB_=1 when using glibc).
So, guard the write_glink_stub call with plt.offset != -1.  Also,
remove the totally ineffective attempt at writing multiple-use glink
stubs only once.

	PR 24355
	* elf32-ppc.c (ppc_finish_symbols): Don't call write_glink_stub
	for local iplt syms with ent->plt.offset == -1.  Remove ineffective
	attempt at writing glink stubs only once.
2019-03-18 22:38:29 +10:30
Alan Modra
28a66f07f0 csky ld testsuite fixes
* testsuite/ld-elf/merge.d: Remove csky from xfails, add moxie.
	* testsuite/ld-elf/pr21884.d: Remove csky from xfails.
	* testsuite/ld-elf/shared.exp: Add csky to list not xfailing pr22374.
	* testsuite/ld-unique/pr21529.d: Remove csky from xfails
2019-03-18 22:37:26 +10:30
Sergei Trofimovich
58785d9888 gdb: unconditionally define _initialize_string_view_selftests
The build failure was noticed by Helmut Jarausch in
https://bugs.gentoo.org/680232:
    $ ./configure CXXFLAGS='-std=c++17 -Os'
    ...
      CXXLD  gdb
    ld: init.o: in function `initialize_all_files()':
    init.c:(.text+0x113): undefined reference to `_initialize_string_view_selftests()'

It happens because '_initialize_string_view_selftests()' is
conditionally defined based on C++ default.

The change defines '_initialize_string_view_selftests()'
unconditionally and leaves implementation a no-op on c++17
compilers.

gdb/ChangeLog:
2019-03-17  Sergei Trofimovich <siarheit@google.com>

	* unittests/string_view-selftests.c: Define
	_initialize_string_view_selftests unconditionally.
2019-03-18 00:01:13 -04:00
H.J. Lu
a716e60cf9 x86: Pass -O0 to assembler for some tests
* testsuite/gas/i386/att-regs.d: Pass -O0 to assembler.
	* testsuite/gas/i386/avx512bw-intel.d: Likewise.
	* testsuite/gas/i386/avx512bw.d: Likewise.
	* testsuite/gas/i386/avx512f-intel.d: Likewise.
	* testsuite/gas/i386/avx512f.d: Likewise.
	* testsuite/gas/i386/disp32.d: Likewise.
	* testsuite/gas/i386/intel-regs.d: Likewise.
	* testsuite/gas/i386/pseudos.d: Likewise.
	* testsuite/gas/i386/x86-64-disp32.d: Likewise.
	* testsuite/gas/i386/x86-64-pseudos.d: Likewise.
2019-03-18 09:19:45 +08:00
H.J. Lu
97ed31ae00 x86: Optimize EVEX vector load/store instructions
When there is no write mask, we can encode lower 16 128-bit/256-bit
EVEX vector register load and store instructions as VEX vector register
load and store instructions with -O1.

gas/

	PR gas/24348
	* config/tc-i386.c (optimize_encoding): Encode 128-bit and
	256-bit EVEX vector register load/store instructions as VEX
	vector register load/store instructions for -O1.
	* doc/c-i386.texi: Update -O1 documentation.
	* testsuite/gas/i386/i386.exp: Run PR gas/24348 tests.
	* testsuite/gas/i386/optimize-1.s: Add tests for EVEX vector
	load/store instructions.
	* testsuite/gas/i386/optimize-2.s: Likewise.
	* testsuite/gas/i386/optimize-3.s: Likewise.
	* testsuite/gas/i386/optimize-5.s: Likewise.
	* testsuite/gas/i386/x86-64-optimize-2.s: Likewise.
	* testsuite/gas/i386/x86-64-optimize-3.s: Likewise.
	* testsuite/gas/i386/x86-64-optimize-4.s: Likewise.
	* testsuite/gas/i386/x86-64-optimize-5.s: Likewise.
	* testsuite/gas/i386/x86-64-optimize-6.s: Likewise.
	* testsuite/gas/i386/optimize-1.d: Updated.
	* testsuite/gas/i386/optimize-2.d: Likewise.
	* testsuite/gas/i386/optimize-3.d: Likewise.
	* testsuite/gas/i386/optimize-4.d: Likewise.
	* testsuite/gas/i386/optimize-5.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-2.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-3.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-4.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-5.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-6.d: Likewise.
	* testsuite/gas/i386/optimize-7.d: New file.
	* testsuite/gas/i386/optimize-7.s: Likewise.
	* testsuite/gas/i386/x86-64-optimize-8.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-8.s: Likewise.

opcodes/

	PR gas/24348
	* i386-opc.tbl: Add Optimize to vmovdqa32, vmovdqa64, vmovdqu8,
	vmovdqu16, vmovdqu32 and vmovdqu64.
	* i386-tbl.h: Regenerated.
2019-03-18 08:58:19 +08:00
GDB Administrator
7bc0961cfe Automatic date update in version.in 2019-03-18 00:00:40 +00:00
H.J. Lu
99112332cd x86: Encode 256-bit/512-bit VEX/EVEX insns with 128-bit VEX
Since all AVX512 processors support AVX, we can encode 256-bit/512-bit
VEX/EVEX vector register clearing instructions with 128-bit VEX vector
register clearing instructions at -O1.

	* config/tc-i386.c (optimize_encoding): Encode 256-bit/512-bit
	VEX/EVEX vector register clearing instructions with 128-bit VEX
	vector register clearing instructions at -O1.
	* doc/c-i386.texi: Update -O1 and -O2 documentation.
	* testsuite/gas/i386/i386.exp: Run optimize-1a and
	x86-64-optimize-2a.
	* testsuite/gas/i386/optimize-1a.d: New file.
	* testsuite/gas/i386/x86-64-optimize-2a.d: Likewise.
2019-03-18 03:51:50 +08:00
Владимир Мартьянов
d4cbef22ba Remove unused variable from windows_make_so
There is unused variable text_vma in function windows_make_so. This
leads to build error on Windows using Cygwin.

gdb/ChangeLog:
2019-03-17  Vladimir Martyanov  <vilgeforce@gmail.com>

    PR gdb/24350
    * windows-nat.c (windows_make_so): Remove unused text_vma variable.
2019-03-17 14:48:59 -04:00
Владимир Мартьянов
fce4c07161 Fix wrong format specification in display_selector()
There are a wrong format strings in function display_selector() in
file windows-nat.c. This leads to build error using Cygwin on Windows.
LDT_ENTRY.HighWord is a DWORD, which is unsigned long int, so the
format specification should be for long int, not simply int.

gdb/ChangeLog:
2019-03-17  Vladimir Martyanov  <vilgeforce@gmail.com>

    PR gdb/24351
    * windows-nat.c (display_selector): Format specifications fixed
2019-03-17 14:41:12 -04:00
Eli Zaretskii
f7f0a12390 Fix redisplay of the current line in GDB TUI mode
Without this change, when the current line is longer than the source
window width, redisplaying that line overwrites the window frame and
also portions of the next line.

gdb/ChangeLog:
2019-03-17  Eli Zaretskii  <eliz@gnu.org>

	* tui/tui-winsource.c (tui_set_is_exec_point_at): Call
	tui_refill_source_window instead of tui_refresh_win, to update the
	current execution line.  This fixes redisplay of the current line
	when stepping through very long lines with "next" or "step".
2019-03-17 18:00:34 +02:00
GDB Administrator
d6dcc55d80 Automatic date update in version.in 2019-03-17 00:01:10 +00:00
H.J. Lu
41fd2579f2 x86: Set optimize to INT_MAX for -Os
Set optimize to INT_MAX, instead of -1, for -Os so that -Os will include
-O2 optimization.

	PR gas/24353
	* config/tc-i386.c (md_parse_option): Set optimize to INT_MAX
	for -Os.
	* testsuite/gas/i386/optimize-2.s: Add a test.
	* testsuite/gas/i386/x86-64-optimize-3.s: Likewise.
	* testsuite/gas/i386/optimize-2.d: Updated.
	* testsuite/gas/i386/x86-64-optimize-3.d: Likewise.
2019-03-17 07:49:06 +08:00
H.J. Lu
dd22218cf2 x86: Correctly optimize EVEX to 128-bit VEX/EVEX
We can optimize 512-bit EVEX to 128-bit EVEX encoding for upper 16
vector registers only when AVX512VL is enabled.  We can't optimize
EVEX to 128-bit VEX encoding when AVX isn't enabled.

	PR gas/24352
	* config/tc-i386.c (optimize_encoding): Encode 512-bit EVEX
	with 128-bit VEX encoding only when AVX is enabled and with
	128-bit EVEX encoding only when AVX512VL is enabled.
	* testsuite/gas/i386/i386.exp: Run PR gas/24352 tests.
	* testsuite/gas/i386/optimize-6.s: New file.
	* testsuite/gas/i386/optimize-6a.d: Likewise.
	* testsuite/gas/i386/optimize-6b.d: Likewise.
	* testsuite/gas/i386/optimize-6c.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7.s: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7a.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7b.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-7c.d: Likewise.
	* testsuite/gas/i386/x86-64-optimize-2.d: Updated.
2019-03-17 07:25:22 +08:00
Eli Zaretskii
ab42892fb7 Fix vertical scrolling of TUI source window
gdb/ChangeLog:
2019-03-16  Eli Zaretskii  <eliz@gnu.org>

	* source-cache.c (source_cache::get_source_lines): Call
	find_source_lines to initialize s->nlines.  This fixes vertical
	scrolling of TUI source window when the DOWN arrow is pressed.
2019-03-16 19:53:46 +02:00
Philippe Waroquiers
8d8c087f34 OBVIOUS: fix several occurrences of 'This options has' to 'This option has' 2019-03-16 16:57:25 +01:00
Eli Zaretskii
798e1c302a Revert "Use wclrtoeol in tui_show_source_line"
gdb/ChangeLog:
2019-03-16  Eli Zaretskii  <eliz@gnu.org>

	* tui/tui-winsource.c (tui_show_source_line): Revert "Use
	wclrtoeol in tui_show_source_line".  This reverts changes made in
	commit 4a3045920b.
2019-03-16 14:13:43 +02:00
Alan Modra
6835821be8 PR24337, segfault in _bfd_elf_rela_local_sym, again
Reverts commit 1ff31e135f, fixing the problem more generally.  There
are likely other place that will segfault on a NULL section.

	PR 24337
	* elf.c (_bfd_elf_rela_local_sym): Revert last change.
	(_bfd_elf_rel_local_sym): Likewise.
	* elflink.c (elf_link_input_bfd): Use bfd_und_section for
	section of symbols with unrecognized shndx.
2019-03-16 11:55:28 +10:30
GDB Administrator
fdc01131eb Automatic date update in version.in 2019-03-16 00:00:26 +00:00
Tom Tromey
eefba3da27 Change minimal_symbol inheritance
This changes struct minimal_symbol to inherit from general_symbol_info
and updates various macros to cope.

Because MSYMBOL_SET_LANGUAGE and MSYMBOL_SET_NAMES were only used from
a single spot, this patch removes them in favor of simply inlining
their definitions.  I consider this to be somewhat cleaner, not least
because the "phony polymorphism" provided by such macros is not useful
in practice.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* symtab.h (struct minimal_symbol): Derive from
	general_symbol_info.
	(MSYMBOL_VALUE, MSYMBOL_VALUE_RAW_ADDRESS)
	(MSYMBOL_VALUE_ADDRESS, MSYMBOL_VALUE_BYTES)
	(MSYMBOL_BLOCK_VALUE, MSYMBOL_VALUE_CHAIN, MSYMBOL_LANGUAGE)
	(MSYMBOL_SECTION, MSYMBOL_OBJ_SECTION, MSYMBOL_NATURAL_NAME)
	(MSYMBOL_LINKAGE_NAME, MSYMBOL_DEMANGLED_NAME)
	(MSYMBOL_SEARCH_NAME): Update.
	(MSYMBOL_SET_LANGUAGE, MSYMBOL_SET_NAMES): Remove.
	* solib.c (gdb_bfd_lookup_symbol_from_symtab): Don't use memset.
	* minsyms.c (minimal_symbol_reader::record_full): Update.
2019-03-15 16:02:10 -06:00
Tom Tromey
0de2420c4b Use memcpy in minimal_symbol_reader::install
minimal_symbol_reader::install copies minsyms from the msym_bunch
objects into the allocated memory.  It seemed better to me to do this
via memcpy, as that is frequently optimized in libc.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* minsyms.c (minimal_symbol_reader::install): Use memcpy.
2019-03-15 16:02:10 -06:00
Tom Tromey
042d75e42c Allocate minimal symbols with malloc
Currently, minimal symbols are allocated on the per-BFD obstack.
However, it is also possible for multiple symbol readers to create
minimal symbols for a given objfile.  In this case, the minimal
symbols will be reallocated on the obstack, leading to some waste of
storage.

This is a memory leak, but I think it won't be caught by tools like
valgrind, because valgrind doesn't know about obstacks.

This patch fixes the problem by using malloc to allocate the storage
for minimal symbols.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* objfiles.h (struct objfile_per_bfd_storage) <msymbols>: Now a
	unique_xmalloc_ptr.
	(objfile::msymbols_range::begin, objfile::msymbols_range::end):
	Update.
	* minsyms.c (lookup_minimal_symbol_by_pc_section)
	(build_minimal_symbol_hash_tables)
	(minimal_symbol_reader::install): Update.
2019-03-15 16:02:10 -06:00
Tom Tromey
db92718b54 Use htab_up for demangled hash
This changes objfile_per_bfd_storage::demangled_names_hash to be an
htab_up.  This lets us remove some manual management code from the
objfile_per_bfd_storage destructor.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* symtab.c (create_demangled_names_hash): Update.
	(symbol_set_names): Update.
	* objfiles.h (struct objfile_per_bfd_storage)
	<demangled_names_hash>: Now an htab_up.
	* objfiles.c (objfile_per_bfd_storage): Simplify.
2019-03-15 16:02:09 -06:00
Tom Tromey
d6797f465c Simplify per-BFD storage management
There's no reason that the objfile_per_bfd_storage must be allocated
via bfd_alloc.  This patch changes objfile_per_bfd_storage to be
managed more simply, via ordinary new and delete; and moves some code
into its (new) destructor.

While doing this I also noticed an extra initialization of
language_of_main, and removed it.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* objfiles.h (struct objfile_per_bfd_storage): Declare
	destructor.
	* objfiles.c (objfile_per_bfd_storage::~objfile_per_bfd_storage):
	New.
	(get_objfile_bfd_data): Use new.  Don't initialize
	language_of_main.
	(free_objfile_per_bfd_storage): Remove.
	(objfile_bfd_data_free, objfile::~objfile): Use delete.
2019-03-15 16:02:09 -06:00
Tom Tromey
741d7538b7 Remove minsym termination
I was curious what used the terminating "null" minimal symbol; and
after looking I could not find anything.  This patch removes
terminate_minimal_symbol_table and the extra minimal symbol that is
allocated for it.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* symfile.c (reread_symbols): Update.
	* objfiles.c (objfile::objfile): Update.
	* minsyms.h (terminate_minimal_symbol_table): Don't declare.
	* minsyms.c (lookup_minimal_symbol_by_pc_section): Update
	comment.
	(minimal_symbol_reader::install): Update.
	(terminate_minimal_symbol_table): Remove.
	* jit.c (jit_object_close_impl): Update.
2019-03-15 16:02:08 -06:00
Tom Tromey
788c80d1af Remove some unneeded initializations in minimal_symbol_reader
minimal_symbol_reader::record_full does not need to initialize any
minsym fields to 0, because that was already done implicitly via the
use of XCNEW when allocating the msym_bunch.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* minsyms.c (minimal_symbol_reader::record_full): Remove some
	initializations.
2019-03-15 16:02:08 -06:00
Tom Tromey
1b7a07cba0 Use bitset for demangled_hash_languages
I noticed that objfile_per_bfd_storage::demangled_hash_languages is a
std::vector, which seemed quite large for something that,
fundamentally, can be represented as a bitset.  This patch
reimplements it as a std::bitset.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* objfiles.h (struct objfile_per_bfd_storage)
	<demangled_hash_languages>: Now a bitset.
	* minsyms.c (add_minsym_to_demangled_hash_table): Update.
	(lookup_minimal_symbol): Update.
2019-03-15 16:02:08 -06:00
Tom Tromey
3db066bcd5 Slightly simplify minsym creation
Only one caller of minimal_symbol_reader::record_with_info was using
the return value, so this patch simplifies this code by having it
return void and changing that caller to use record_full instead.

gdb/ChangeLog
2019-03-15  Tom Tromey  <tom@tromey.com>

	* minsyms.h (class minimal_symbol_reader) <record_with_info>:
	Don't return the symbol.
	* coffread.c (record_minimal_symbol): Use record_full.
2019-03-15 16:02:07 -06:00
H.J. Lu
2219ae0b0e COFF: Check for symbols defined in discarded section
For LTO, a symbol may defined in discarded section.  We should mark it
as undefined so that LTO plugin will make IR definition available.

	PR ld/24267
	* coffgen.c (_bfd_coff_section_already_linked): Skip discarded
	section.
	* cofflink.c (coff_link_add_symbols): Check for symbols defined
	in discarded section.
2019-03-15 22:19:20 +08:00
Nick Clifton
1c82ed745b Update the documentation describing where the linker will attempt to locate plugins.
PR 24262
	* ld.texi (-plugin): Correct the path used to locate linker
	plugins.
2019-03-15 12:08:56 +00:00
Li Hao
1c529385d9 Fix a potential illegal memory access whilt parsing an x86 insn.
PR 24308
	* config/tc-i386.c (parse_insn): Check mnemp before using it to
	determine if a suffix can be trimmed.
2019-03-15 11:58:05 +00:00
Alan Modra
fe3fef62ad PR24339, segfault on NULL symbol section
PR 24339
	* elflink.c (elf_link_add_object_symbols): Bail out on a local
	symbol after globals if elf_bad_symtab is not set.
2019-03-15 20:05:18 +10:30
Alan Modra
1ff31e135f PR24337, segfault in _bfd_elf_rela_local_sym
PR 24337
	* elf.c (_bfd_elf_rela_local_sym): Don't segfault on NULL sec.
	(_bfd_elf_rel_local_sym): Likewise.
2019-03-15 20:05:18 +10:30