deliverable/binutils-gdb.git
4 years agoAdd the "tui new-layout" command
Tom Tromey [Sat, 22 Feb 2020 18:48:26 +0000 (11:48 -0700)] 
Add the "tui new-layout" command

This adds a new command, "tui new-layout".  This command can be used
to define a new TUI window layout.

The command is used like:

(gdb) tui new-layout name src 1 regs 1 status 0 cmd 1

The first argument is the name of the layout.  In this example, it is
"name", so the new layout could be seen by "layout name".

Subsequent arguments come in pairs, where the first item in a pair is
the name of a window, and the second item in a pair is the window's
weight.  A weight is just an integer -- a window's allocated size is
proportional to the total of the weights given.  So, in the above
example, all windows will have the same size (the status windows's
weight does not matter, because it has fixed height).

gdb/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* NEWS: Add "tui new-layout" item.
* tui/tui-layout.c (add_layout_command): Return cmd_list_element.
Add new-layout command to help text.
(validate_window_name): New function.
(tui_new_layout_command): New function.
(_initialize_tui_layout): Register "new-layout".
(tui_layout_window::specification): New method.
(tui_layout_window::specification): New method.
* tui/tui-layout.h (class tui_layout_base) <specification>: New
method.
(class tui_layout_window) <specification>: New method.
(class tui_layout_split) <specification>: New method.

gdb/doc/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* gdb.texinfo (TUI Overview): Mention user layouts.
(TUI Commands): Document "tui new-layout".

gdb/testsuite/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* gdb.tui/new-layout.exp: New file.

Change-Id: Id7c3ace20ab1e8924f8f4ad788f40210f58a5c05

4 years agoRemove hard-coded TUI layouts
Tom Tromey [Sat, 22 Feb 2020 18:48:26 +0000 (11:48 -0700)] 
Remove hard-coded TUI layouts

This changes the TUI so that the available layouts are no longer
completely hard-coded.  "enum tui_layout_type" is removed, and then
all the fallout from this is fixed up.

This patch also reimplements the "layout" command to be a prefix
command.  The concrete layouts are simply sub-commands now.  This
provides completion and correct abbreviation behavior for free.

Finally, this also changes the name of the locator window to "status".
This matches the documentation and will be exposed to the user in a
subsequent patch.

gdb/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* tui/tui.c (tui_enable): Call tui_set_initial_layout.
* tui/tui-win.c (window_name_completer): Update comment.
* tui/tui-layout.h (class tui_layout_base) <replace_window>:
Declare method.
(class tui_layout_window) <replace_window>: Likewise.
(class tui_layout_split) <replace_window>: Likewise.
(tui_set_layout): Don't declare.
(tui_set_initial_layout): Declare function.
* tui/tui-layout.c (layouts, applied_skeleton, src_regs_layout)
(asm_regs_layout): New globals.
(tui_current_layout, show_layout): Remove.
(tui_set_layout, tui_add_win_to_layout): Rewrite.
(find_layout, tui_apply_layout): New function.
(layout_completer): Remove.
(tui_next_layout): Reimplement.
(tui_next_layout_command): New function.
(tui_set_initial_layout, tui_prev_layout_command): New functions.
(tui_regs_layout): Reimplement.
(tui_regs_layout_command): New function.
(extract_display_start_addr): Rewrite.
(next_layout, prev_layout): Remove.
(tui_layout_window::replace_window): New method.
(tui_layout_split::replace_window): New method.
(destroy_layout): New function.
(layout_list): New global.
(add_layout_command): New function.
(initialize_layouts): Update.
(tui_layout_command): New function.
(_initialize_tui_layout): Install "layout" commands.
* tui/tui-data.h (enum tui_layout_type): Remove.
(tui_current_layout): Don't declare.

Change-Id: I9b5f7ab3ce838d6b340b8c373ef649a8e0a74b73

4 years agoReimplement "tui reg" command
Tom Tromey [Sat, 22 Feb 2020 18:48:26 +0000 (11:48 -0700)] 
Reimplement "tui reg" command

This reimplements the low-level layout function that is used by the
"tui reg" command.  Now it simply calls into the existing "layout"
command, though this will be changed again in a subsequent patch.  The
rationale for this patch is that it makes it simpler to remove
"enum tui_layout_type".

gdb/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* tui/tui-regs.c (tui_reg_layout): Remove.
(tui_reg_command): Use tui_regs_layout.
* tui/tui-layout.h (tui_reg_command): Declare.
* tui/tui-layout.c (tui_reg_command): New function.

Change-Id: I0ca6884e2967005e7d3fbf5f13a0ac8f9c3298cf

4 years agoReimplement TUI "C-x 1" binding
Tom Tromey [Sat, 22 Feb 2020 18:48:26 +0000 (11:48 -0700)] 
Reimplement TUI "C-x 1" binding

The TUI "C-x 1" key binding removes TUI windows, based on the current
layout.  With user-defined layouts, this is no longer easy to do.

This patch changes "C-x 1" to simply delete windows, leaving just the
focus window, the locator, and the command window.

gdb/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* tui/tui.c (tui_rl_delete_other_windows): Call
tui_remove_some_windows.
* tui/tui-layout.h (class tui_layout_base) <remove_windows>:
Declare method.
(class tui_layout_window) <remove_windows>: New method.
(class tui_layout_split) <remove_windows>: Declare.
(tui_remove_some_windows): Declare.
* tui/tui-layout.c (tui_remove_some_windows): New function.
(tui_layout_split::remove_windows): New method.

Change-Id: If186f9c3f263913e963b965204481d1b4385c6d4

4 years agoSimplify TUI C-x 2 binding
Tom Tromey [Sat, 22 Feb 2020 18:48:26 +0000 (11:48 -0700)] 
Simplify TUI C-x 2 binding

The TUI "C-x 2" binding tries to switch to a different layout based on
the current layout.  Once user-defined layouts are available, this
won't really make sense.  I wasn't entirely sure how to handle this.

This patch changes the binding to simply cycle through the existing
layouts.  I considered this a reasonable, though not ideal,
compromise.

gdb/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* tui/tui.c (tui_rl_change_windows): Call tui_next_layout.
* tui/tui-layout.h (tui_next_layout): Declare.
* tui/tui-layout.c (tui_next_layout): New function.

Change-Id: Ic101f0e3831a4235a048b3090ef60f025f7449bb

4 years agoFix latent display bug in tui_data_window
Tom Tromey [Sat, 22 Feb 2020 18:48:26 +0000 (11:48 -0700)] 
Fix latent display bug in tui_data_window

tui_data_window creates new curses windows, but does not pass in
coordinates relative to the data window's origin.  This means that the
data window could only ever be displayed as the topmost window in a
layout.  This is not a currently problem, because all the existing
layouts do this; but a subsequent patch will add user-defined layouts,
which could do otherwise.

gdb/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* tui/tui-regs.c (tui_data_window::display_registers_from): Use
correct coordinates.

Change-Id: I5101f2b2869557b87381ebdeebd9b7fd28687831

4 years agoSimplify tui_add_win_to_layout
Tom Tromey [Sat, 22 Feb 2020 18:48:26 +0000 (11:48 -0700)] 
Simplify tui_add_win_to_layout

tui_add_win_to_layout is only ever called for the source or assembly
windows.  This simplifies the function by removing the DATA_WIN case.

gdb/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* tui/tui-layout.h (tui_add_win_to_layout): Add comment.
* tui/tui-layout.c (tui_add_win_to_layout): Add assert.  Remove
DATA_WIN case.

Change-Id: Idfca902c6c90153acc5d19af4c33aa74bc3caf31

4 years agoUse TUI_DISASM_WIN instead of tui_win_list array
Tom Tromey [Sat, 22 Feb 2020 18:48:26 +0000 (11:48 -0700)] 
Use TUI_DISASM_WIN instead of tui_win_list array

This is a minor cleanup to change tui_get_low_disassembly_address to
use TUI_DISASM_WIN, rather than the tui_win_list array.  This is more
in line with what the rest of the TUI code does.

gdb/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* tui/tui-disasm.c (tui_get_low_disassembly_address): Use
TUI_DISASM_WIN, not tui_win_list.

Change-Id: I999335ee3f63a4b570e84f320236b78f2bd5b780

4 years agoStyle field names in "print"
Tom Tromey [Sat, 22 Feb 2020 17:02:42 +0000 (10:02 -0700)] 
Style field names in "print"

This changes gdb to use the "variable" style when printing field
names.  I've added new tests for C and Rust, but not other languages.

I chose "variable" because that seemed most straightforward.  However,
another option would be to introduce a new "field" style.  Similarly,
this patch uses the variable style for enumerator constants -- but
again, a new style could be used if that's preferred.

gdb/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* valprint.c (generic_val_print_enum_1)
(val_print_type_code_flags): Style member names.
* rust-lang.c (val_print_struct, rust_print_enum)
(rust_print_struct_def, rust_internal_print_type): Style member
names.
* p-valprint.c (pascal_object_print_value_fields): Style member
names.  Only call fprintf_symbol_filtered for static members.
* m2-typeprint.c (m2_record_fields, m2_enum): Style member names.
* f-valprint.c (f_val_print): Style member names.
* f-typeprint.c (f_type_print_base): Style member names.
* cp-valprint.c (cp_print_value_fields): Style member names.  Only
call fprintf_symbol_filtered for static members.
(cp_print_class_member): Style member names.
* c-typeprint.c (c_print_type_1, c_type_print_base_1): Style
member names.
* ada-valprint.c (ada_print_scalar): Style enum names.
(ada_val_print_enum): Likewise.
* ada-typeprint.c (print_enum_type): Style enum names.

gdb/testsuite/ChangeLog
2020-02-22  Tom Tromey  <tom@tromey.com>

* gdb.rust/rust-style.rs: New file.
* gdb.rust/rust-style.exp: New file.
* gdb.base/style.exp: Test structure printing.
* gdb.base/style.c (struct some_struct): New type.
(enum etype): New type.
(struct_value): New global.

Change-Id: I070e1293c6cc830c9ea916af8243410aa384e944

4 years agoPR25585, PHDR segment not covered by LOAD segment
Alan Modra [Sat, 22 Feb 2020 02:16:33 +0000 (12:46 +1030)] 
PR25585, PHDR segment not covered by LOAD segment

I closed this bug as invalid, but I think it is worth mentioning in NEWS
that older linkers didn't check PT_PHDR very well.  The patch also allows
people to force an output file with --noinhibit-exec after the error.

bfd/
PR 25585
* elf.c (assign_file_positions_for_load_sections): Continue linking
on "PHDR segment not covered by LOAD segment" errors.
ld/
PR 25585
* NEWS: Mention better "PHDR segment not covered by LOAD segment"
checking.

4 years agoAdd a mostlyclean target to gdbserver
Tom Tromey [Sat, 22 Feb 2020 01:27:31 +0000 (18:27 -0700)] 
Add a mostlyclean target to gdbserver

I noticed gdbserver's Makefile doesn't have a mostlyclean target.  I
use this sometimes, so this patch adds it.  Adding it as a synonym of
"clean" seemed to make sense, given the contents of that rule.

gdbserver/ChangeLog
2020-02-21  Tom Tromey  <tom@tromey.com>

* Makefile.in (mostlyclean): New target.

4 years agoAutomatic date update in version.in
GDB Administrator [Sat, 22 Feb 2020 00:00:38 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoUpdate partial_symtab comment
Tom Tromey [Fri, 21 Feb 2020 21:44:41 +0000 (14:44 -0700)] 
Update partial_symtab comment

The introductory comment for partial_symtab has been mildly incorrect
since the partial symtab code was changed to allocate partial symtabs
with "new".  This patch removes the incorrect text.

gdb/ChangeLog
2020-02-21  Tom Tromey  <tom@tromey.com>

* psympriv.h (struct partial_symtab): Update comment.

4 years ago[gdb/testsuite] Fix gdb.go/methods.exp
Tom de Vries [Fri, 21 Feb 2020 19:47:28 +0000 (20:47 +0100)] 
[gdb/testsuite] Fix gdb.go/methods.exp

With gccgo-6/7, we have:
...
FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
XFAIL: gdb.go/methods.exp: going to first breakpoint \
  (the program exited)
FAIL: gdb.go/methods.exp: setting breakpoint at (*main.T).Bar
XFAIL: gdb.go/methods.exp: going to second breakpoint \
  (the program is no longer running)
...

And with gccgo-8/9/10, we have:
...
PASS: gdb.go/methods.exp: setting breakpoint 1
XFAIL: gdb.go/methods.exp: going to first breakpoint
FAIL: gdb.go/methods.exp: setting breakpoint at (*main.T).Bar
XFAIL: gdb.go/methods.exp: going to second breakpoint \
  (the program exited)
...

The first test passes and fails with different messages:
...
FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
...
or:
...
PASS: gdb.go/methods.exp: setting breakpoint 1
...
Fix this by removing the explicit pass call and using the message argument for
gdb_breakpoint, for both breakpoint locations.

The setup of the xfails is non-specific:
...
setup_xfail "*-*-*" ;# mangling issues IIRC
...
so let's start with removing these.

The first FAIL with gccgo-6:
...
FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
...
is due an incorrect DW_AT_name attribute:
...
    #    <554>   DW_AT_name        : main.Foo.N6_main.T
...
Fix this by recognizing the incorrect attribute, and xfailing the test.

Furthermore, if setting the breakpoint fails, there's not much point in trying
to continue to the breakpoint:
...
FAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
FAIL: gdb.go/methods.exp: going to first breakpoint (the program exited)
...
Fix this by skipping the second test if the first one fails, also for the
second breakpoint.

With gccgo-10, we manage to set the first breakpoint, but continuing to
breakpoint test fails:
...
PASS: gdb.go/methods.exp: setting breakpoint 1
FAIL: gdb.go/methods.exp: going to first breakpoint
...
This is due to an incorrect regexp, requiring a colon in front of the
breakpoint location.  Fix this for both breakpoints.

Setting the second breakpoint fails:
...
FAIL: gdb.go/methods.exp: setting breakpoint at (*main.T).Bar
...
presumably because the breakpoint location "(*main.T).Bar" does not follow the
naming convention explained at https://golang.org/doc/gdb#Naming.  Fix this by
updating the breakpoint location to "main.(*T).Bar".

Still this test fails, for gccgo-6/7 because of an incorrect DW_AT_name
attribute:
...
    # <529>   DW_AT_name        : main.Bar.pN6_main.T
...
and for gccgo-8/9/10 because of incorrect DW_AT_name/DW_AT_linkage_name
attributes (filed as gcc PR93866):
...
    #    <6e5>   DW_AT_name        : main.Bar..1main.T
    #    <6ec>   DW_AT_linkage_name: main.T.Bar
..
Add xfails for both of these.

All in all, now we have with gccgo-6/7:
...
XFAIL: gdb.go/methods.exp: setting breakpoint at main.T.Foo
XFAIL: gdb.go/methods.exp: setting breakpoint at main.(*T).Bar
...
and with gccgo-8/9/10, we have:
...
PASS: gdb.go/methods.exp: setting breakpoint at main.T.Foo
PASS: gdb.go/methods.exp: going to first breakpoint
XFAIL: gdb.go/methods.exp: setting breakpoint at main.(*T).Bar
...

Tested on x86_64-linux with gccgo-6/7/8/9/10.

gdb/testsuite/ChangeLog:

2020-02-21  Tom de Vries  <tdevries@suse.de>

PR go/18926
* lib/gdb.exp (bp_location2/bp_location2_regexp): Fix.
Remove blanket xfails.  Use message argument for gdb_breakpoint.
Make continuing to breakpoint test conditional on setting breakpoint.
Fix continuing to breakpoint regexp.  Add xfails for gccgo-6/7
DW_AT_name attribute.  Add xfail for GCC PR93866.

4 years agoFix two more mips-tdep.h declarations
Tom Tromey [Fri, 21 Feb 2020 15:41:11 +0000 (08:41 -0700)] 
Fix two more mips-tdep.h declarations

My earlier patch to fix a declaration mismatch in mips-tdep.h missed a
couple of spots.  Basically, I sent it too soon.

This patch fixes a couple more mismatches between a declaration (using
bfd_vma) and the definition (using CORE_ADDR).

gdb/ChangeLog
2020-02-21  Tom Tromey  <tromey@adacore.com>

* mips-tdep.h (mips_pc_is_mips16, mips_pc_is_micromips): Parameter
type is CORE_ADDR.

4 years ago[gdb] Fix cc-with-dwz regression
Tom de Vries [Fri, 21 Feb 2020 15:36:48 +0000 (16:36 +0100)] 
[gdb] Fix cc-with-dwz regression

I noticed a regression with board cc-with-dwz:
...
FAIL: gdb.cp/m-static.exp: static const int initialized elsewhere
FAIL: gdb.cp/m-static.exp: info variable everywhere
...

The problem started with commit 0494dbecdf "Consolidate partial symtab
dependency reading".

The commit replaces the dwarf2_psymtab::expand_psymtab specific reading of
dependencies, which contains a "dependencies[i]->user == NULL" test, with a
generic partial_symtab::read_dependencies call, which does not test the user
field.

This patch fixes the regression by adding back the test, in the generic
partial_symtab::read_dependencies.

Build and reg-tested on x86_64-linux.

Tested natively, as well as with boards cc-with-dwz and cc-with-dwz-m.

The patch fixes all 33 regressions with cc-with-dwz, and all 2929 regression
with cc-with-dwz-m.

gdb/ChangeLog:

2020-02-21  Tom de Vries  <tdevries@suse.de>

PR gdb/25534
* psymtab.c (partial_symtab::read_dependencies): Don't read dependency
if dependencies[i]->user != NULL.

4 years agogdb/testsuite: Add test for case where gdb_demangle returns NULL
Andrew Burgess [Wed, 19 Feb 2020 14:06:45 +0000 (14:06 +0000)] 
gdb/testsuite: Add test for case where gdb_demangle returns NULL

This adds a test for the commit:

  commit 4f180d5396741eb65badba70cf5077b7d48f8641
  Date:   Fri Feb 21 08:19:21 2020 -0700

      Check for null result from gdb_demangle

gdb/testsuite/ChangeLog:

* gdb.dwarf2/cpp-linkage-name.c: New file.
* gdb.dwarf2/cpp-linkage-name.exp: New file.

4 years agoCheck for null result from gdb_demangle
Ali Tamur via gdb-patches [Fri, 21 Feb 2020 15:19:21 +0000 (08:19 -0700)] 
Check for null result from gdb_demangle

I am sending this patch on behalf of kmoy@google.com, who discovered the bug
and wrote the fix.

gdb_demangle can return null for strings that don't properly demangle. The null
check was mistakenly removed in commit 43816ebc335. Without this check, GDB
aborts when loading symbols from some binaries.

gdb/ChangeLog
2020-02-21  Ali Tamur  <tamur@google.com>

* dwarf2/read.c (dwarf2_name): Add null check.

4 years agoFuzzers whining about mach-o support
Alan Modra [Fri, 21 Feb 2020 08:52:41 +0000 (19:22 +1030)] 
Fuzzers whining about mach-o support

It's very easy to make bfd/mach-o.c allocate huge amounts of memory
with fuzzed binaries.  This make it a little harder.

The patch also fixes a number of places where an attempt to detect
overflow of multiplication was done with code like
  if (x * 4 < x)
    /* overflow case */
That of course doesn't work.  There are plenty of values of x that
overflow x * 4 but (x * 4) mod 2^n is greater than x.  For example
with 16-bit types, 0x6000 * 4 = 0x18000 mod 2^16 = 0x8000.

* mach-o.c (bfd_mach_o_canonicalize_relocs): Fix ineffective
overflow check.
(bfd_mach_o_canonicalize_reloc): Likewise.
(bfd_mach_o_canonicalize_dynamic_reloc): Likewise.  Sanity check
counts and offsets against file size.
(bfd_mach_o_build_dysymtab): Fix ineffective overflow check.
(bfd_mach_o_mangle_sections): Remove unnecessary overflow check.
(bfd_mach_o_read_symtab_symbols): Sanity check count and offset
against file size.  Delete symbol table error message.
(bfd_mach_o_read_dysymtab): Sanity check counts and offsets
against file size.
(bfd_mach_o_read_symtab): Likewise.
(bfd_mach_o_read_command): Pass file size.
(bfd_mach_o_scan): Sanity check command count against file size.

4 years agoFix typo in gdb/testsuite/ChangeLog
Shahab Vahedi [Fri, 21 Feb 2020 09:31:50 +0000 (10:31 +0100)] 
Fix typo in gdb/testsuite/ChangeLog

The date of my last patch's entry in gdb/testsuite/ChangeLog was
wrong. This fixes it.

4 years agogdb/testsuite: Regenerate the testglue if it is not in
Shahab Vahedi [Wed, 19 Feb 2020 13:56:02 +0000 (14:56 +0100)] 
gdb/testsuite: Regenerate the testglue if it is not in

For running the  DejaGnu  tests,  some  esoteric  configurations
may require a testglue.   This,  for  instance,  is  true  about
testing ARC  targets  which  uses  its  own  DejaGnu  board  and
a simulator which does not support returning the program's  exit
code.  Therefore, for those  tests  that  use  "gdb_compile",  a
"gdb_tg.o"  file  is  compiled  and  linked   into   the   final
executable.

There  are  tests  that  invoke  "gdb_compile"  from   different
directories.   Let's  take  a   look   at   an   example   test:
gdb.base/fullname.exp.  The purpose of this  test  is  to  build
the executable from different directories (absolute vs. relative
vs.  other) and then check if gdb can handle setting breakpoints
accordingly.

When  "gdb_compile"  generates  the  "gdb_tg.o",  it  does   not
do it again  for  the  same  test.   Although  this  might  seem
efficient, it can lead to  problems  when  changing  directories
before the next compile:

  gdb compile failed, arc-elf32-gcc: error: gdb_tg.o:
  No such file or directory

This patch checks if the wrapper file ("gdb_tg.o") is  still  in
reach and if it is not, it will stimulate  the  regeneration  of
the wrapper.

It is worth mentioning that GCC's  DejaGnu  tests  handle  these
scenarios as well and they seem to be more efficient in doing so
by saving the library paths and manipulating them  if  necessary
[1].  However, for GDB tests, that  require  less  compilations,
I think the proposed solution should be fine compared to a  more
full fledged solution from GCC.  The glue file in  our  case  is
only 2 KiB.

Last but not least, I ran the x86_64 tests on an x86_64 host and
found no regression.

[1]
Avid  coders  may  look  for  "set_ld_library_path_env_vars"  in
gcc/testsuite/lib/target-libpath.exp.

gdb/testsuite/ChangeLog:

* lib/gdb.exp (gdb_wrapper_init): Reset
"gdb_wrapper_initialized" to 0 if "wrapper_file" does
not exist.

4 years agoFix latent bug in dwarf2_find_containing_comp_unit
Tom Tromey [Fri, 21 Feb 2020 01:22:09 +0000 (18:22 -0700)] 
Fix latent bug in dwarf2_find_containing_comp_unit

dwarf2_find_containing_comp_unit has this in its binary search:

      if (mid_cu->is_dwz > offset_in_dwz
  || (mid_cu->is_dwz == offset_in_dwz
      && mid_cu->sect_off + mid_cu->length >= sect_off))
high = mid;

The intent here is to determine whether SECT_OFF appears in or before
MID_CU.

I believe this has an off-by-one error, and that the check should use
">" rather than ">=".  If the two side are equal, then SECT_OFF
actually appears at the start of the next CU.

I've had this patch kicking around for ages but I forget how I found
the problem.

gdb/ChangeLog
2020-02-20  Tom Tromey  <tom@tromey.com>

* dwarf2/read.c (dwarf2_find_containing_comp_unit): Use ">", not
">=", in binary search.
(dwarf2_find_containing_comp_unit): New overload.
(run_test): New self-test.
(_initialize_dwarf2_read): Register new test.

4 years agoRISC-V: Support the read-only CSR checking.
Nelson Chu [Wed, 12 Feb 2020 10:18:51 +0000 (02:18 -0800)] 
RISC-V: Support the read-only CSR checking.

CSRRW and CSRRWI always write CSR.  CSRRS, CSRRC, CSRRSI and CSRRCI write CSR
when RS1 isn't zero.  The CSR is read only if the [11:10] bits of CSR address
is 0x3.  The read-only CSR can not be written by the CSR instructions.

gas/
* config/tc-riscv.c (riscv_ip): New boolean insn_with_csr to indicate
we are assembling instruction with CSR.  Call riscv_csr_read_only_check
after parsing all arguments.
(enum csr_insn_type): New enum is used to classify the CSR instruction.
(riscv_csr_insn_type, riscv_csr_read_only_check): New functions.  These
are used to check if we write a read-only CSR by the CSR instruction.

* testsuite/gas/riscv/priv-reg-fail-read-only-01.s: New testcase.  Test
all CSR for the read-only CSR checking.
* testsuite/gas/riscv/priv-reg-fail-read-only-01.d: Likewise.
* testsuite/gas/riscv/priv-reg-fail-read-only-01.l: Likewise.
* testsuite/gas/riscv/priv-reg-fail-read-only-02.s: New testcase.  Test
all CSR instructions for the read-only CSR checking.
* testsuite/gas/riscv/priv-reg-fail-read-only-02.d: Likewise.
* testsuite/gas/riscv/priv-reg-fail-read-only-02.l: Likewise.

4 years agoRISC-V: Disable the CSR checking by default.
Nelson Chu [Wed, 12 Feb 2020 10:18:50 +0000 (02:18 -0800)] 
RISC-V: Disable the CSR checking by default.

Add new .option `csr-check/no-csr-check` and GAS option `-mcsr-check
/-mno-csr-check` to enbale/disable the CSR checking.  Disable the CSR
checking by default.

gas/
* config/tc-riscv.c: Add new .option and GAS options to enbale/disable
the CSR checking.  We disable the CSR checking by default.
(reg_lookup_internal): Check the `riscv_opts.csr_check`
before we doing the CSR checking.

* doc/c-riscv.texi: Add description for the new .option and assembler
options.

* testsuite/gas/riscv/priv-reg-fail-fext.d: Add `-mcsr-check` to enable
the CSR checking.
* testsuite/gas/riscv/priv-reg-fail-rv32-only.d: Likewise.

4 years agoRISC-V: Support the ISA-dependent CSR checking.
Nelson Chu [Wed, 12 Feb 2020 10:18:49 +0000 (02:18 -0800)] 
RISC-V: Support the ISA-dependent CSR checking.

According to the riscv privilege spec, some CSR are only valid when rv32 or
the specific extension is set.  We extend the DECLARE_CSR and DECLARE_CSR_ALIAS
to record more informaton we need, and then check whether the CSR is valid
according to these information.  We report warning message when the CSR is
invalid, so we have a choice between error and warning by --fatal-warnings
option.  Also, a --no-warn/-W option is used to turn the warnings off, if
people don't want the warnings.

gas/
* config/tc-riscv.c (enum riscv_csr_class): New enum.  Used to decide
whether or not this CSR is legal in the current ISA string.
(struct riscv_csr_extra): New structure to hold all extra information
of CSR.
(riscv_init_csr_hash): New function.  According to the DECLARE_CSR and
DECLARE_CSR_ALIAS, insert CSR extra information into csr_extra_hash.
Call hash_reg_name to insert CSR address into reg_names_hash.
(md_begin): Call riscv_init_csr_hashes for each DECLARE_CSR.
(reg_csr_lookup_internal, riscv_csr_class_check): New functions.
Decide whether the CSR is valid according to the csr_extra_hash.
(init_opcode_hash): Update 'if (hash_error != NULL)' as hash_error is
not a boolean.  This is same as riscv_init_csr_hash, so keep the
consistent usage.

* testsuite/gas/riscv/csr-dw-regnums.d: Add -march=rv32if option.
* testsuite/gas/riscv/priv-reg.d: Add f-ext by -march option.
* testsuite/gas/riscv/priv-reg-fail-fext.d: New testcase.  The source
file is `priv-reg.s`, and the ISA is rv32i without f-ext, so the
f-ext CSR are not allowed.
* testsuite/gas/riscv/priv-reg-fail-fext.l: Likewise.
* testsuite/gas/riscv/priv-reg-fail-rv32-only.d: New testcase.  The
source file is `priv-reg.s`, and the ISA is rv64if, so the
rv32-only CSR are not allowed.
* testsuite/gas/riscv/priv-reg-fail-rv32-only.l: Likewise.

include/
* opcode/riscv-opc.h: Extend DECLARE_CSR and DECLARE_CSR_ALIAS to
record riscv_csr_class.

opcodes/
* riscv-dis.c (print_insn_args): Updated since the DECLARE_CSR is changed.

gdb/
* riscv-tdep.c: Updated since the DECLARE_CSR is changed.
* riscv-tdep.h: Likewise.
* features/riscv/rebuild-csr-xml.sh: Generate the 64bit-csr.xml without
rv32-only CSR.
* features/riscv/64bit-csr.xml: Regernated.

binutils/
* dwarf.c: Updated since the DECLARE_CSR is changed.

4 years agopdp11 reloc processing
Alan Modra [Thu, 20 Feb 2020 13:05:21 +0000 (23:35 +1030)] 
pdp11 reloc processing

This allows pdp11 to handle 32-bit fixups that can be applied by gas,
and improves the error message emitted when the required reloc isn't
available.

* config/tc-pdp11.c (md_apply_fix): Handle BFD_RELOC_32.
(tc_gen_reloc): Only give a BAD_CASE assertion on pcrel relocs.

4 years agoPR25569, PDP11 ld -s clobbers last data byte
Alan Modra [Thu, 20 Feb 2020 11:23:44 +0000 (21:53 +1030)] 
PR25569, PDP11 ld -s clobbers last data byte

This patch fixes an ancient wart in aout support, in that text and
data section sizes are rounded up for alignment rather that just the
corresponding header sizes.  Changing section sizes could conceivably
result in buffer overflows if section contents were held in memory.
Also, keeping the original section sizes allows this PR to be fixed
nicely.

bfd/
PR 25569
* aoutx.h (adjust_o_magic, adjust_z_magic, adjust_n_magic): Use
"text", "data" and "bss" section pointer vars.  Don't update
section size, just exec header sizes.
(adjust_sizes_and_vmas): Don't update text section size.  Set
initial exec header a_text.  Print exec headers sizes.
* pdp11.c (adjust_o_magic, adjust_z_magic, adjust_n_magic),
(adjust_sizes_and_vmas): Similarly.  Formatting.
(final_link): Correct final file extension.
gas/
PR 25569
* config/obj-aout.c (obj_aout_frob_file_before_fix): Don't loop
on section size adjustment, instead perform another write if
exec header size is larger than section size.

4 years agoAutomatic date update in version.in
GDB Administrator [Fri, 21 Feb 2020 00:01:08 +0000 (00:01 +0000)] 
Automatic date update in version.in

4 years agoMake '{putchar,fputc}_unfiltered' use 'fputs_unfiltered'
Sergio Durigan Junior [Wed, 19 Feb 2020 21:40:48 +0000 (16:40 -0500)] 
Make '{putchar,fputc}_unfiltered' use 'fputs_unfiltered'

There is currently a regression when using
'{putchar,fputc}_unfiltered' with 'puts_unfiltered' which was
introduced by one of the commits that reworked the unfiltered print
code.

The regression makes it impossible to use '{putchar,fputc}_unfiltered'
with 'puts_unfiltered', because the former writes directly to the
ui_file stream using 'stream->write', while the latter uses a buffered
mechanism (see 'wrap_buffer') and delays the printing.

If you do a quick & dirty hack on e.g. top.c:show_gdb_datadir:

  @@ -2088,6 +2088,13 @@ static void
   show_gdb_datadir (struct ui_file *file, int from_tty,
    struct cmd_list_element *c, const char *value)
   {
  +  putchar_unfiltered ('\n');
  +  puts_unfiltered ("TEST");
  +  putchar_unfiltered ('>');
  +  puts_unfiltered ("PUTS");
  +  putchar_unfiltered ('\n');

rebuild GDB and invoke the "show data-directory" command, you will
see:

  (gdb) show data-directory

  >
  TESTPUTSGDB's data directory is "/usr/local/share/gdb".

Note how the '>' was printed before the output, and "TEST" and "PUTS"
were printed together.

My first attempt to fix this was to always call 'flush_wrap_buffer' at
the end of 'fputs_maybe_filtered', since it seemed to me that the
function should always print what was requested.  But I wasn't sure
this was the right thing to do, so I talked to Tom on IRC and he gave
me another, simpler idea: make '{putchar,fputc}_unfiltered' call into
the already existing 'fputs_unfiltered' function.

This patch implements the idea.  I regtested it on the Buildbot, and
no regressions were detected.

gdb/ChangeLog:
2020-02-20  Sergio Durigan Junior  <sergiodj@redhat.com>
    Tom Tromey  <tom@tromey.com>

* utils.c (fputs_maybe_filtered): Call 'stream->puts' instead
of 'fputc_unfiltered'.
(putchar_unfiltered): Call 'fputc_unfiltered'.
(fputc_unfiltered): Call 'fputs_unfiltered'.

4 years ago[gdb/testsuite] Fix hello.go xpass
Tom de Vries [Thu, 20 Feb 2020 16:46:17 +0000 (17:46 +0100)] 
[gdb/testsuite] Fix hello.go xpass

With gdb.go/hello.go, we run into an xpass:
...
Thread 1 "hello" hit Breakpoint 1, main.main () at hello.go:7^M
7       func main () {^M
(gdb) print st^M
$1 = 0x0 ""^M
(gdb) XPASS: gdb.go/hello.exp: starting string check
...

The xfail is setup as follows:
...
\# This used to print "", i.e., the local "st" initialized as "".
setup_xfail "*-*-*"

gdb_test "print st" \
    ".* = $hex \"\"" \
    "starting string check"
...

It's not clear what gccgo/gc PR this xfail refers to.

It's also not clear why the empty string is both:
- listed as reason for xfail, and
- used in the pass pattern.

Furthermore, there's a comment in the hello.go testcase:
...
  st := "Hello, world!" // this intentionally shadows the global "st"
...
while there's no global st variable present, only a variable myst:
...
var myst = "Shall we?"
...

Fix this by splitting up the test-case in two test-cases, hello.{go,exp} and
global-local-var-shadow.{go,exp}.

In hello.exp we no longer attempt to print st before its declaration.  In
hello.go we remove the myst variable as well the comment related to shadowing.

In global-local-var-shadow.go, we rename myst to st, such that the comment
related to shadowing is correct.  In global-local-var-shadow.exp we attempt to
print the value of st before the local definition, which should print the
value of the global definition, and xfail this with reference to GCC PR93844.

Tested on x86_64-linux, with gccgo 10.

gdb/testsuite/ChangeLog:

2020-02-20  Tom de Vries  <tdevries@suse.de>

PR go/17018
* gdb.go/hello.exp: Copy ...
* gdb.go/global-local-var-shadow.exp: ... here.  New file.  Expect
print of st to print value of global definition. Add xfail for GCC
PR93844.
* gdb.go/hello.exp: Remove printing of st before definition.
* gdb.go/hello.go: Copy ...
* gdb.go/global-local-var-shadow.go: ... here. New test.  Rename myst
to st.
* gdb.go/hello.go: Remove myst.  Remove comment about shadowing.

4 years agogdbserver: finish turning the target ops vector into a class
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:04 +0000 (16:12 +0100)] 
gdbserver: finish turning the target ops vector into a class

Now that 'process_stratum_target' has a single field left, namely 'pt'
of type 'process_target', and that all the requests to a
'process_stratum_target' are forwarded to 'pt', meld the
'process_target' class into 'process_stratum_target'.

This essentially means

1. All the references of the form 'the_target->pt' become 'the_target'.

2. All the uses of the name 'process_target' become
   'process_stratum_target'.

3. The platform-specific target op vectors (e.g. linux_target_ops) are
   removed and instances of their "process target" classes are used
   instead.

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* target.h (struct process_stratum_target): Remove.
(class process_target): Rename to ...
(class process_stratum_target): ... this.
* linux-low.h (class linux_process_target): Derive from
'process_stratum_target'.
* linux-low.cc (linux_target_ops): Remove.
(initialize_low): Set the_target to the singleton instance of
linux_process_target.
* lynx-low.h (class lynx_process_target): Derive from
'process_stratum_target'.
* lynx-low.cc (lynx_target_ops): Remove.
(initialize_low): Set the_target to the singleton instance of
lynx_process_target.
* nto-low.h (class nto_process_target): Derive from
'process_stratum_target'.
* nto-low.cc (nto_target_ops): Remove.
(initialize_low): Set the_target to the singleton instance of
nto_process_target.
* win32-low.h (class win32_process_target): Derive from
'process_stratum_target'.
* win32-low.cc (win32_target_ops): Remove.
(initialize_low): Set the_target to the singleton instance of
win32_process_target.

Replace 'the_target->pt' with 'the_target' in the uses below.

* hostio.cc (hostio_error)
(handle_setfs)
(handle_open)
(handle_unlink)
(handle_readlink)
* linux-aarch32-low.cc (arm_breakpoint_at)
* linux-aarch64-low.cc (aarch64_breakpoint_at)
* linux-arm-low.cc (arm_sigreturn_next_pc)
(arm_get_hwcap)
(arm_get_syscall_trapinfo)
* linux-cris-low.cc (cris_breakpoint_at)
* linux-crisv32-low.cc (cris_breakpoint_at)
* linux-low.cc (handle_extended_wait)
(linux_wait_1)
(linux_read_memory)
(linux_process_target::breakpoint_kind_from_pc)
(linux_get_auxv)
* linux-m32r-low.cc (m32r_breakpoint_at)
* linux-mips-low.cc (mips_breakpoint_at)
* linux-nios2-low.cc (nios2_breakpoint_at)
* linux-ppc-low.cc (ppc_breakpoint_at)
* linux-s390-low.cc (s390_get_hwcap)
* linux-sh-low.cc (sh_breakpoint_at)
* linux-sparc-low.cc (sparc_fill_gregset_to_stack)
(sparc_store_gregset_from_stack)
(sparc_breakpoint_at)
* linux-tic6x-low.cc (tic6x_breakpoint_at)
* linux-tile-low.cc (tile_breakpoint_at)
* linux-x86-low.cc (x86_breakpoint_at)
* linux-xtensa-low.cc (xtensa_breakpoint_at)
* mem-break.cc (bp_size)
(bp_opcode)
(insert_memory_breakpoint)
(set_raw_breakpoint_at)
(delete_raw_breakpoint)
(z_type_supported)
(uninsert_raw_breakpoint)
(reinsert_raw_breakpoint)
(validate_inserted_breakpoint)
* regcache.cc (regcache_read_pc)
(regcache_write_pc)
* remote-utils.cc (putpkt_binary_1)
(input_interrupt)
(getpkt)
(prepare_resume_reply)
* server.cc (handle_general_set)
(handle_detach)
(handle_qxfer_auxv)
(handle_qxfer_exec_file)
(handle_qxfer_libraries_svr4)
(handle_qxfer_osdata)
(handle_qxfer_siginfo)
(handle_qxfer_fdpic)
(handle_query)
(resume)
(handle_v_requests)
(queue_stop_reply_callback)
(captured_main)
* target.cc (prepare_to_access_memory)
(done_accessing_memory)
(read_inferior_memory)
(target_write_memory)
(target_stop_and_wait)
(target_wait)
(target_mourn_inferior)
(target_continue_no_signal)
(target_continue)
(target_supports_multi_process)
(kill_inferior)
* target.h
(target_create_inferior)
(target_post_create_inferior)
(myattach)
(target_supports_fork_events)
(target_supports_vfork_events)
(target_supports_exec_events)
(target_handle_new_gdb_connection)
(detach_inferior)
(mythread_alive)
(fetch_inferior_registers)
(store_inferior_registers)
(join_inferior)
(target_supports_non_stop)
(target_async)
(target_process_qsupported)
(target_supports_catch_syscall)
(target_get_ipa_tdesc_idx)
(target_supports_tracepoints)
(target_supports_fast_tracepoints)
(target_get_min_fast_tracepoint_insn_len)
(target_thread_stopped)
(target_pause_all)
(target_unpause_all)
(target_stabilize_threads)
(target_install_fast_tracepoint_jump_pad)
(target_emit_ops)
(target_supports_disable_randomization)
(target_supports_agent)
(target_enable_btrace)
(target_disable_btrace)
(target_read_btrace)
(target_read_btrace_conf)
(target_supports_range_stepping)
(target_supports_stopped_by_sw_breakpoint)
(target_stopped_by_sw_breakpoint)
(target_supports_stopped_by_hw_breakpoint)
(target_supports_hardware_single_step)
(target_stopped_by_hw_breakpoint)
(target_breakpoint_kind_from_pc)
(target_breakpoint_kind_from_current_state)
(target_supports_software_single_step)
(target_core_of_thread)
(target_thread_name)
(target_thread_handle)
* win32-low.cc (do_initial_child_stuff)

Rename target op default definitions listed below.

* target.cc (process_target::post_create_inferior): Rename as ...
(process_stratum_target::post_create_inferior): ... this.
(process_target::prepare_to_access_memory): Rename as ...
(process_stratum_target::prepare_to_access_memory): ... this.
(process_target::done_accessing_memory): Rename as ...
(process_stratum_target::done_accessing_memory): ... this.
(process_target::look_up_symbols): Rename as ...
(process_stratum_target::look_up_symbols): ... this.
(process_target::supports_read_auxv): Rename as ...
(process_stratum_target::supports_read_auxv): ... this.
(process_target::read_auxv): Rename as ...
(process_stratum_target::read_auxv): ... this.
(process_target::supports_z_point_type): Rename as ...
(process_stratum_target::supports_z_point_type): ... this.
(process_target::insert_point): Rename as ...
(process_stratum_target::insert_point): ... this.
(process_target::remove_point): Rename as ...
(process_stratum_target::remove_point): ... this.
(process_target::stopped_by_sw_breakpoint): Rename as ...
(process_stratum_target::stopped_by_sw_breakpoint): ... this.
(process_target::supports_stopped_by_sw_breakpoint): Rename as ...
(process_stratum_target::supports_stopped_by_sw_breakpoint): ... this.
(process_target::stopped_by_hw_breakpoint): Rename as ...
(process_stratum_target::stopped_by_hw_breakpoint): ... this.
(process_target::supports_stopped_by_hw_breakpoint): Rename as ...
(process_stratum_target::supports_stopped_by_hw_breakpoint): ... this.
(process_target::supports_hardware_single_step): Rename as ...
(process_stratum_target::supports_hardware_single_step): ... this.
(process_target::stopped_by_watchpoint): Rename as ...
(process_stratum_target::stopped_by_watchpoint): ... this.
(process_target::stopped_data_address): Rename as ...
(process_stratum_target::stopped_data_address): ... this.
(process_target::supports_read_offsets): Rename as ...
(process_stratum_target::supports_read_offsets): ... this.
(process_target::read_offsets): Rename as ...
(process_stratum_target::read_offsets): ... this.
(process_target::supports_get_tls_address): Rename as ...
(process_stratum_target::supports_get_tls_address): ... this.
(process_target::get_tls_address): Rename as ...
(process_stratum_target::get_tls_address): ... this.
(process_target::hostio_last_error): Rename as ...
(process_stratum_target::hostio_last_error): ... this.
(process_target::supports_qxfer_osdata): Rename as ...
(process_stratum_target::supports_qxfer_osdata): ... this.
(process_target::qxfer_osdata): Rename as ...
(process_stratum_target::qxfer_osdata): ... this.
(process_target::supports_qxfer_siginfo): Rename as ...
(process_stratum_target::supports_qxfer_siginfo): ... this.
(process_target::qxfer_siginfo): Rename as ...
(process_stratum_target::qxfer_siginfo): ... this.
(process_target::supports_non_stop): Rename as ...
(process_stratum_target::supports_non_stop): ... this.
(process_target::async): Rename as ...
(process_stratum_target::async): ... this.
(process_target::start_non_stop): Rename as ...
(process_stratum_target::start_non_stop): ... this.
(process_target::supports_multi_process): Rename as ...
(process_stratum_target::supports_multi_process): ... this.
(process_target::supports_fork_events): Rename as ...
(process_stratum_target::supports_fork_events): ... this.
(process_target::supports_vfork_events): Rename as ...
(process_stratum_target::supports_vfork_events): ... this.
(process_target::supports_exec_events): Rename as ...
(process_stratum_target::supports_exec_events): ... this.
(process_target::handle_new_gdb_connection): Rename as ...
(process_stratum_target::handle_new_gdb_connection): ... this.
(process_target::handle_monitor_command): Rename as ...
(process_stratum_target::handle_monitor_command): ... this.
(process_target::core_of_thread): Rename as ...
(process_stratum_target::core_of_thread): ... this.
(process_target::supports_read_loadmap): Rename as ...
(process_stratum_target::supports_read_loadmap): ... this.
(process_target::read_loadmap): Rename as ...
(process_stratum_target::read_loadmap): ... this.
(process_target::process_qsupported): Rename as ...
(process_stratum_target::process_qsupported): ... this.
(process_target::supports_tracepoints): Rename as ...
(process_stratum_target::supports_tracepoints): ... this.
(process_target::read_pc): Rename as ...
(process_stratum_target::read_pc): ... this.
(process_target::write_pc): Rename as ...
(process_stratum_target::write_pc): ... this.
(process_target::supports_thread_stopped): Rename as ...
(process_stratum_target::supports_thread_stopped): ... this.
(process_target::thread_stopped): Rename as ...
(process_stratum_target::thread_stopped): ... this.
(process_target::supports_get_tib_address): Rename as ...
(process_stratum_target::supports_get_tib_address): ... this.
(process_target::get_tib_address): Rename as ...
(process_stratum_target::get_tib_address): ... this.
(process_target::pause_all): Rename as ...
(process_stratum_target::pause_all): ... this.
(process_target::unpause_all): Rename as ...
(process_stratum_target::unpause_all): ... this.
(process_target::stabilize_threads): Rename as ...
(process_stratum_target::stabilize_threads): ... this.
(process_target::supports_fast_tracepoints): Rename as ...
(process_stratum_target::supports_fast_tracepoints): ... this.
(process_target::get_min_fast_tracepoint_insn_len): Rename as ...
(process_stratum_target::get_min_fast_tracepoint_insn_len): ... this.
(process_target::emit_ops): Rename as ...
(process_stratum_target::emit_ops): ... this.
(process_target::supports_disable_randomization): Rename as ...
(process_stratum_target::supports_disable_randomization): ... this.
(process_target::supports_qxfer_libraries_svr4): Rename as ...
(process_stratum_target::supports_qxfer_libraries_svr4): ... this.
(process_target::qxfer_libraries_svr4): Rename as ...
(process_stratum_target::qxfer_libraries_svr4): ... this.
(process_target::supports_agent): Rename as ...
(process_stratum_target::supports_agent): ... this.
(process_target::enable_btrace): Rename as ...
(process_stratum_target::enable_btrace): ... this.
(process_target::disable_btrace): Rename as ...
(process_stratum_target::disable_btrace): ... this.
(process_target::read_btrace): Rename as ...
(process_stratum_target::read_btrace): ... this.
(process_target::read_btrace_conf): Rename as ...
(process_stratum_target::read_btrace_conf): ... this.
(process_target::supports_range_stepping): Rename as ...
(process_stratum_target::supports_range_stepping): ... this.
(process_target::supports_pid_to_exec_file): Rename as ...
(process_stratum_target::supports_pid_to_exec_file): ... this.
(process_target::pid_to_exec_file): Rename as ...
(process_stratum_target::pid_to_exec_file): ... this.
(process_target::supports_multifs): Rename as ...
(process_stratum_target::supports_multifs): ... this.
(process_target::multifs_open): Rename as ...
(process_stratum_target::multifs_open): ... this.
(process_target::multifs_unlink): Rename as ...
(process_stratum_target::multifs_unlink): ... this.
(process_target::multifs_readlink): Rename as ...
(process_stratum_target::multifs_readlink): ... this.
(process_target::breakpoint_kind_from_pc): Rename as ...
(process_stratum_target::breakpoint_kind_from_pc): ... this.
(process_target::breakpoint_kind_from_current_state): Rename as ...
(process_stratum_target::breakpoint_kind_from_current_state): ... this.
(process_target::thread_name): Rename as ...
(process_stratum_target::thread_name): ... this.
(process_target::thread_handle): Rename as ...
(process_stratum_target::thread_handle): ... this.
(process_target::supports_software_single_step): Rename as ...
(process_stratum_target::supports_software_single_step): ... this.
(process_target::supports_catch_syscall): Rename as ...
(process_stratum_target::supports_catch_syscall): ... this.
(process_target::get_ipa_tdesc_idx): Rename as ...
(process_stratum_target::get_ipa_tdesc_idx): ... this.

4 years agogdbserver: simply copy the pointer in 'set_target_ops'
Pedro Alves [Mon, 17 Feb 2020 15:12:03 +0000 (16:12 +0100)] 
gdbserver: simply copy the pointer in 'set_target_ops'

The 'set_target_ops' function takes a target op vector and creates a
clone of it via XNEW and memcpy.  This is not necessary.  'the_target'
is a singleton, and the argument that is passed to 'set_target_ops' is
always the address of a global, static object.  Therefore, update the
implementation to simply copy the pointer.

gdbserver/ChangeLog:
2020-02-20  Pedro Alves  <palves@redhat.com>

* target.cc (set_target_ops): Simply copy the given target pointer
instead of creating a copy of the pointed object.

4 years agogdbserver: turn target op 'get_ipa_tdesc_idx' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:03 +0000 (16:12 +0100)] 
gdbserver: turn target op 'get_ipa_tdesc_idx' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's get_ipa_tdesc_idx op into a method
of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_get_ipa_tdesc_idx): Update the macro.
* target.cc (process_target::get_ipa_tdesc_idx): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_get_ipa_tdesc_idx): Turn into ...
(linux_process_target::get_ipa_tdesc_idx): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'supports_catch_syscall' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:03 +0000 (16:12 +0100)] 
gdbserver: turn target op 'supports_catch_syscall' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_catch_syscall op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_supports_catch_syscall): Update the macro.
* target.cc (process_target::supports_catch_syscall): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_supports_catch_syscall): Turn into ...
(linux_process_target::supports_catch_syscall): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'supports_software_single_step' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:03 +0000 (16:12 +0100)] 
gdbserver: turn target op 'supports_software_single_step' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_software_single_step op
into a method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_supports_software_single_step): Update the macro.
* target.cc (process_target::supports_software_single_step): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_supports_software_single_step): Turn into ...
(linux_process_target::supports_software_single_step): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target ops 'thread_name' and 'thread_handle' into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:02 +0000 (16:12 +0100)] 
gdbserver: turn target ops 'thread_name' and 'thread_handle' into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's thread_name and thread_handle ops
into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(target_thread_name): Update the macro.
(target_thread_handle): Update the macro.
* target.cc (process_target::thread_name): Define.
(process_target::thread_handle): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_process_target::thread_name): Define.
(linux_process_target::thread_handle): Define.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn breakpoint kind-related target ops into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:02 +0000 (16:12 +0100)] 
gdbserver: turn breakpoint kind-related target ops into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's breakpoint_kind_from_pc,
sw_breakpoint_from_kind, and breakpoint_kind_from_current_state
ops into methods of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_breakpoint_kind_from_pc): Update the macro.
(target_breakpoint_kind_from_current_state): Update the macro.
(default_breakpoint_kind_from_pc): Remove declaration.
* target.cc (default_breakpoint_kind_from_pc): Turn into ...
(process_target::breakpoint_kind_from_pc): ... this.
(process_target::breakpoint_kind_from_current_state): Define.

Update the derived classes and callers below.

* mem-break.cc (bp_size): Update.
(bp_opcode): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_wait_1): Update.
(linux_breakpoint_kind_from_pc): Turn into ...
(linux_process_target::breakpoint_kind_from_pc): ... this.
(linux_sw_breakpoint_from_kind): Turn into ...
(linux_process_target::sw_breakpoint_from_kind): ... this.
(linux_breakpoint_kind_from_current_state): Turn into ...
(linux_process_target::breakpoint_kind_from_current_state): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_process_target::sw_breakpoint_from_kind): Define.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_sw_breakpoint_from_kind): Turn into ...
(nto_process_target::sw_breakpoint_from_kind): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_sw_breakpoint_from_kind): Turn into ...
(win32_process_target::sw_breakpoint_from_kind): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target ops 'multifs_{open, readlink, unlink}' into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:02 +0000 (16:12 +0100)] 
gdbserver: turn target ops 'multifs_{open, readlink, unlink}' into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's multifs_open, multifs_readlink,
multifs_unlink ops into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.  Also add
'supports_multifs'.
* target.cc: Include "fcntl.h", "unistd.h", "sys/types.h", and
"sys/stat.h".
(process_target::supports_multifs): Define.
(process_target::multifs_open): Define.
(process_target::multifs_readlink): Define.
(process_target::multifs_unlink): Define.

Update the derived classes and callers below.

* hostio.cc (handle_setfs): Update.
(handle_open): Update.
(handle_unlink): Update.
(handle_readlink): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_multifs): Define.
(linux_process_target::multifs_open): Define.
(linux_process_target::multifs_readlink): Define.
(linux_process_target::multifs_unlink): Define.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'pid_to_exec_file' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:02 +0000 (16:12 +0100)] 
gdbserver: turn target op 'pid_to_exec_file' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's pid_to_exec_file op into a method
of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.  Also add
'supports_pid_to_exec_file'.
* target.cc (process_target::pid_to_exec_file): Define.
(process_target::supports_pid_to_exec_file): Define.

Update the derived classes and callers below.

* server.cc (handle_qxfer_exec_file): Update.
(handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_pid_to_exec_file): Define.
(linux_process_target::pid_to_exec_file): Define.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'supports_range_stepping' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:01 +0000 (16:12 +0100)] 
gdbserver: turn target op 'supports_range_stepping' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_range_stepping op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_supports_range_stepping): Update the macro.
* target.cc (process_target::supports_range_stepping): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_supports_range_stepping): Turn into ...
(linux_process_target::supports_range_stepping): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn btrace-related target ops into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:01 +0000 (16:12 +0100)] 
gdbserver: turn btrace-related target ops into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's btrace-related ops (enable_btrace,
disable_btrace, read_btrace, read_btrace_conf) into methods of
process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(target_enable_btrace): Update.
(target_disable_btrace): Update.
(target_read_btrace): Update.
(target_read_btrace_conf): Update.
* target.cc (process_target::enable_btrace): Define.
(process_target::disable_btrace): Define.
(process_target::read_btrace): Define.
(process_target::read_btrace_conf): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_process_target:enable_btrace): Define as a wrapper around
linux_enable_btrace.
(linux_low_disable_btrace): Turn into ...
(linux_process_target::disable_btrace): ... this.
(linux_low_read_btrace): Turn into ...
(linux_process_target::read_btrace): ... this.
(linux_low_btrace_conf): Turn into ...
(linux_process_target::read_btrace_conf): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'supports_agent' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:01 +0000 (16:12 +0100)] 
gdbserver: turn target op 'supports_agent' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_agent op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_supports_agent): Update the macro.
* target.cc (process_target::supports_agent): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_supports_agent): Turn into ...
(linux_process_target::supports_agent): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'qxfer_libraries_svr4' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:01 +0000 (16:12 +0100)] 
gdbserver: turn target op 'qxfer_libraries_svr4' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's qxfer_libraries_svr4 op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.  Also add
'supports_qxfer_libraries_svr4'.
* target.cc (process_target::qxfer_libraries_svr4): Define.
(process_target::supports_qxfer_libraries_svr4): Define.

Update the derived classes and callers below.

* server.cc (handle_qxfer_libraries_svr4): Update.
(handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_qxfer_libraries_svr4): Define.
(linux_qxfer_libraries_svr4): Turn into ...
(linux_process_target::qxfer_libraries_svr4): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'supports_disable_randomization' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:01 +0000 (16:12 +0100)] 
gdbserver: turn target op 'supports_disable_randomization' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_disable_randomization op
into a method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_supports_disable_randomization): Update the macro.
* target.cc (process_target::supports_disable_randomization): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_supports_disable_randomization): Turn into ...
(linux_process_target::supports_disable_randomization): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'emit_ops' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:00 +0000 (16:12 +0100)] 
gdbserver: turn target op 'emit_ops' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's emit_ops op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_emit_ops): Update the macro.
* target.cc (process_target::emit_ops): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_emit_ops): Turn into ...
(linux_process_target::emit_ops): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn fast tracepoint target ops into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:00 +0000 (16:12 +0100)] 
gdbserver: turn fast tracepoint target ops into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's install_fast_tracepoint_jump_pad
and get_min_fast_tracepoint_insn_len ops into methods of
process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.  Also add
'supports_fast_tracepoints'.
(target_supports_fast_tracepoints): Update the macro.
(target_get_min_fast_tracepoint_insn_len): Update the macro.
(install_fast_tracepoint_jump_pad): Update and rename the macro
to ...
(target_install_fast_tracepoint_jump_pad): ... this.
* target.cc (process_target::supports_fast_tracepoints): Define.
(process_target::install_fast_tracepoint_jump_pad): Define.
(process_target::get_min_fast_tracepoint_insn_len): Define.

Update the derived classes and callers below.

* tracepoint.cc (install_fast_tracepoint): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_fast_tracepoints): Define.
(linux_install_fast_tracepoint_jump_pad): Turn into ...
(linux_process_target::install_fast_tracepoint_jump_pad): ... this.
(linux_get_min_fast_tracepoint_insn_len): Turn into ...
(linux_process_target::get_min_fast_tracepoint_insn_len): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'stabilize_threads' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:00 +0000 (16:12 +0100)] 
gdbserver: turn target op 'stabilize_threads' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's stabilize_threads op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_stabilize_threads): Update the macro.
* target.cc (process_target::stabilize_threads): Define.

Update the derived classes and callers below.

* server.cc (handle_status): Update.
* tracepoint.cc (cmd_qtdp): Update.
(cmd_qtstart): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_stabilize_threads): Turn into ...
(linux_process_target::stabilize_threads): ... this.
(linux_wait_1): Update.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target ops 'pause_all' and 'unpause_all' into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:12:00 +0000 (16:12 +0100)] 
gdbserver: turn target ops 'pause_all' and 'unpause_all' into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's pause_all and unpause_all ops
into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(pause_all): Update the macro and rename to...
(target_pause_all): ... this.
(unpause_all): Update the macro and rename to...
(target_unpause_all): ... this.
* target.cc (process_target::pause_all): Define.
(process_target::unpause_all): Define.

Update the derived classes and callers below.

* server.cc (handle_status): Update.
* tracepoint.cc (clear_installed_tracepoints): Update.
(cmd_qtdp): Update.
(cmd_qtstart): Update.
(stop_tracing): Update.
(cmd_qtstatus): Update.
(upload_fast_traceframes): Update.
(run_inferior_command): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_pause_all): Turn into ...
(linux_process_target::pause_all): ... this.
(linux_unpause_all): Turn into ...
(linux_process_target::unpause_all): ... this.
(linux_process_target::prepare_to_access_memory): Update.
(linux_process_target::done_accessing_memory): Update.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'get_tib_address' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:59 +0000 (16:11 +0100)] 
gdbserver: turn target op 'get_tib_address' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's get_tib_address op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.  Also add
'supports_get_tib_address'.
* target.cc (process_target::get_tib_address): Define.
(process_target::supports_get_tib_address): Define.

Update the derived classes and callers below.

* server.cc (handle_query): Update.
* linux-low.cc (win32_target_ops): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_process_target::supports_get_tib_address): Define.
(win32_get_tib_address): Turn into ...
(win32_process_target::get_tib_address): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'thread_stopped' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:59 +0000 (16:11 +0100)] 
gdbserver: turn target op 'thread_stopped' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's thread_stopped op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.  Also add
'supports_thread_stopped'.
(target_thread_stopped): Update the macro.
* target.cc (process_target::thread_stopped): Define.
(process_target::supports_thread_stopped): Define.
(prepare_to_access_memory): Update.

Update the derived classes and callers below.

* server.cc (queue_stop_reply_callback): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_thread_stopped): Define.
(linux_thread_stopped): Turn into ...
(linux_process_target::thread_stopped): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target ops 'read_pc' and 'write_pc' into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:59 +0000 (16:11 +0100)] 
gdbserver: turn target ops 'read_pc' and 'write_pc' into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's read_pc and write_pc ops into
methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
* target.cc (process_target::read_pc): Define.
(process_target::write_pc): Define.

Update the derived classes and callers below.

* regcache.cc (regcache_read_pc): Update.
(regcache_write_pc): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_read_pc): Turn into ...
(linux_process_target::read_pc): ... this.
(linux_write_pc): Turn into ...
(linux_process_target::write_pc): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'supports_tracepoints' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:59 +0000 (16:11 +0100)] 
gdbserver: turn target op 'supports_tracepoints' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_tracepoints op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_supports_tracepoints): Update the macro.
* target.cc (process_target::supports_tracepoints): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_supports_tracepoints): Turn into ...
(linux_process_target::supports_tracepoints): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'process_qsupported' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:58 +0000 (16:11 +0100)] 
gdbserver: turn target op 'process_qsupported' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's process_qsupported op into a method
of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_process_qsupported): Update the macro.
* target.cc (process_target::process_qsupported): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_process_qsupported): Turn into ...
(linux_process_target::process_qsupported): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'read_loadmap' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:58 +0000 (16:11 +0100)] 
gdbserver: turn target op 'read_loadmap' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's read_loadmap op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.  Also add
'supports_read_loadmap'.
* target.cc (process_target::read_loadmap): Define.
(process_target::supports_read_loadmap): Define.

Update the derived classes and callers below.

* server.cc (handle_qxfer_fdpic): Update.
(handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_read_loadmap): Define.
(linux_read_loadmap): Turn into ...
(linux_process_target::read_loadmap): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'core_of_thread' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:58 +0000 (16:11 +0100)] 
gdbserver: turn target op 'core_of_thread' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's core_of_thread op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_core_of_thread): Update the macro.
* target.cc (process_target::core_of_thread): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_process_target::core_of_thread): Define.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'handle_monitor_command' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:58 +0000 (16:11 +0100)] 
gdbserver: turn target op 'handle_monitor_command' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's handle_monitor_command op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_handle_monitor_command): Update the macro.
* target.cc (process_target::handle_monitor_command): Define.

Update the derived classes and callers below.

* server.cc (handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::handle_monitor_command): Define.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'handle_new_gdb_connection' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:57 +0000 (16:11 +0100)] 
gdbserver: turn target op 'handle_new_gdb_connection' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's handle_new_gdb_connection op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_handle_new_gdb_connection): Update the macro.
* target.cc (process_target::handle_new_gdb_connection): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_handle_new_gdb_connection): Turn into ...
(linux_process_target::handle_new_gdb_connection): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target ops 'supports_{fork,vfork,exec}_events' into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:57 +0000 (16:11 +0100)] 
gdbserver: turn target ops 'supports_{fork,vfork,exec}_events' into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_fork_events,
supports_vfork_events, and supports_exec_events ops into methods
of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(target_supports_fork_events): Update the macro.
(target_supports_vfork_events): Update the macro.
(target_supports_exec_events): Update the macro.
* target.cc (process_target::supports_fork_events): Define.
(process_target::supports_vfork_events): Define.
(process_target::supports_exec_events): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_supports_fork_events): Turn into ...
(linux_process_target::supports_fork_events): ... this.
(linux_supports_vfork_events): Turn into ...
(linux_process_target::supports_vfork_events): ... this.
(linux_supports_exec_events): Turn into ...
(linux_process_target::supports_exec_events): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'supports_multi_process' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:57 +0000 (16:11 +0100)] 
gdbserver: turn target op 'supports_multi_process' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_multi_process op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
* target.cc (process_target::supports_multi_process): Define.
(target_supports_multi_process): Update.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_supports_multi_process): Turn into ...
(linux_process_target::supports_multi_process): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn non-stop and async target ops into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:57 +0000 (16:11 +0100)] 
gdbserver: turn non-stop and async target ops into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_non_stop, async, and
start_non_stop ops into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(target_supports_non_stop): Update the macro.
(target_async): Update the macro.
(start_non_stop): Remove declaration.
* target.cc (process_target::supports_non_stop): Define.
(process_target::async): Define.
(process_target::start_non_stop): Define.
(start_non_stop): Remove.

Update the derived classes and callers below.

* server.cc (handle_qxfer_siginfo): Update.
(handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_supports_non_stop): Turn into ...
(linux_process_target::supports_non_stop): ... this.
(linux_async): Turn into ...
(linux_process_target::async): ... this.
(linux_start_non_stop): Turn into ...
(linux_process_target::start_non_stop): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_supports_non_stop): Remove; rely on the default behavior
instead.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'qxfer_siginfo' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:57 +0000 (16:11 +0100)] 
gdbserver: turn target op 'qxfer_siginfo' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's qxfer_siginfo op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.  Also add
'supports_qxfer_siginfo'.
* target.cc (process_target::qxfer_siginfo): Define.
(process_target::supports_qxfer_siginfo): Define.

Update the derived classes and callers below.

* server.cc (handle_qxfer_siginfo): Update.
(handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_qxfer_siginfo): Define.
(linux_xfer_siginfo): Turn into ...
(linux_process_target::qxfer_siginfo): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'qxfer_osdata' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:56 +0000 (16:11 +0100)] 
gdbserver: turn target op 'qxfer_osdata' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's qxfer_osdata op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.  Also add
'supports_qxfer_osdata'.
* target.cc (process_target::qxfer_osdata): Define.
(process_target::supports_qxfer_osdata): Define.

Update the derived classes and callers below.

* server.cc (handle_qxfer_osdata): Update.
(handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_qxfer_osdata): Define.
(linux_qxfer_osdata): Turn into ...
(linux_process_target::qxfer_osdata): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'hostio_last_error' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:56 +0000 (16:11 +0100)] 
gdbserver: turn target op 'hostio_last_error' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's hostio_last_error op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
* target.cc: Add "hostio.h" to includes.
(process_target::hostio_last_error): Define.

Update the derived classes and callers below.

* hostio.cc (hostio_error): Update.
* linux-low.cc: Remove "hostio.h" from includes.
(linux_target_ops): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.h (class win32_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(wince_hostio_last_error): Turn into ...
(win32_process_target::hostio_last_error): ... this.

4 years agogdbserver: turn target op 'get_tls_address' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:56 +0000 (16:11 +0100)] 
gdbserver: turn target op 'get_tls_address' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's get_tls_address op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.  Also add
'supports_get_tls_address'.
* target.cc (process_target::get_tls_address): Define.
(process_target::supports_get_tls_address): Define.

Update the derived classes and callers below.

* server.cc (handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_get_tls_address): Define.
(linux_process_target::get_tls_address): Define.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'read_offsets' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:56 +0000 (16:11 +0100)] 
gdbserver: turn target op 'read_offsets' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's read_offsets op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.  Also add
'supports_read_offsets'.
* target.cc (process_target::read_offsets): Define.
(process_target::supports_read_offsets): Define.

Update the derived classes and callers below.

* server.cc (handle_query): Update.
* linux-low.cc (SUPPORTS_READ_OFFSETS): New #define directive.
(linux_target_ops): Update.
(linux_process_target::supports_read_offsets): Define.
(linux_read_offsets): Turn into ...
(linux_process_target::read_offsets): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target ops 'stopped_by_watchpoint' and 'stopped_data_address' into...
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:55 +0000 (16:11 +0100)] 
gdbserver: turn target ops 'stopped_by_watchpoint' and 'stopped_data_address' into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's stopped_by_watchpoint and
stopped_data_address ops into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
* target.cc (process_target::stopped_by_watchpoint): Define.
(process_target::stopped_data_address): Define.

Update the derived classes and callers below.

* remote-utils.cc (prepare_resume_reply): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_stopped_by_watchpoint): Turn into ...
(linux_process_target::stopped_by_watchpoint): ... this.
(linux_stopped_data_address): Turn into ...
(linux_process_target::stopped_data_address): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_stopped_by_watchpoint): Turn into ...
(nto_process_target::stopped_by_watchpoint): ... this.
(nto_stopped_data_address): Turn into ...
(nto_process_target::stopped_data_address): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_stopped_by_watchpoint): Turn into ...
(win32_process_target::stopped_by_watchpoint): ... this.
(win32_stopped_data_address): Turn into ...
(win32_process_target::stopped_data_address): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'supports_hardware_single_step' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:55 +0000 (16:11 +0100)] 
gdbserver: turn target op 'supports_hardware_single_step' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_hardware_single_step op into
a method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_supports_hardware_single_step): Update the macro.
(target_can_do_hardware_single_step): Remove declaration.
* target.cc (process_target::supports_hardware_single_step): Define.
(target_can_do_hardware_single_step): Remove.

Update the derived classes and callers below.

* linux-low.h (class linux_process_target): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_supports_hardware_single_step): Turn into ...
(linux_process_target::supports_hardware_single_step): ... this.
* lynx-low.h (class lynx_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_process_target::supports_hardware_single_step): Define.
* nto-low.h (class nto_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_process_target::supports_hardware_single_step): Define.
* win32-low.h (class win32_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_process_target::supports_hardware_single_step): Define.

4 years agogdbserver: turn target op '{supports_}stopped_by_hw_breakpoint' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:55 +0000 (16:11 +0100)] 
gdbserver: turn target op '{supports_}stopped_by_hw_breakpoint' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's {supports_}stopped_by_hw_breakpoint
ops into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(target_stopped_by_hw_breakpoint): Update the macro.
(target_supports_stopped_by_hw_breakpoint): Update the macro.
* target.cc (process_target::stopped_by_hw_breakpoint): Define.
(process_target::supports_stopped_by_hw_breakpoint): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_stopped_by_hw_breakpoint): Turn into ...
(linux_process_target::stopped_by_hw_breakpoint): ... this.
(linux_supports_stopped_by_hw_breakpoint): Turn into ...
(linux_process_target::supports_stopped_by_hw_breakpoint): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op '{supports_}stopped_by_sw_breakpoint' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:55 +0000 (16:11 +0100)] 
gdbserver: turn target op '{supports_}stopped_by_sw_breakpoint' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's {supports_}stopped_by_sw_breakpoint
ops into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(target_stopped_by_sw_breakpoint): Update the macro.
(target_supports_stopped_by_sw_breakpoint): Update the macro.
* target.cc (process_target::stopped_by_sw_breakpoint): Define.
(process_target::supports_stopped_by_sw_breakpoint): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_stopped_by_sw_breakpoint): Turn into ...
(linux_process_target::stopped_by_sw_breakpoint): ... this.
(linux_supports_stopped_by_sw_breakpoint): Turn into ...
(linux_process_target::supports_stopped_by_sw_breakpoint): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target ops 'insert_point' and 'remove_point' into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:54 +0000 (16:11 +0100)] 
gdbserver: turn target ops 'insert_point' and 'remove_point' into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's insert_point and remove_point ops
into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
* target.cc (process_target::insert_point): Define.
(process_target::remove_point): Define.

Update the derived classes and callers below.

* mem-break.cc (set_raw_breakpoint_at): Update.
(delete_raw_breakpoint): Update.
(uninsert_raw_breakpoint): Update.
(reinsert_raw_breakpoint): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_insert_point): Turn into ...
(linux_process_target::insert_point): ... this.
(linux_remove_point): Turn into ...
(linux_process_target::remove_point): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_insert_point): Turn into ...
(nto_process_target::insert_point): ... this.
(nto_remove_point): Turn into ...
(nto_process_target::remove_point): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_insert_point): Turn into ...
(win32_process_target::insert_point): ... this.
(win32_remove_point): Turn into ...
(win32_process_target::remove_point): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'supports_z_point_type' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:54 +0000 (16:11 +0100)] 
gdbserver: turn target op 'supports_z_point_type' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's supports_z_point_type op into a
method of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
* target.cc (process_target::supports_z_point_type): Define.

Update the derived classes and callers below.

* mem-break.cc (z_type_supported): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_supports_z_point_type): Turn into ...
(linux_process_target::supports_z_point_type): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_supports_z_point_type): Turn into ...
(nto_process_target::supports_z_point_type): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_supports_z_point_type): Turn into ...
(win32_process_target::supports_z_point_type): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'read_auxv' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:54 +0000 (16:11 +0100)] 
gdbserver: turn target op 'read_auxv' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's read_auxv op into a method of
process_target.

* target.h (class process_stratum_target): Remove the target op.
(struct process_target): Add the target op.  Also add
'supports_read_auxv'.
* target.cc (process_target::read_auxv): Define.
(process_target::supports_read_auxv): Define.

Update the derived classes and callers below.

* server.cc (handle_qxfer_auxv): Update.
(handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_process_target::supports_read_auxv): Define.
(linux_read_auxv): Turn into ...
(linux_process_target::read_auxv): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_process_target::supports_read_auxv): Define.
(nto_read_auxv): Turn into ...
(nto_process_target::read_auxv): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'request_interrupt' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:54 +0000 (16:11 +0100)] 
gdbserver: turn target op 'request_interrupt' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's request_interrupt op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.

Update the derived classes and callers below.

* remote-utils.cc (putpkt_binary_1): Update.
(input_interrupt): Update.
(getpkt): Update.
* server.cc (handle_v_requests): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_request_interrupt): Turn into ...
(linux_process_target::request_interrupt): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_request_interrupt): Turn into ...
(lynx_process_target::request_interrupt): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_request_interrupt): Turn into ...
(nto_process_target::request_interrupt): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_request_interrupt): Turn into ...
(win32_process_target::request_interrupt): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'look_up_symbols' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:53 +0000 (16:11 +0100)] 
gdbserver: turn target op 'look_up_symbols' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's look_up_symbols op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
* target.cc (process_target::look_up_symbols): Define.

Update the derived classes and callers below.

* server.cc (handle_query): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_look_up_symbols): Turn into ...
(linux_process_target::look_up_symbols): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target ops 'read_memory' and 'write_memory' into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:53 +0000 (16:11 +0100)] 
gdbserver: turn target ops 'read_memory' and 'write_memory' into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's read_memory and write_memory
ops into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.

Update the derived classes and callers below.

* linux-aarch32-low.cc (arm_breakpoint_at): Update.
* linux-aarch64-low.cc (aarch64_breakpoint_at): Update.
* linux-arm-low.cc (arm_sigreturn_next_pc): Update.
(arm_get_syscall_trapinfo): Update.
* linux-cris-low.cc (cris_breakpoint_at): Update.
* linux-crisv32-low.cc (cris_breakpoint_at): Update.
* linux-m32r-low.cc (m32r_breakpoint_at): Update.
* linux-mips-low.cc (mips_breakpoint_at): Update.
* linux-nios2-low.cc (nios2_breakpoint_at): Update.
* linux-ppc-low.cc (ppc_breakpoint_at): Update.
* linux-sh-low.cc (sh_breakpoint_at): Update.
* linux-sparc-low.cc (sparc_fill_gregset_to_stack): Update.
(sparc_store_gregset_from_stack): Update.
(sparc_breakpoint_at): Update.
* linux-tic6x-low.cc (tic6x_breakpoint_at): Update.
* linux-tile-low.cc (tile_breakpoint_at): Update.
* linux-x86-low.cc (x86_breakpoint_at): Update.
* linux-xtensa-low.cc (xtensa_breakpoint_at): Update.
* mem-brea.cc (insert_memory_breakpoint): Update.
(validate_inserted_breakpoint): Update.
* target.cc (read_inferior_memory): Update.
(target_write_memory): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_read_memory): Make a wrapper around the read_memory target
op call.
(linux_process_target::read_memory): Rename from linux_read_memory.
(linux_write_memory): Turn into ...
(linux_process_target::write_memory): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_read_memory): Turn into ...
(lynx_process_target::read_memory): ... this.
(lynx_write_memory): Turn into ...
(lynx_process_target::write_memory): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_read_memory): Turn into ...
(nto_process_target::read_memory): ... this.
(nto_write_memory): Turn into ...
(nto_process_target::write_memory): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_read_inferior_memory): Turn into ...
(win32_process_target::read_memory): ... this.
(win32_write_inferior_memory): Turn into ...
(win32_process_target::write_memory): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn prepare_to_access_memory & done_accessing_memory into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:53 +0000 (16:11 +0100)] 
gdbserver: turn prepare_to_access_memory & done_accessing_memory into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's prepare_to_access_memory and
done_accessing_memory ops into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
* target.cc (process_target::prepare_to_access_memory): Define.
(process_target::done_accessing_memory): Define.
(prepare_to_access_memory): Update.
(done_accessing_memory): Update.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_prepare_to_access_memory): Turn into ...
(linux_process_target::prepare_to_access_memory): ... this.
(linux_done_accessing_memory): Turn into ...
(linux_process_target::done_accessing_memory): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target ops 'fetch_registers' and 'store_registers' into methods
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:53 +0000 (16:11 +0100)] 
gdbserver: turn target ops 'fetch_registers' and 'store_registers' into methods

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's fetch_registers and store_registers
ops into methods of process_target.

* target.h (struct process_stratum_target): Remove the target ops.
(class process_target): Add the target ops.
(fetch_inferior_registers): Update the macro.
(store_inferior_registers): Update the macro.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_fetch_registers): Turn into ...
(linux_process_target::fetch_registers): ... this.
(linux_store_registers): Turn into ...
(linux_process_target::store_registers): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_fetch_registers): Turn into ...
(lynx_process_target::fetch_registers): ... this.
(lynx_store_registers): Turn into ...
(lynx_process_target::store_registers): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_fetch_registers): Turn into ...
(nto_process_target::fetch_registers): ... this.
(nto_store_registers): Turn into ...
(nto_process_target::store_registers): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_fetch_inferior_registers): Turn into ...
(win32_process_target::fetch_registers): ... this.
(win32_store_inferior_registers): Turn into ...
(win32_process_target::store_registers): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'wait' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:52 +0000 (16:11 +0100)] 
gdbserver: turn target op 'wait' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's wait op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.

Update the derived classes and callers below.

* target.cc (target_wait): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_wait): Turn into ...
(linux_process_target::wait): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_wait): Turn into ...
(lynx_process_target::wait): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_wait): Turn into ...
(nto_process_target::wait): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_wait): Turn into ...
(win32_process_target::wait): ... this.
(do_initial_child_stuff): Update.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'resume' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:52 +0000 (16:11 +0100)] 
gdbserver: turn target op 'resume' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's resume op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.

Update the derived classes and callers below.

* server.cc (resume): Update.
* target.cc (target_stop_and_wait): Update.
(target_continue_no_signal): Update.
(target_continue): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_resume): Turn into ...
(linux_process_target::resume): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_resume): Turn into ...
(lynx_process_target::resume): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_resume): Turn into ...
(nto_process_target::resume): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_resume): Turn into ...
(win32_process_target::resume): ... this.
(win32_process_target::detach): Update.
(do_initial_child_stuff): Update.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'thread_alive' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:52 +0000 (16:11 +0100)] 
gdbserver: turn target op 'thread_alive' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's thread_alive op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(mythread_alive): Update the macro.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_thread_alive): Turn into ...
(linux_process_target::thread_alive): ... this.
(wait_for_sigstop): Update.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_thread_alive): Turn into ...
(lynx_process_target::thread_alive): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_thread_alive): Turn into ...
(nto_process_target::thread_alive): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_thread_alive): Turn into ...
(win32_process_target::thread_alive): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'join' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:52 +0000 (16:11 +0100)] 
gdbserver: turn target op 'join' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's join op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(join_inferior): Update the macro.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_join): Turn into ...
(linux_process_target::join): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_join): Turn into ...
(lynx_process_target::join): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_process_target::join): Define.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_join): Turn into ...
(win32_process_target::join): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'mourn' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:51 +0000 (16:11 +0100)] 
gdbserver: turn target op 'mourn' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's mourn op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.

Update the derived classes and callers below.

* target.cc (target_mourn_inferior): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_mourn): Turn into ...
(linux_process_target::mourn): ... this.
(handle_extended_wait): Update.
(linux_process_target::kill): Update.
(linux_process_target::detach): Update.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_mourn): Turn into ...
(lynx_process_target::mourn): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_mourn): Turn into ...
(nto_process_target::mourn): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_mourn): Turn into ...
(win32_process_target::mourn): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'detach' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:51 +0000 (16:11 +0100)] 
gdbserver: turn target op 'detach' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's detach op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(detach_inferior): Update the macro.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_detach): Turn into ...
(linux_process_target::detach): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_detach): Turn into ...
(lynx_process_target::detach): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_detach): Turn into ...
(nto_process_target::detach): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_detach): Turn into ...
(win32_process_target::detach): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'kill' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:51 +0000 (16:11 +0100)] 
gdbserver: turn target op 'kill' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's kill op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.

Update the derived classes and callers below.

* target.cc (kill_inferior): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_kill): Turn into ...
(linux_process_target::kill): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_kill): Turn into ...
(lynx_process_target::kill): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_kill): Turn into ...
(nto_process_target::kill): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_kill): Turn into ...
(win32_process_target::kill): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'attach' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:51 +0000 (16:11 +0100)] 
gdbserver: turn target op 'attach' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's attach op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(myattach): Update the macro.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_attach): Turn into ...
(linux_process_target::attach): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_attach): Turn into ...
(lynx_process_target::attach): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_attach): Turn into ...
(nto_process_target::attach): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_attach): Turn into ...
(win32_process_target::attach): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: turn target op 'post_create_inferior' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:51 +0000 (16:11 +0100)] 
gdbserver: turn target op 'post_create_inferior' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's post_create_inferior op into a method
of process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(target_post_create_inferior): Update the macro.
* target.cc (process_target::post_create_inferior): Define.

Update the derived classes and callers below.

* linux-low.cc (linux_target_ops): Update.
(linux_post_create_inferior): Turn into ...
(linux_process_target::post_create_inferior): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
* nto-low.cc (nto_target_ops): Update.
* win32-low.cc (win32_target_ops): Update.

4 years agogdbserver: turn target op 'create_inferior' into a method
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:50 +0000 (16:11 +0100)] 
gdbserver: turn target op 'create_inferior' into a method

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

Turn process_stratum_target's create_inferior op into a method of
process_target.

* target.h (struct process_stratum_target): Remove the target op.
(class process_target): Add the target op.
(create_inferior): Rename the macro to ...
(target_create_inferior): ... this.

Update the derived classes and callers below.

* server.cc (handle_v_run): Update.
(captured_main): Update.
(process_serial_event): Update.
* linux-low.cc (linux_target_ops): Update.
(linux_create_inferior): Turn into ...
(linux_process_target::create_inferior): ... this.
* linux-low.h (class linux_process_target): Update.
* lynx-low.cc (lynx_target_ops): Update.
(lynx_create_inferior): Turn into ...
(lynx_process_target::create_inferior): ... this.
* lynx-low.h (class lynx_process_target): Update.
* nto-low.cc (nto_target_ops): Update.
(nto_create_inferior): Turn into ...
(nto_process_target::create_inferior): ... this.
* nto-low.h (class nto_process_target): Update.
* win32-low.cc (win32_target_ops): Update.
(win32_create_inferior): Turn into ...
(win32_process_target::create_inferior): ... this.
* win32-low.h (class win32_process_target): Update.

4 years agogdbserver: start turning the target ops vector into a class
Tankut Baris Aktemur [Mon, 17 Feb 2020 15:11:50 +0000 (16:11 +0100)] 
gdbserver: start turning the target ops vector into a class

This is the beginning of a series of patches where the goal is to turn
the target ops vector into a class and all the target op function
pointers into methods of this class.

Currently, the target ops is a struct of function pointers.  At the
end of the series, it becomes a class with methods, and the existing
low target definitions become subclasses.  That is, we end up with the
following class hierarchy:

  process_stratum_target
  ^
  |-- linux-low
  |-- lynx-low
  |-- nto-low
  |-- win32-low

process_stratum_target either defines the default behavior for the
target ops or leaves them as pure virtual for the subclasses to
override.

The transformation is done by first introducing a helper class, called
'process_target', that is initially empty.  An instance of this class
is added to the end of the current target ops vector.  This new field
is called 'pt'.  We will gradually carry target ops to the new class,
one by one, whereas the invocation of the target op will be converted
to a method call on 'pt'.

For instance, target op 'attach' is currently invoked as

  (*the_target->attach) (args)

After moving 'attach' as a method to 'process_target', it will be
invoked as

  the_target->pt->attach (args)

In this process, the concrete target vector definitions
(e.g. linux-low, win32-low, nto-low, etc.) are turned into derived
classes of 'process_target', so that they can either inherit the
default behavior of the target ops or can override the method.

We prefer to make this transition gradually rather than in a single
giant patch, to yield bite-size patches.  The goal is that after each
patch gdbserver will still be buildable and testable.

The general rule of thumb when converting a target op to a method is
this:

(1) If the function call is protected with a NULL-check with an
obvious default behavior, simply implement that default behavior in
the base class (e.g.: supports_non_stop).

(2) If there is no NULL-check guard, the method becomes pure
virtual, and the derived targets are required to implement the method
(e.g.: attach).

(3) If there is a NULL-check but no apparent default behavior, or if
the NULL-check is utilized to populate a feature support packet,
introduce a 'supports_XYZ' method (e.g.: pid_to_exec_file).

The overall strategy is to preserve the existing behavior as much as
possible.

When we're done moving all the target ops into 'process_target', the
target op vector will contain nothing but the field 'pt'.  At that
point, the auxiliary class 'process_target' will simply meld into
'process_stratum_target' and the method calls of the form
'the_target->pt->xyz' will be turned into 'the_target->xyz'.

The "linux-low" target has been built and reg-tested on X86_64 Linux
(Ubuntu).  The "win32-low" target has been built (but not tested) via
cross-compilation to a x86_64-w64-mingw32 target.  The "lynx-low" and
"nto-low" targets were neither built nor tested.

gdbserver/ChangeLog:
2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

* target.h (class process_target): New class definition.
(struct process_stratum_target) <pt>: New field with type
'process_target*'.
* linux-low.h (class linux_process_target): Define as a derived
class of 'process_target'.
* linux-low.cc (linux_target_ops): Add a linux_process_target*
as the 'pt' field.
* lynx-low.h (class lynx_process_target): Define as a derived
class of 'process_target'.
* lynx-low.cc (lynx_target_ops): Add a lynx_process_target*
as the 'pt' field.
* nto-low.h (class nto_process_target): Define as a derived
class of 'process_target'.
* nto-low.cc (nto_target_ops): Add an nto_process_target*
as the 'pt' field.
* win32-low.h (class win32_process_target): Define as a derived
class of 'process_target'.
* win32-low.cc (win32_target_ops): Add a win32_process_target*
as the 'pt' field.

4 years agoStop the BFD library from automatically converting OS and PROC specific symbol sectio...
Nick Clifton [Thu, 20 Feb 2020 13:08:29 +0000 (13:08 +0000)] 
Stop the BFD library from automatically converting OS and PROC specific symbol section indicies to SHN_ABS, and provide a hook for backends to decide how such indicies should be processed.

* elf-bfd.h (struct elf_backend_data): Add symbol_section_index
callback.
* elfxx-target.h (elf_backend_symbol_section_index): Provide
default definition.
(elfNN_bed): Initialise the symbol_section_index field.
* elf.c (swap_out_syms): Call symbol_section_index, if defined, on
OS and PROC specific section indicies.  Warn if converting other
reserved incidies to SHN_ABS.

4 years agogdb: Allow more control over where to find python libraries
Andrew Burgess [Fri, 17 Jan 2020 00:10:22 +0000 (00:10 +0000)] 
gdb: Allow more control over where to find python libraries

The motivation behind this commit is to make it easier to bundle the
Python *.py library files with GDB when statically linking GDB against
libpython.  The Python files will be manually added into the GDB
installation tree, and GDB should be able to find them at run-time.
The installation tree will look like this:

  .
  |-- bin/
  |-- include/
  |-- lib/
  |   `-- python3.8/
  `-- share/

The benefit here is that the entire installation tree can be bundled
into a single archive and copied to another machine with a different
version of Python installed, and GDB will still work, including its
Python support.

In use the new configure options would be used something like this,
first build and install a static Python library:

  mkdir python
  cd python
  # Clone or download Python into a src/ directory.
  mkdir build
  export PYTHON_INSTALL_PATH=$PWD/install
  cd build
  ../src/configure --disable-shared --prefix=$PYTHON_INSTALL_PATH
  make
  make install

Now build and install GDB:

  mkdir binutils-gdb
  cd binutils-gdb
  # Clone or download GDB into a src/ directory.
  mkdir build
  export GDB_INSTALL_DIR=$PWD/install
  cd build
  ../src/configure \
      --prefix=$GDB_INSTALL_DIR \
      --with-python=$PYTHON_INSTALL_PATH/bin/python3 \
      --with-python-libdir=$GDB_INSTALL_DIR/lib
  make all-gdb
  make install-gdb

Finally, copy the Python libraries into the GDB install:

  cp -r $PYTHON_INSTALL_DIR/lib/python3.8/ $GDB_INSTALL_DIR/lib

After this the Python src, build, and install directories are no
longer needed and can be deleted.

If the new --with-python-libdir option is not used then the existing
behaviour is left unchanged, GDB will look for the Python libraries in
the lib/ directory within the python path.  The concatenation of the
python prefix and the string 'lib/' is now done at configure time,
rather than at run time in GDB as it was previous, however, this was
never something that the user had dynamic control over, so there's no
loss of functionality.

gdb/ChangeLog:

* config.in: Regenerate.
* configure: Regenerate.
* configure.ac: Add --with-python-libdir option.
* main.c: Use WITH_PYTHON_LIBDIR.

4 years ago[gdb/testsuite] Handle missing gccgo
Tom de Vries [Thu, 20 Feb 2020 05:31:24 +0000 (06:31 +0100)] 
[gdb/testsuite] Handle missing gccgo

Without gccgo installed I see in stdout/stderr:
...
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/print.exp ...
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/handcall.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/max-depth.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/integers.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/unsafe.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/package.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/types.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/chan.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/strings.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/basic-types.exp ...
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/hello.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.go/methods.exp ...
gdb compile failed, default_target_compile: Can't find gccgo.
...

Fix this by introducing a gdb_caching_proc support_go_compile, and using it in
the complaining test-cases.

Tested on x86_64-linux, with and without gccgo installed.

gdb/testsuite/ChangeLog:

2020-02-20  Tom de Vries  <tdevries@suse.de>

* lib/gdb.exp (support_go_compile): New gdb_caching_proc.
(gdb_simple_compile): Handle compile_flags go by using .go extension
for source file.
* gdb.go/chan.exp: Use support_go_compile.
* gdb.go/handcall.exp: Same.
* gdb.go/hello.exp: Same.
* gdb.go/integers.exp: Same.
* gdb.go/max-depth.exp: Same.
* gdb.go/methods.exp: Same.
* gdb.go/package.exp: Same.
* gdb.go/strings.exp: Same.
* gdb.go/types.exp: Same.
* gdb.go/unsafe.exp: Same.

4 years agoRegen with blessed automake-1.15.1
Alan Modra [Thu, 20 Feb 2020 02:30:41 +0000 (13:00 +1030)] 
Regen with blessed automake-1.15.1

This doesn't change anything except comments.

* aclocal.m4: Regenerate.

4 years agoRISC-V: Add description for -march-attr/-mno-arch-attr options in gas doc.
Nelson Chu [Thu, 6 Feb 2020 03:14:21 +0000 (19:14 -0800)] 
RISC-V: Add description for -march-attr/-mno-arch-attr options in gas doc.

gas/
* doc/c-riscv.texi: Add the doc entries for -march-attr/
-mno-arch-attr command line options.

4 years agoTwo compute_and_set_names simplifications
Tom Tromey [Thu, 20 Feb 2020 00:16:51 +0000 (17:16 -0700)] 
Two compute_and_set_names simplifications

This patch simplifies compute_and_set_names in a couple of ways.

First, it changes one spot to use obstack_strndup, which is
equivalent, but more concise.

Second, the function ends with two calls to symbol_set_demangled_name.
This can be simplified to a single call.

gdb/ChangeLog
2020-02-19  Tom Tromey  <tom@tromey.com>

* symtab.c (general_symbol_info::compute_and_set_names): Use
obstack_strndup.  Simplify call to symbol_set_demangled_name.

4 years agoAutomatic date update in version.in
GDB Administrator [Thu, 20 Feb 2020 00:00:32 +0000 (00:00 +0000)] 
Automatic date update in version.in

4 years agoRISC-V: Convert the ADD/ADDI to the compressed MV/LI if RS1 is zero.
Jim Wilson [Wed, 19 Feb 2020 22:51:07 +0000 (14:51 -0800)] 
RISC-V: Convert the ADD/ADDI to the compressed MV/LI if RS1 is zero.

2020-02-19  Nelson Chu  <nelson.chu@sifive.com>
gas/
* testsuite/gas/riscv/c-add-addi.d: New testcase.
* testsuite/gas/riscv/c-add-addi.s: Likewise.
opcodes/
* riscv-opc.c (riscv_opcodes): Convert add/addi to the compressed
c.mv/c.li if rs1 is zero.

Change-Id: Id939b5e6db80d267a832545f3ffef7b9ba881f7d

4 years ago2020-02-19 Jordan Rupprecht <rupprecht@google.com>
Eric Christopher [Wed, 19 Feb 2020 21:55:25 +0000 (13:55 -0800)] 
2020-02-19  Jordan Rupprecht  <rupprecht@google.com>

* objdump.c (show_line): call bfd_demangle when using do_demangle.

4 years ago[gdb/testsuite] Fix xpass in gdb.python/lib-types.exp
Tom de Vries [Wed, 19 Feb 2020 21:57:19 +0000 (22:57 +0100)] 
[gdb/testsuite] Fix xpass in gdb.python/lib-types.exp

When running gdb.python/lib-types.exp, we have an xpass:
...
(gdb) python print (str (typedef_const_typedef_class1_ref_obj.type))^M
typedef_const_typedef_class1_ref^M
(gdb) XPASS: gdb.python/lib-types.exp: \
  python print (str (typedef_const_typedef_class1_ref_obj.type)) \
  (PRMS gcc/55641)
...

When running the same with gcc 4.8, we have an xfail instead:
...
(gdb) python print (str (typedef_const_typedef_class1_ref_obj.type))^M
const typedef_const_typedef_class1_ref^M
(gdb) XFAIL: gdb.python/lib-types.exp: \
  python print (str (typedef_const_typedef_class1_ref_obj.type)) \
  (PRMS gcc/55641)
...

Fix the xpass by xfailing only for the gcc 4.8 pattern.

Tested on x86_64-linux, with:
- gcc 7.5.0
- gcc 4.8.5
- clang 5.0.2

gdb/testsuite/ChangeLog:

2020-02-19  Tom de Vries  <tdevries@suse.de>

* gdb.python/lib-types.exp: Make xfail more strict.

4 years ago[gdb/testsuite] Fix funcall_ref.exp xpass
Tom de Vries [Wed, 19 Feb 2020 21:33:42 +0000 (22:33 +0100)] 
[gdb/testsuite] Fix funcall_ref.exp xpass

When running gdb.ada/funcall_ref.exp I run into two XPASSes:
...
(gdb) p get ("Hello world!")^M
$1 = (n => 12, s => "Hello world!")^M
(gdb) XPASS: gdb.ada/funcall_ref.exp: p get ("Hello world!")
ptype get ("Hello world!")^M
type = <ref> record^M
    n: natural;^M
    s: access array (1 .. n) of character;^M
end record^M
(gdb) XPASS: gdb.ada/funcall_ref.exp: ptype get ("Hello world!")
...

The xfails are documented in funcall_ref.exp:
...
 # Currently, GCC describes such functions as returning pointers (instead of
 # references).
 setup_xfail *-*-*
...

Using gnatmake 4.8, we can reproduce the XFAILs:
...
(gdb) p get ("Hello world!")^M
$1 = (access foo.bar) 0x6147b0 <system.secondary_stack.chunk+48>^M
(gdb) XFAIL: gdb.ada/funcall_ref.exp: p get ("Hello world!")
ptype get ("Hello world!")^M
type = access record^M
    n: natural;^M
    s: access array (1 .. n) of character;^M
end record^M
(gdb) XFAIL: gdb.ada/funcall_ref.exp: ptype get ("Hello world!")
...

Fix the XPASSes by:
- removing the xfail setup
- switching the order of the two tests
- detecting the "access record" type and declaring the first test unsupported,
  and skipping the second test

Tested on x86_64-linux, both with gnatmake 4.8.5 and gnatmake 7.5.0.

gdb/testsuite/ChangeLog:

2020-02-19  Tom de Vries  <tdevries@suse.de>

* gdb.ada/funcall_ref.exp: Replace xfail setup by unsupported check.

4 years agogdb: dwarf2/read.c: remove unused objfile parameters/variables
Simon Marchi [Wed, 19 Feb 2020 21:04:52 +0000 (16:04 -0500)] 
gdb: dwarf2/read.c: remove unused objfile parameters/variables

This is a simple cleanup.  These functions used to use the objfile's
obstack for allocation in the hash tables, but they don't anymore.
Remove the unnecessary objfile parameters, which in turn allows removing
some local variables.

gdb/ChangeLog:

* dwarf2/read.c (allocate_signatured_type_table,
allocate_dwo_unit_table, allocate_type_unit_groups_table,
allocate_dwo_file_hash_table, allocate_dwp_loaded_cutus_table):
Remove objfile parameter, update all callers.

This page took 0.060958 seconds and 4 git commands to generate.