Commit Graph

98115 Commits

Author SHA1 Message Date
Tom Tromey
ceb13a1382 Change tui_data_window::display_regs to bool
This changes tui_data_window::display_regs to bool and updates the
uses.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-regs.c (tui_show_registers): Update.
	* tui/tui-data.h (struct tui_data_window) <display_regs>: Now
	bool.
	* tui/tui-data.c (tui_data_window::clear_detail)
	(tui_data_window): Update.
2019-06-25 07:48:31 -06:00
Tom Tromey
238eb706f9 Remove struct tui_data_info
Like the previous two patches, this removes struct tui_data_info in
favor of inlining its contents into tui_data_window.  This was the
last member of the tui_win_info detail union, so that is removed.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-windata.c (tui_display_all_data)
	(tui_display_data_from_line, tui_display_data_from)
	(tui_check_data_values, tui_data_window::do_scroll_vertical):
	Update.
	* tui/tui-regs.c (tui_last_regs_line_no)
	(tui_line_from_reg_element_no, tui_first_reg_element_no_inline)
	(tui_show_registers, tui_show_register_group)
	(tui_display_registers_from, tui_display_reg_element_at_line)
	(tui_display_registers_from_line, tui_check_register_values)
	(tui_reg_next, tui_reg_prev): Update.
	* tui/tui-layout.c (tui_set_layout, show_data): Update.
	* tui/tui-data.h (struct tui_data_info): Remove.  Move contents to
	tui_data_window.
	(struct tui_win_info) <detail>: Remove.  Add new fields from
	tui_data_info.
	(TUI_DATA_WIN): Add cast.
	* tui/tui-data.c (tui_data_window::clear_detail, tui_data_window)
	(~tui_data_window): Simplify.
2019-06-25 07:48:30 -06:00
Tom Tromey
81491aa096 Remove struct tui_command_info
Like the previous patch, this removes tui_command_info in favor of
putting it elements directly into tui_cmd_window.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-layout.c (show_source_disasm_command)
	(show_source_or_disasm_and_command): Update.
	* tui/tui-io.c (update_cmdwin_start_line)
	(tui_redisplay_readline): Update.
	* tui/tui-data.h (struct tui_command_info): Remove.
	(struct tui_win_info) <detail>: Remove command_info member.
	(struct tui_data_window) <start_line>: New member, from
	tui_command_info.
	(TUI_CMD_WIN): Add casts.
2019-06-25 07:48:30 -06:00
Tom Tromey
e6e4150110 Remove struct tui_source_info
The tui_source_info struct is used as a member of the "detail" union
in tui_win_info, and this member of the union is only used by source
and disassembly windows.  This patch removes tui_source_info and moves
its members directly to tui_source_window_base.  This simplifies the
code by removing a layer of references from many places.  In a few
spots, a new cast was needed, but most of these will be removed by the
end of the series.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-winsource.c (tui_update_source_window)
	(tui_refill_source_window)
	(tui_source_window_base::do_scroll_horizontal)
	(tui_update_breakpoint_info, tui_set_exec_info_content)
	(tui_show_exec_info_content, tui_erase_exec_info_content)
	(tui_clear_exec_info_content): Update.
	* tui/tui-wingeneral.c (make_all_visible, tui_refresh_all):
	Update.
	* tui/tui-win.c (make_invisible_and_set_new_height)
	(make_visible_with_new_height): Update.
	* tui/tui-source.c (tui_set_source_content)
	(tui_show_symtab_source): Update.
	* tui/tui-layout.c (extract_display_start_addr)
	(show_source_disasm_command, show_data)
	(make_source_or_disasm_window)
	(show_source_or_disasm_and_command): Update.
	* tui/tui-disasm.c (tui_set_disassem_content): Simplify.
	(tui_disasm_window::do_scroll_vertical): Remove shadowing
	"gdbarch".
	* tui/tui-data.h (struct tui_source_info): Remove.  Move contents
	to tui_source_window_base.
	(struct tui_win_info) <detail>: Remove source_info member.
	(struct tui_source_window_base) <has_locator>: Inline.
	Move contents from tui_source_info; rename has_locator member to
	m_has_locator.
	(TUI_SRC_WIN, TUI_DISASM_WIN): Add casts.
	* tui/tui-data.c (tui_source_window_base::has_locator): Move to
	header file.
	(tui_source_window_base::clear_detail, ~tui_source_window_base):
	Simplify.
	(tui_free_all_source_wins_content): Cast to
	tui_source_window_base.
2019-06-25 07:48:30 -06:00
Tom Tromey
44f0e208eb Introduce has_locator method
This changes tui_win_has_locator to be a method on tui_win_info, and
changes the locator code to use bool rather than int.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-win.c (make_invisible_and_set_new_height)
	(make_visible_with_new_height): Call has_locator method.
	* tui/tui-layout.c (show_source_disasm_command, show_data)
	(show_source_or_disasm_and_command): Update for bool change.
	* tui/tui-data.h (struct tui_source_info) <has_locator>: Now bool.
	(tui_win_info) <has_locator>: New method.
	(struct tui_source_window_base) <has_locator>: New method.
	(tui_win_has_locator): Don't declare.
	* tui/tui-data.c (tui_source_window_base::has_locator): Rename
	from tui_win_has_locator.
	(tui_source_window_base): Use false, not FALSE.
2019-06-25 07:48:29 -06:00
Tom Tromey
7778b9128f Remove tui_clear_win_detail
An earlier patch changed the context of the sole call to
tui_clear_win_detail to make it clear that this can never be called
with a NULL window pointer.  So, remove tui_clear_win_detail in favor
of calling the method directly.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.h (tui_clear_win_detail): Don't declare.
	* tui/tui-data.c (tui_clear_source_windows_detail): Call the
	clear_detail method directly.
	(tui_clear_win_detail): Remove.
2019-06-25 07:48:29 -06:00
Tom Tromey
f83d391c5a Don't use TUI_DISASM_WIN in tui_disasm_window method
The previous patch made it clear that the diassembly window scrolling
method was written to assume there could only ever be a single
disassembly window.  This changes that spot to use "this" rather than
the TUI_DISASM_WIN global.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Use
	"this", not TUI_DISASM_WIN.
2019-06-25 07:48:28 -06:00
Tom Tromey
13446e05a3 Introduce methods for scrolling
This changes the TUI to use virtual methods on the various window
types for scrolling.  Window-specific functions for this purpose are
renamed to be methods, and the generic tui_scroll function is removed
as it is no longer called.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-winsource.h (tui_horizontal_source_scroll):  Don't
	declare.
	* tui/tui-winsource.c
	(tui_source_window_base::do_scroll_horizontal): Rename from
	tui_horizontal_source_scroll.
	* tui/tui-windata.h (tui_vertical_data_scroll): Don't declare.
	* tui/tui-windata.c (tui_data_window::do_scroll_vertical): Rename
	from tui_vertical_data_scroll.
	* tui/tui-win.h (tui_scroll): Don't declare.
	* tui/tui-win.c (tui_win_info::forward_scroll)
	(tui_win_info::backward_scroll, tui_win_info::left_scroll)
	(tui_win_info::right_scroll): Rename and update.
	(tui_scroll_forward_command, tui_scroll_backward_command)
	(tui_scroll_left_command, tui_scroll_right_command): Update.
	(tui_scroll): Remove.
	* tui/tui-source.h: Don't declare tui_vertical_source_scroll.
	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Rename
	from tui_vertical_source_scroll.
	* tui/tui-disasm.h (tui_vertical_disassem_scroll): Don't declare.
	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Rename
	from tui_vertical_disassem_scroll.
	* tui/tui-data.h (struct tui_win_info) <do_scroll_vertical,
	do_scroll_horizontal>: New methods.
	<forward_scroll, backward_scroll, left_scroll, right_scroll>:
	Likewise.
	(struct tui_source_window_base): Add do_scroll_horizontal.
	(struct tui_source_window, struct tui_disasm_window): Add
	do_scroll_vertical.
	(struct tui_data_window, struct tui_cmd_window): Add
	do_scroll_horizontal and do_scroll_vertical.
	* tui/tui-command.c (tui_dispatch_ctrl_char): Use method calls.
2019-06-25 07:48:28 -06:00
Tom Tromey
5cf82909a7 Create tui_disasm_window
This introduces the new tui_disasm_window class, which represents a
disassembly window.  It shares a lot of behavior with the source
window, so a new tui_source_window_base class is also created.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.h (struct tui_source_window_base): New struct.
	(struct tui_source_window): Derive from tui_source_window_base.
	(struct tui_disasm_window): New struct.
	* tui/tui-data.c (tui_source_window_base::clear_detail): Rename
	from tui_source_window::clear_detail.
	(tui_source_window_base): Rename from tui_source_window.
	(~tui_source_window_base): Rename from ~tui_source_window.
	(tui_alloc_win_info): Create a tui_disasm_window.
2019-06-25 07:48:27 -06:00
Tom Tromey
ee1d42d6c1 Split the tui_win_info destructor
This patch adds destructors to tui_source_window and tui_data_window,
and splits ~tui_win_info as appropriate.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.h (struct tui_source_window)
	(struct tui_data_window): Declare destructors.
	* tui/tui-data.c (~tui_source_window, ~tui_data_window): New
	destructors.
	(tui_win_info): Simplify.
2019-06-25 07:48:27 -06:00
Tom Tromey
b4eb24524b Remove tui_list
This removes the tui_list type in favor of a std::vector.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-winsource.c (tui_display_main)
	(tui_update_source_windows_with_addr)
	(tui_update_all_breakpoint_info): Update.
	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
	(new_height_ok, parse_scrolling_args): Update.
	* tui/tui-stack.c (tui_show_frame_info): Update.
	* tui/tui-data.h (struct tui_list): Remove.
	(tui_source_windows): Return a reference to a std::vector.
	* tui/tui-data.c (source_windows): Now a std::vector.
	(tui_source_windows): Change return type.
	(tui_clear_source_windows): Rewrite.
	(tui_clear_source_windows_detail, tui_add_to_source_windows)
	(tui_free_all_source_wins_content): Rewrite.
2019-06-25 07:48:27 -06:00
Tom Tromey
8761a91b26 Introduce tui_win_info::clear_detail method
This introduces the clear_detail method and updates the various
subclasses of tui_win_info to implement it.  A subsequent patch will
remove tui_clear_win_detail, but that isn't done for now because at
this point it isn't readily obvious that the NULL check is not needed.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.h (struct tui_win_info, struct tui_source_window)
	(struct tui_data_window, struct tui_cmd_window): Declare
	clear_detail method.
	* tui/tui-data.c (tui_source_window::clear_detail)
	(tui_cmd_window::clear_detail, tui_data_window::clear_detail): New
	methods.
	(tui_clear_win_detail): Simplify.
2019-06-25 07:48:26 -06:00
Tom Tromey
0ed69edaab Simplify source and disassembly window creation
Similar to the previous patch, neither make_source_window nor
make_disasm_window could be called when *win_info_ptr was non-NULL.
This patch simplifies the functions by removing the parameter and
having them return their results directly.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-layout.c (make_source_window, make_disasm_window)
	(make_source_or_disasm_window): Remove win_info_ptr parameter.
	Return the new window.
	(show_source_disasm_command, show_data)
	(show_source_or_disasm_and_command): Update.
2019-06-25 07:48:26 -06:00
Tom Tromey
82432e1014 Simplify command window creation
make_command_window is never called when *win_info_ptr is non-NULL, so
this patch simplifies the function by removing the parameter and
having it return its result directly.  This in turn makes it more
obvious that a NULL check in show_source_disasm_command can be
removed.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-layout.c (make_command_window): Remove win_info_ptr
	parameter.  Return the new window.
	(show_source_disasm_command): Update and remove NULL check.
	(show_source_or_disasm_and_command): Update.
2019-06-25 07:48:25 -06:00
Tom Tromey
ec328aa512 Remove an unnecessary NULL check from the TUI
In init_and_make_win, opaque_win_info can't be NULL after a new window
is allocated.  This patch removes an unnecessary NULL check.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-layout.c (init_and_make_win): Remove NULL check.
2019-06-25 07:48:25 -06:00
Tom Tromey
33b906abfa Create subclasses for different window types
This changes the TUI so that each different major window type has its
own subclass.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.h (struct tui_win_info): Make constructor
	protected.  Make destructor virtual.  Add initializers.
	(tui_source_window, tui_data_window, tui_cmd_window): New
	classes.
	* tui/tui-data.c (tui_win_info): Rename from init_win_info.  Now a
	constructor.  Add "type" parameter.
	(tui_source_window, tui_data_window, tui_cmd_window): New
	constructors.
	(tui_alloc_win_info): Instantiate the appropriate subclass.
2019-06-25 07:48:24 -06:00
Tom Tromey
e7e11af42d Add destructor to tui_win_info
This changes tui_free_window into a destructor for tui_free_window and
then updates the users.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-win.c (tui_resize_all): Use delete.
	* tui/tui-data.h (struct tui_win_info) <~tui_win_info>: Declare
	destructor.
	(tui_free_window): Don't declare.
	* tui/tui-data.c (~tui_win_info): Rename from tui_free_window.
	Update.
2019-06-25 07:48:24 -06:00
Tom Tromey
6792b55e08 Use new and delete for TUI windows
This changes tui_win_info to use new and delete, rather than XNEW and
xfree.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.h (struct tui_win_info): Add constructor.
	* tui/tui-data.c (tui_alloc_win_info): Use new.
	(tui_free_window): Use delete.
2019-06-25 07:48:23 -06:00
Jan Beulich
8e5cb9a54e ld/plugins: avoid shadowing a C library symbol
With my (oldish) gcc/glibc combination I'm seeing

.../ld/plugin.c: In function ‘get_lto_kind’:
.../ld/plugin.c:664: error: declaration of ‘index’ shadows a global declaration
/usr/include/string.h:487: error: shadowed declaration is here
.../ld/plugin.c: In function ‘get_lto_resolution’:
.../ld/plugin.c:685: error: declaration of ‘index’ shadows a global declaration
/usr/include/string.h:487: error: shadowed declaration is here
.../ld/plugin.c: In function ‘get_lto_visibility’:
.../ld/plugin.c:711: error: declaration of ‘index’ shadows a global declaration
/usr/include/string.h:487: error: shadowed declaration is here
2019-06-25 12:02:23 +02:00
Jan Beulich
ab9f654ca3 bfd/elf-properties: avoid shadowing a C library symbol
With my (oldish) gcc/glibc combination I'm seeing

.../bfd/elf-properties.c: In function ‘elf_find_and_remove_property’:
.../bfd/elf-properties.c:244: error: declaration of ‘remove’ shadows a global declaration
/usr/include/stdio.h:157: error: shadowed declaration is here
2019-06-25 12:01:50 +02:00
Jan Beulich
3e50a591d9 readelf: avoid shadowing a libiberty symbol
With my (oldish) gcc I'm seeing

.../binutils/readelf.c: In function ‘dump_ctf_indent_lines’:
.../binutils/readelf.c:13851: error: declaration of ‘spaces’ shadows a global declaration
.../binutils/../include/libiberty.h:253: error: shadowed declaration is here
2019-06-25 11:09:22 +02:00
Jan Beulich
63160fc996 objdump: avoid shadowing a libiberty symbol
With my (oldish) gcc I'm seeing

.../binutils/objdump.c: In function ‘dump_ctf_indent_lines’:
.../binutils/objdump.c:3210: error: declaration of ‘spaces’ shadows a global declaration
.../binutils/../include/libiberty.h:253: error: shadowed declaration is here
2019-06-25 11:08:53 +02:00
Jan Beulich
2c70385689 x86: correct / adjust debug printing
For quite some time we've been using combinations of bits for
specifying various registers in operands and templates. I think it was
Alan who had indicated that likely the debug printing would need
adjustment as a result. Here we go.

Accumulator handling for GPRs gets changed to match that for FPU regs.
For this to work, OPERAND_TYPE_ACC{32,64} get repurposed, with their
original uses replaced by direct checks of the two bits of interest,
which is cheaper than operand_type_equal() invocations.

For SIMD registers nothing similar appears to be needed, as respective
operands get stripped from the (copy of the) template before pt() is
reached.

The type change on pi() is to silence a compiler diagnostic. Arguably
its other parameter could also be const-qualified.
2019-06-25 09:41:33 +02:00
Jan Beulich
4970191fa5 x86: document certain command line options as "dangerous"
Errata BT36, BT41, and BT230 mean that gas may, when using one ofthese
options, produce code that causes #UD on (at least) SandyBridge systems.
2019-06-25 09:40:44 +02:00
Jan Beulich
54fbadc0c3 x86: drop dqa_mode
I assume this mode was needed when EVEX.W handling wasn't really correct
yet for other than 64-bit mode. It's clearly not needed anymore. Its
elimination also allows dropping the EVEX.W split of VCVT{,U}SI2SS. (For
the record, the dropped mode would have been wrong if used in any table
entry not already guaranteeing EVEX.W=1.)
2019-06-25 09:35:17 +02:00
Jan Beulich
a38d71189b x86: don't open code is_any_vex_encoding() 2019-06-25 09:35:17 +02:00
Jan Beulich
a280ab8e81 x86: simplify OP_I64()
The only meaningful difference from OP_I() is the handling of the
VEX.W=1 case in 64-bit mode for bytemode being v_mode. Funnel
everything else into OP_I(), and drop no longer needed local
variables.
2019-06-25 09:35:17 +02:00
Jan Beulich
e1a1babdad x86: fix (dis)assembly of certain SSE2 insns in 16-bit mode
MOVNTI was wrongly assembled with a 66h prefix. Add IgnoreSize to
address this. It and the scalar to/from integer conversion insns also
were also wrongly using Ev / Gv, leading to 16-bit register names being
printed when 32-bit ones were meant.

Clone the 32-bit SSE2 test to cover both assembler and disassembler.
2019-06-25 09:35:17 +02:00
Jan Beulich
b8364fa775 x86-64: also optimize ANDQ with immediate fitting in 7 bits
The same reasoning applies here as did/does for immediates fitting in
31 bits.
2019-06-25 09:35:17 +02:00
Jan Beulich
2a410bd1c3 x86: add CVT{,T}PS2PI cases to xmmwords test
I've (not so) recently noticed this further pair which should be tested
here.
2019-06-25 09:35:17 +02:00
Alan Modra
de62696504 Fix logical expression in last commit
* config/tc-ppc.c (ppc_handle_align): Add parentheses.
2019-06-25 16:57:15 +09:30
Alan Modra
22f72c4868 PowerPC nops
This patch corrects ppc rs_align_code handling to choose the alignment
nops based on the machine in force at the alignment directive rather
than the machine at the end of file.

	* config/tc-ppc.h (ppc_nop_select): Declare.
	(NOP_OPCODE): Define.
	* config/tc-ppc.c (ppc_elf_end, ppc_xcoff_end): Zero ppc_cpu.
	(ppc_nop_encoding_for_rs_align_code): New enum.
	(ppc_nop_select): New function.
	(ppc_handle_align): Don't use ppc_cpu here.  Get nop type from frag.
	* testsuite/gas/ppc/groupnop.d,
	* testsuite/gas/ppc/groupnop.s: New test.
	* testsuite/gas/ppc/ppc.exp: Run it.
2019-06-25 13:04:40 +09:30
GDB Administrator
2e7c439dec Automatic date update in version.in 2019-06-25 00:00:35 +00:00
Jim Wilson
04b865dc2e RISC-V: Enable lui relaxation for CODE and MERGE sections.
2019-06-24  Ilia Diachkov  <ilia.diachkov@optimitech.com>
	bfd/
	* elfnn-riscv.c (_bfd_riscv_relax_lui): Delete early exit when
	SEC_MERGE or SEC_CODE flags are set.
	(_bfd_riscv_relax_section): New local symtype.  Set sym_sec and
	symtype consistently.  Don't include sec_addr (sym_sec) in symval.
	Add check for SEC_INFO_TYPE_MERGE and call _bfd_merged_section_offset.
	Add sec_addr (sym_sec) after handling merge sections.
2019-06-24 13:50:10 -07:00
H.J. Lu
f93ab3a0b8 elf: Remove the property after reporting its removal
commit d2ef37ebd9
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Dec 7 08:30:30 2018 -0800

    elf: Report property change when merging properties

failed to remove the property after reporting it has been removed.  This
patch corrects it.

bfd/

	PR ld/24721
	* elf-properties.c (elf_merge_gnu_property_list): Remove the
	property after reporting property removal.

ld/

	PR ld/24721
	* testsuite/ld-x86-64/x86-64.exp: Run PR ld/24721 tests.
	* testsuite/ld-x86-64/pr24721-x32.d: New file.
	* testsuite/ld-x86-64/pr24721.d: Likewise.
	* testsuite/ld-x86-64/pr24721.map: Likewise.
	* testsuite/ld-x86-64/pr24721a.s: Likewise.
	* testsuite/ld-x86-64/pr24721b.s: Likewise.
2019-06-24 11:08:57 -07:00
Tom de Vries
164e3873cf [gdb/testsuite] Fix label reference in implptr-64bit.exp
When running gdb.dwarf2/implptr-64bit.exp with board cc-with-dwz-m, we run into:
...
dwz: dwz.c:2363: checksum_die: \
  Assertion `\
    ((!op_multifile && !rd_multifile && !fi_multifile) || cu != die_cu (ref)) \
    && (!op_multifile || cu->cu_chunk == die_cu (ref)->cu_chunk)' failed.
cc-with-tweaks.sh: line 218: 13030 Aborted  \
  $DWZ -m ${output_file}.dwz "$output_file" ${output_file}.alt > /dev/null
...
In other words, PR dwz/24170.

The trigger for the dwz PR is when intra-CU references are encoded using
section-relative encoding DW_FORM_ref_addr, but could have been encoded using
CU-relative encoding DW_FORM_ref4.

Fix the intra-CU '%' label reference in implptr-64bit.exp.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-06-24  Tom de Vries  <tdevries@suse.de>

	* gdb.dwarf2/implptr-64bit.exp: Fix intra-CU '%' label reference.
2019-06-24 18:26:10 +02:00
Tom de Vries
824eacee59 [gdb/testsuite] Fix DW_AT_decl_file in gdb.trace tests
When running gdb.trace/{entry-values.exp,unavailable-dwarf-piece.exp} with
board cc-with-dwz, we run into two failures related to the DW_AT_decl_file
attribute:
- The encoding DW_FOR_sdata is used for DW_AT_decl_file, while the attribute
  is required to have a an "unsigned integer constant" value.
- The DW_AT_decl_file attributes refer to a file with index one, while there's
  no such file.

Fix this by using DW_FOR_udata and the value 0, meaning "no file specified".

Tested on x86_64-linux with board native-gdbserver.

gdb/testsuite/ChangeLog:

2019-06-24  Tom de Vries  <tdevries@suse.de>

	* gdb.trace/entry-values.exp: Use DW_FORM_udata instead of
	DW_FOR_sdata for DW_AT_decl_file.  Use 0 for DW_AT_decl_file.
	* gdb.trace/unavailable-dwarf-piece.exp: Same.
2019-06-24 13:29:23 +02:00
Tom de Vries
385b97d3ac [gdb/testsuite] Fix inter-cu refs in inlined_subroutine-inheritance.exp
When running gdb.dwarf2/inlined_subroutine-inheritance.exp with board
cc-with-dwz, we run into:
...
dwz: inlined_subroutine-inheritance: Couldn't find DIE referenced by \
  DW_AT_abstract_origin
...

The problem is that the DW_AT_abstract_origin attributes refer to DIEs in
other CUs, while the references are encoded using the cu-relative encoding
DW_FORM_ref4.

Fix this by forcing the references to use DW_FORM_ref_addr.

Tested on x86_64-linux.

Tested with commit c24bdb023c "Introduce dwarf2_cu::get_builder" reverted,
and verified that the test-case fails in the same way before and after this
patch.

gdb/testsuite/ChangeLog:

2019-06-24  Tom de Vries  <tdevries@suse.de>

	* gdb.dwarf2/inlined_subroutine-inheritance.exp:
2019-06-24 12:20:39 +02:00
GDB Administrator
a33f989b4e Automatic date update in version.in 2019-06-24 00:00:31 +00:00
Alan Modra
bb22a41815 PR24704, Internal error building skiboot for powerpc64-linux-gnu
While the skiboot linker script bears some culpability in this PR,
it's also true that the GOT indirect to GOT relative optimisation for
16-bit offsets isn't safe.  At least, it isn't safe to remove the GOT
entry based on distance between the GOT pointer and symbol calculated
from the preliminary layout.  So this patch removes that optimisation,
and reduces the range allowed for 32-bit and 34-bit offsets.

	PR 24704
bfd/
	* elf64-ppc.c (R_PPC64_GOT16_DS): Don't set has_gotrel.
	(ppc64_elf_edit_toc): Don't remove R_PPC64_GOT16_DS got entries.
	Reduce range of offsets allowed for other GOT relocs.
ld/
	* testsuite/ld-powerpc/elfv2exe.d: Update.
	* testsuite/ld-powerpc/elfv2so.d: Update.
2019-06-23 23:11:27 +09:30
Alan Modra
14b2a8e424 PR24689 again, string table corruption
Depending on optimisation level and gcc version, git commit 890f750a3b
introduces a false positive warning that i_shdrp may be used
uninitialized.

	PR 24689
	* elfcode.h (elf_object_p): Warning fix.
2019-06-23 14:24:45 +09:30
GDB Administrator
a8d21e9ef0 Automatic date update in version.in 2019-06-23 00:00:55 +00:00
Tom Tromey
f95675e12d Remove tui_first_data_element_no_in_line
tui_first_data_element_no_in_line is never used.  This patch removes
it.  Tested by rebuilding, and by grep.

gdb/ChangeLog
2019-06-22  Tom Tromey  <tom@tromey.com>

	* tui/tui-windata.h (tui_first_data_element_no_in_line): Don't
	declare.
	* tui/tui-windata.c (tui_first_data_element_no_in_line): Remove.
2019-06-22 15:28:08 -06:00
Tom Tromey
5bff081c10 Remove two unused functions from the TUI
This removes two unused functions from the TUI.  According to
"git grep -G", they have never been used.

gdb/ChangeLog
2019-06-22  Tom Tromey  <tom@tromey.com>

	* tui/tui-data.h (tui_del_window, tui_del_data_windows): Don't
	declare.
	* tui/tui-data.c (tui_del_window, tui_del_data_windows): Remove.
2019-06-22 15:22:49 -06:00
Tom de Vries
47e3f47487 [gdb] Fix s390x -m31 build
When building gdb on s390x with -m31, we run into this Wformat
warning (which Werror turns into an error):
...
gdb/dwarf2read.c: In function \
  'void create_addrmap_from_aranges(dwarf2_per_objfile*, \
                                    dwarf2_section_info*)':
gdb/dwarf2read.c:3277:22: error: format '%zu' expects argument of type \
  'size_t', but argument 3 has type 'int' [-Werror=format=]
    warning (_("Section .debug_aranges in %s entry at offset %zu "
...

The Wformat warning is triggered in this statement:
...
          warning (_("Section .debug_aranges in %s entry at offset %zu "
                     "length %s exceeds section length %s, "
                     "ignoring .debug_aranges."),
                   objfile_name (objfile), entry_addr - section->buffer,
                   plongest (bytes_read + entry_length),
                   pulongest (section->size));
...
where 'entry_addr - section->buffer' is of type ptrdiff_t and '%zu' prints an
unsigned with the same size as size_t/ssize_t.

On s390x with -m31, we have:
- size_t   : unsigned long int (32-bit)
- ptrdiff_t: int               (32-bit)

Wformat warns against this because even though long int and int have the same
size, the types are not compatible.

[ The Wformat warning is to similar to what we would get for x86_64 -m32
(where long and int are also the same size) and:
...
int i;
printf ("%ld", i);
... ]

Fix this by using '%s' and plongest instead of '%zu' to print ptrdiff_t.

Build and reg-tested on x86_64.

gdb/ChangeLog:

2019-06-22  Tom de Vries  <tdevries@suse.de>

	* dwarf2read.c (create_addrmap_from_aranges)
	(read_debug_names_from_section): Print ptrdiff_t using '%s' and plongest
	instead of '%zu'.
2019-06-22 10:59:37 +02:00
GDB Administrator
5ec331ef74 Automatic date update in version.in 2019-06-22 00:00:20 +00:00
Tom de Vries
c596f180a1 [gdb/testsuite] Compile index-cache.c with -Wl,--build-id
When testing gdb.base/index-cache.exp using a gcc build without
--enable-linker-build-id we get:
...
FAIL: gdb.base/index-cache.exp: \
  test_cache_enabled_miss: at least one file was created
FAIL: gdb.base/index-cache.exp: \
  test_cache_enabled_miss: couldn't get executable build id
FAIL: gdb.base/index-cache.exp: \
test_cache_enabled_hit: check index-cache stats
...

With "set debug index-cache on" we find:
...
(gdb) file index-cache
Reading symbols from index-cache...
index cache: objfile index-cache has no build id
...

The problem is that a build-id is required for the index-cache functionality.

Fix this by compiling index-cache.c with -Wl,--build-id.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-06-21  Tom de Vries  <tdevries@suse.de>

	* gdb.base/index-cache.exp: Add additional_flags=-Wl,--build-id.
2019-06-21 23:56:18 +02:00
H.J. Lu
ad692897c1 i386: Break i386-dis-evex.h into small files
Break i386-dis-evex.h into small files such that each file is included
just once.

	* i386-dis-evex.h: Break into ...
	* i386-dis-evex-len.h: New file.
	* i386-dis-evex-mod.h: Likewise.
	* i386-dis-evex-prefix.h: Likewise.
	* i386-dis-evex-reg.h: Likewise.
	* i386-dis-evex-w.h: Likewise.
	* i386-dis.c: Include i386-dis-evex-reg.h, i386-dis-evex-prefix.h,
	i386-dis-evex.h, i386-dis-evex-len.h, i386-dis-evex-w.h and
	i386-dis-evex-mod.h.
2019-06-21 13:18:41 -07:00
Simon Marchi
fd5866f6aa dwarf2read: Get rid of VEC (dwarf2_section_info_def)
This patch removes uses of VEC (dwarf2_section_info_def) in favor of
std::vector<dwarf2_section_info>.  The conversion is relatively
straightforward, no function changes are intended.

gdb/ChangeLog:

	* dwarf2read.h (dwarf2_section_info_def): Remove.
	(DEF_VEC_O (dwarf2_section_info_def)): Remove.
	* dwarf2read.c (struct dwo_sections) <types>: Change type to
	std::vector<dwarf2_section_info>.
	(struct dwo_file) <~dwo_file>: Remove.
	(dwarf2_per_objfile::~dwarf2_per_objfile): Don't manually free
	types field.
	(dwarf2_per_objfile::locate_sections): Adjust to std::vector.
	(dwarf2_read_debug_names): Likewise.
	(create_debug_types_hash_table): Change parameter type to
	array_view, adjust code accordingly.
	(dwarf2_locate_dwo_sections): Adjust to std::vector.
	(partial_die_info::fixup): Likewise.
	(determine_prefix): Likewise.
	* dwarf-index-write.c (write_psymtabs_to_index): Adjust.
2019-06-21 14:11:15 -04:00
Simon Marchi
fb1eb2f94a dwarf2read: Make dwo_file::dbfd a gdb_bfd_ref_ptr
This removes the manual call to gdb_bfd_ref in favor of gdb_bfd_ref_ptr.

gdb/ChangeLog:

	* dwarf2read.c (struct dwo_file) <dbfd>: Change type to
	gdb_bfd_ref_ptr.
	<~dwo_file>: Remove call to gdb_bfd_unref.
	(open_and_init_dwo_file): Move gdb_bfd_ref_ptr into dbfd field. Call
	gdb_bfd_ref_ptr::get.
2019-06-21 14:11:13 -04:00