Commit Graph

140 Commits

Author SHA1 Message Date
Hannes Domani 51ac8e2265 Fix search of large memory area in gdbserver
If the search area is bigger than SEARCH_CHUNK_SIZE (16000), then you get
an error in gdbserver:
gdb: (gdb) find /w 0x3c43f0,+20000,0x04030201
gdb: Pattern not found.
gdbserver: Unable to access 3997 bytes of target memory at 0x3c8273, halting search.

The return value of any additional gdb_read_memory calls were compared with the
wrong value, this fixes it.

gdbserver/ChangeLog:

2020-04-22  Hannes Domani  <ssbssa@yahoo.de>

	* server.cc (handle_search_memory_1): Fix gdb_read_memory return value
	comparison.
2020-04-22 21:23:39 +02:00
Tom Tromey a010605fef Fix Cygwin gdb build
Simon pointed out that the windows-nat sharing series broke the Cygwin
build.  This patch fixes the problem, by moving the Cygwin-specific
code to a new handler function.  This approach is taken because this
code calls find_pc_partial_function, which isn't available in
gdbserver.

gdb/ChangeLog
2020-04-16  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (windows_nat::handle_access_violation): New
	function.
	* nat/windows-nat.h (handle_access_violation): Declare.
	* nat/windows-nat.c (handle_exception): Move Cygwin code to
	windows-nat.c.  Call handle_access_violation.

gdbserver/ChangeLog
2020-04-16  Tom Tromey  <tromey@adacore.com>

	* win32-low.cc (windows_nat::handle_access_violation): New
	function.
2020-04-16 07:24:57 -06:00
Simon Marchi e2275c6ee8 gdbserver: fix format string warning in win32-low.cc
When compiling on Cygwin, we get:

      CXX    win32-low.o
    /home/smarchi/src/binutils-gdb/gdbserver/win32-low.cc: In function ‘int get_child_debug_event(DWORD*, target_waitstatus*)’:
    /home/smarchi/src/binutils-gdb/gdbserver/win32-low.cc:1459:17: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long int’ [-Werror=format=]
     1459 |       OUTMSG2 (("get_windows_debug_event - "
          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
     1460 |   "unexpected stop in 0x%x (expecting 0x%x)\n",
          |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     1461 |   ptid.lwp (), desired_stop_thread_id));
          |   ~~~~~~~~~~~
          |            |
          |            long int
    /home/smarchi/src/binutils-gdb/gdbserver/win32-low.cc:52:11: note: in definition of macro ‘OUTMSG2’
       52 |    printf X;    \
          |           ^
    /home/smarchi/src/binutils-gdb/gdbserver/win32-low.cc:1460:26: note: format string is defined here
     1460 |   "unexpected stop in 0x%x (expecting 0x%x)\n",
          |                         ~^
          |                          |
          |                          unsigned int
          |                         %lx

`ptid.lwp ()` is a `long` value, so it indeed needs the `l` size modifier.

gdbserver/ChangeLog:

	* win32-low.cc (get_child_debug_event): Fix format string warning.
2020-04-15 21:09:17 -04:00
Tom Tromey 73944e9f63 Remove gdb_fildes_t
gdb_fildes_t and pfildes are no longer used, so remove them.

gdbserver/ChangeLog
2020-04-13  Tom Tromey  <tom@tromey.com>

	* server.h (gdb_fildes_t): Remove typedef.
	* remote-utils.c (remote_desc, list_desc): Now int.
	(INVALID_DESCRIPTOR): Remove.
	(gdb_connected, remote_close)
	(check_remote_input_interrupt_request): Update.
	* utils.h (pfildes): Don't declare.
	* utils.c (pfildes): Remove.
2020-04-13 14:10:04 -06:00
Tom Tromey 55d7aec85e Switch gdbserver to gdbsupport event loop
This changes gdbserver to use the gdbserver event loop, removing the
ancient fork.

gdbserver/ChangeLog
2020-04-13  Tom Tromey  <tom@tromey.com>

	* server.h (handle_serial_event, handle_target_event): Update.
	* server.c: Don't call initialize_event_loop.
	(keep_processing_events): New global.
	(handle_serial_event): Return void.  Set keep_processing_events.
	(handle_target_event): Return void.
	(start_event_loop): Move from event-loop.c.  Rewrite.
	* remote-utils.c (handle_accept_event): Return void.
	(reset_readchar): Use delete_timer.
	(process_remaining): Return void.
	(reschedule): Use create_timer.
	* event-loop.h: Remove.
	* event-loop.cc: Remove.
	* Makefile.in (OBS): Use gdbsupport/event-loop.o, not event-loop.o.
2020-04-13 14:10:04 -06:00
Tom Tromey e487f9949a Implement event-loop glue for gdbserver
event-loop.c requires the client to provide some functions.  This
patch implements these functions for gdbserver.

gdbserver/ChangeLog
2020-04-13  Tom Tromey  <tom@tromey.com>

	* server.c (invoke_async_signal_handlers)
	(check_async_event_handlers, flush_streams, gdb_select): New
	functions.
2020-04-13 14:10:04 -06:00
Tom Tromey 8ae8e19796 Move event-loop configury to common.m4
gdb_select.h and the event loop require some configure checks, so this
moves the needed checks to common.m4 and updates the configure
scripts.

gdb/ChangeLog
2020-04-13  Tom Tromey  <tom@tromey.com>

	* configure: Rebuild.
	* configure.ac: Remove checks that are now in GDB_AC_COMMON.

gdbserver/ChangeLog
2020-04-13  Tom Tromey  <tom@tromey.com>

	* configure: Rebuild.
	* config.in: Rebuild.

gdbsupport/ChangeLog
2020-04-13  Tom Tromey  <tom@tromey.com>

	* config.in, configure: Rebuild.
	* common.m4 (GDB_AC_COMMON): Check for poll.h, sys/poll.h,
	sys/select.h, and poll.
2020-04-13 14:10:03 -06:00
Tom Tromey 360ad8b350 Add pending stop support to gdbserver's Windows port
This changes gdbserver to also handle pending stops, the same way that
gdb does.  This is PR gdb/22992.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	PR gdb/22992
	* win32-low.c (child_continue): Call matching_pending_stop.
	(get_child_debug_event): Call fetch_pending_stop.  Push pending
	stop when needed.
2020-04-08 14:47:59 -06:00
Tom Tromey 523d4f80c3 Implement stopped_by_sw_breakpoint for Windows gdbserver
This changes the Windows gdbserver port to implement the
stopped_by_sw_breakpoint target method.  This is needed to support
pending stops.

This is a separate patch now, because Pedro suggested splitting it out
for simpler bisecting, in the case that it introduces a bug.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.h  (win32_process_target::stopped_by_sw_breakpoint)
	(win32_process_target::supports_stopped_by_sw_breakpoint):
	Declare.
	* win32-low.c (win32_supports_z_point_type): Always handle
	Z_PACKET_SW_BP.
	(win32_insert_point): Call insert_memory_breakpoint when needed.
	(win32_remove_point): Call remove_memory_breakpoint when needed.
	(win32_process_target::stopped_by_sw_breakpoint)
	(win32_process_target::supports_stopped_by_sw_breakpoint): New
	methods.
	(win32_target_ops): Update.
	(maybe_adjust_pc): New function.
	(win32_wait): Call maybe_adjust_pc.
2020-04-08 14:47:59 -06:00
Tom Tromey e54e59297a Introduce win32_target_ops::decr_pc_after_break
This adds a decr_pc_after_break member to win32_target_ops and updates
the two Windows targets to set it.

Note that I can't test the win32-arm-low.c change.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.h (struct win32_target_ops) <decr_pc_after_break>: New
	field.
	* win32-i386-low.c (the_low_target): Update.
	* win32-arm-low.c (the_low_target): Update.
2020-04-08 14:47:59 -06:00
Tom Tromey d6225aff7a Add read_pc / write_pc support to win32-low
This changes win32-low.c to implement the read_pc and write_pc
methods.  A subsequent patch will need these.

Note that I have no way to test, or even compile, the win32-arm-low.c
change.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.h (win32_process_target::read_pc)
	(win32_process_target::write_pc): Declare.
	* win32-low.c (win32_process_target::read_pc)
	(win32_process_target::write_pc): New methods.
	* win32-i386-low.c (i386_win32_get_pc, i386_win32_set_pc): New
	functions.
	(the_low_target): Update.
	* win32-arm-low.c (arm_win32_get_pc, arm_win32_set_pc): New
	functions.
	(the_low_target): Update.
2020-04-08 14:47:59 -06:00
Tom Tromey 2c1d95e869 Move wait_for_debug_event to nat/windows-nat.c
This moves the wait_for_debug_event helper function to
nat/windows-nat.c, and changes gdbserver to use it.
wait_for_debug_event is a wrapper for WaitForDebugEvent that also sets
last_wait_event when appropriate.  This is needed to properly handle
queued stops.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (wait_for_debug_event): Move to
	nat/windows-nat.c.
	* nat/windows-nat.h (wait_for_debug_event): Declare.
	* nat/windows-nat.c (wait_for_debug_event): Move from
	windows-nat.c.  No longer static.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (win32_kill, get_child_debug_event): Use
	wait_for_debug_event.
2020-04-08 14:47:59 -06:00
Tom Tromey e758e19c59 Share some inferior-related Windows code
This adds a couple of functions to nat/windows-nat.c and changes gdb
and gdbserver to use them.  One function checks the list of pending
stops for a match (not yet used by gdbserver, but will be in a
subsequent patch); and the other is a wrapper for ContinueDebugEvent
that always uses the last "real" stop event.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (windows_continue): Use matching_pending_stop and
	continue_last_debug_event.
	* nat/windows-nat.h (matching_pending_stop)
	(continue_last_debug_event): Declare.
	* nat/windows-nat.c (DEBUG_EVENTS): New define.
	(matching_pending_stop, continue_last_debug_event): New
	functions.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (child_continue): Call continue_last_debug_event.
2020-04-08 14:47:59 -06:00
Tom Tromey 8d30e39577 Share handle_exception
Both gdb and gdbserver have a "handle_exception" function, the bulk of
which is shared between the two implementations.  This patch arranges
for the entire thing to be moved into nat/windows-nat.c, with the
differences handled by callbacks.  This patch introduces one more
callback to make this possible.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (MS_VC_EXCEPTION): Move to nat/windows-nat.c.
	(handle_exception_result): Move to nat/windows-nat.h.
	(DEBUG_EXCEPTION_SIMPLE): Remove.
	(windows_nat::handle_ms_vc_exception): New function.
	(handle_exception): Move to nat/windows-nat.c.
	(get_windows_debug_event): Update.
	(STATUS_WX86_BREAKPOINT, STATUS_WX86_SINGLE_STEP): Move to
	nat/windows-nat.c.
	* nat/windows-nat.h (handle_ms_vc_exception): Declare.
	(handle_exception_result): Move from windows-nat.c.
	(handle_exception): Declare.
	* nat/windows-nat.c (MS_VC_EXCEPTION, handle_exception)
	(STATUS_WX86_SINGLE_STEP, STATUS_WX86_BREAKPOINT): Move from
	windows-nat.c.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (handle_exception): Remove.
	(windows_nat::handle_ms_vc_exception): New function.
	(get_child_debug_event): Add "continue_status" parameter.
	Update.
	(win32_wait): Update.
2020-04-08 14:47:59 -06:00
Tom Tromey a816ba1897 Share handle_load_dll and handle_unload_dll declarations
This changes nat/windows-nat.h to declare handle_load_dll and
handle_unload_dll.  The embedding application is required to implement
these -- while the actual code was difficult to share due to some
other differences between the two programs, sharing the declaration
lets a subsequent patch share more code that uses these as callbacks.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (windows_nat::handle_load_dll)
	(windows_nat::handle_unload_dll): Rename.  No longer static.
	* nat/windows-nat.h (handle_load_dll, handle_unload_dll):
	Declare.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (windows_nat::handle_load_dll): Rename from
	handle_load_dll.  No longer static.
	(windows_nat::handle_unload_dll): Rename from handle_unload_dll.
	No longer static.
2020-04-08 14:47:58 -06:00
Tom Tromey d41b524f45 Normalize handle_output_debug_string API
This changes gdbserver's implementation of handle_output_debug_string
to have the same calling convention as that of gdb.  This allows for
sharing some more code in a subsequent patch.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (windows_nat::handle_output_debug_string):
	Rename.  No longer static.
	* nat/windows-nat.h (handle_output_debug_string): Declare.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (handle_output_debug_string): Add parameter.  Change
	return type.
	(win32_kill, get_child_debug_event): Update.
2020-04-08 14:47:58 -06:00
Tom Tromey 3c76026df8 Share some Windows-related globals
This moves some Windows-related globals into nat/windows-nat.c,
sharing them between gdb and gdbserver.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (current_process_handle, current_process_id)
	(main_thread_id, last_sig, current_event, last_wait_event)
	(current_windows_thread, desired_stop_thread_id, pending_stops)
	(struct pending_stop, siginfo_er): Move to nat/windows-nat.c.
	(display_selectors, fake_create_process)
	(get_windows_debug_event): Update.
	* nat/windows-nat.h (current_process_handle, current_process_id)
	(main_thread_id, last_sig, current_event, last_wait_event)
	(current_windows_thread, desired_stop_thread_id, pending_stops)
	(struct pending_stop, siginfo_er): Move from windows-nat.c.
	* nat/windows-nat.c (current_process_handle, current_process_id)
	(main_thread_id, last_sig, current_event, last_wait_event)
	(current_windows_thread, desired_stop_thread_id, pending_stops)
	(siginfo_er): New globals.  Move from windows-nat.c.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (current_process_handle, current_process_id)
	(main_thread_id, last_sig, current_event, siginfo_er): Move to
	nat/windows-nat.c.
2020-04-08 14:47:58 -06:00
Tom Tromey 9d8679cc71 Share get_image_name between gdb and gdbserver
This moves get_image_name to nat/windows-nat.c so that it can be
shared between gdb and gdbserver.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (get_image_name): Move to nat/windows-nat.c.
	(handle_load_dll): Update.
	* nat/windows-nat.c (get_image_name): Move from windows-nat.c.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (get_image_name): Remove.
	(handle_load_dll): Update.
2020-04-08 14:47:58 -06:00
Tom Tromey 28688adf8f Share thread_rec between gdb and gdbserver
This changes gdb and gdbserver to use the same calling convention for
the "thread_rec" helper function.  Fully merging these is difficult
due to differences in how threads are managed by the enclosing
applications; but sharing a declaration makes it possible for future
shared code to call this method.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (enum thread_disposition_type): Move to
	nat/windows-nat.h.
	(windows_nat::thread_rec): Rename from thread_rec.  No longer
	static.
	(windows_add_thread, windows_nat_target::fetch_registers)
	(windows_nat_target::store_registers, handle_exception)
	(windows_nat_target::resume, get_windows_debug_event)
	(windows_nat_target::get_tib_address)
	(windows_nat_target::thread_name)
	(windows_nat_target::thread_alive): Update.
	* nat/windows-nat.h (enum thread_disposition_type): Move from
	windows-nat.c.
	(thread_rec): Declare.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (windows_nat::thread_rec): Rename from thread_rec.
	No longer static.  Change parameters.
	(child_add_thread, child_fetch_inferior_registers)
	(child_store_inferior_registers, win32_resume)
	(win32_get_tib_address): Update.
2020-04-08 14:47:58 -06:00
Tom Tromey 4834dad062 Wrap shared windows-nat code in windows_nat namespace
This wraps the shared windows-nat code in a windows_nat namespace.
This helps avoid name clashes.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c: Add "using namespace".
	* nat/windows-nat.h: Wrap contents in windows_nat namespace.
	* nat/windows-nat.c: Wrap contents in windows_nat namespace.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.h (struct win32_target_ops): Use qualified names where
	needed.
	* win32-i386-low.c: Add "using namespace".
	* win32-low.c: Add "using namespace".
	* win32-arm-low.c: Add "using namespace".
2020-04-08 14:47:58 -06:00
Tom Tromey 65bafd5b15 Call CloseHandle from ~windows_thread_info
Add a destructor to windows_thread_info that calls CloseHandle.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* nat/windows-nat.h (struct windows_thread_info): Declare
	destructor.
	* nat/windows-nat.c (~windows_thread_info): New.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (delete_thread_info): Don't call CloseHandle.
2020-04-08 14:47:58 -06:00
Tom Tromey 98a0328732 Share Windows thread-suspend and -resume code
This adds "suspend" and "resume" methods to windows_thread_info, and
changes gdb and gdbserver to share this code.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (thread_rec): Use windows_thread_info::suspend.
	(windows_continue): Use windows_continue::resume.
	* nat/windows-nat.h (struct windows_thread_info) <suspend,
	resume>: Declare new methods.
	* nat/windows-nat.c: New file.
	* configure.nat (NATDEPFILES): Add nat/windows-nat.o when needed.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (win32_require_context, suspend_one_thread): Use
	windows_thread_info::suspend.
	(continue_one_thread): Use windows_thread_info::resume.
	* configure.srv (srv_tgtobj): Add windows-nat.o when needed.
2020-04-08 14:47:58 -06:00
Tom Tromey 62fe396b1c Change two windows_thread_info members to "bool"
This changes a couple of fields of windows_thread_info to have type
"bool".  It also updates the comment of another field, to clarify the
possible values it can hold.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (thread_rec)
	(windows_nat_target::fetch_registers): Update.
	* nat/windows-nat.h (struct windows_thread_info) <suspended>:
	Update comment.
	<debug_registers_changed, reload_context>: Now bool.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-i386-low.c (update_debug_registers)
	(i386_prepare_to_resume, i386_thread_added): Update.
2020-04-08 14:47:57 -06:00
Tom Tromey e9534bd257 Use new and delete for windows_thread_info
This adds a constructor, destructor, and member initializers to
windows_thread_info, and changes gdb and gdbserver to use new and
delete.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (windows_add_thread): Use new.
	(windows_init_thread_list, windows_delete_thread): Use delete.
	(get_windows_debug_event): Update.
	* nat/windows-nat.h (struct windows_thread_info): Add constructor,
	destructor, and initializers.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.c (child_add_thread): Use new.
	(delete_thread_info): Use delete.
2020-04-08 14:47:57 -06:00
Tom Tromey ae1f888075 Share windows_thread_info between gdb and gdbserver
This introduces a new file, nat/windows-nat.h, which holds the
definition of windows_thread_info.  This is now shared between gdb and
gdbserver.

Note that the two implementations different slightly.  gdb had a
couple of fields ("name" and "reload_context") that gdbserver did not;
while gdbserver had one field ("base_context") that gdb did not, plus
better comments.  The new file preserves all the fields, and the
comments.

gdb/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (struct windows_thread_info): Remove.
	* nat/windows-nat.h: New file.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.h (struct windows_thread_info): Remove.
2020-04-08 14:47:57 -06:00
Tom Tromey e56f8ccb07 Rename win32_thread_info to windows_thread_info
This renames win32_thread_info to windows_thread_info in gdbserver.
This renaming helps make it possible to share some code between gdb
and gdbserver.

gdbserver/ChangeLog
2020-04-08  Tom Tromey  <tromey@adacore.com>

	* win32-low.h (struct windows_thread_info): Rename from
	win32_thread_info.  Remove typedef.
	(struct win32_target_ops, win32_require_context): Update.
	* win32-low.c (win32_get_thread_context)
	(win32_set_thread_context, win32_prepare_to_resume)
	(win32_require_context, thread_rec, child_add_thread)
	(delete_thread_info, continue_one_thread)
	(child_fetch_inferior_registers, child_store_inferior_registers)
	(win32_resume, suspend_one_thread, win32_get_tib_address):
	Update.
	* win32-i386-low.c (update_debug_registers)
	(win32_get_current_dr, i386_get_thread_context)
	(i386_prepare_to_resume, i386_thread_added, i386_single_step)
	(i386_fetch_inferior_register, i386_store_inferior_register):
	Update.
	* win32-arm-low.c (arm_get_thread_context)
	(arm_fetch_inferior_register, arm_store_inferior_register):
	Update.
2020-04-08 14:47:57 -06:00
Tankut Baris Aktemur 0dd7b52ede gdbserver/linux-low: delete 'linux_target_ops' and 'the_low_target'
All the linux target ops have been moved into linux_process_target
as methods.  The 'linux_target_ops' struct and its instantiations
are now obsolete.  Delete them.

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

	* linux-low.h (struct linux_target_ops): Remove.
	(the_low_target): Remove.
	* linux-x86-low.cc (the_low_target): Remove.
	* linux-aarch64-low.cc (the_low_target): Ditto.
	* linux-arm-low.cc (the_low_target): Ditto.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-cris-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-ia64-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-mips-low.cc (the_low_target): Ditto.
	* linux-nios2-low.cc (the_low_target): Ditto.
	* linux-ppc-low.cc (the_low_target): Ditto.
	* linux-riscv-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-sparc-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:32 +02:00
Tankut Baris Aktemur fc5ecdb630 gdbserver/linux-low: turn 'get_ipa_tdesc_idx' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'get_ipa_tdesc_idx' linux target op and let a concrete
	linux target define the op by overriding the declaration in
	process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <get_ipa_tdesc_idx>: Remove.
	* linux-low.cc (linux_process_target::get_ipa_tdesc_idx): Remove.
	* linux-x86-low.cc (class x86_target) <get_ipa_tdesc_idx>: Declare.
	(x86_get_ipa_tdesc_idx): Turn into...
	(x86_target::get_ipa_tdesc_idx): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <get_ipa_tdesc_idx>: Declare.
	(ppc_get_ipa_tdesc_idx): Turn into...
	(ppc_target::get_ipa_tdesc_idx): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <get_ipa_tdesc_idx>: Declare.
	(s390_get_ipa_tdesc_idx): Turn into...
	(s390_target::get_ipa_tdesc_idx): ...this.
	(the_low_target): Remove the op field.
2020-04-02 15:11:32 +02:00
Tankut Baris Aktemur 9eedd27d42 gdbserver/linux-low: turn 'get_syscall_trapinfo' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'get_syscall_trapinfo' linux target op into a method
	of process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <get_syscall_trapinfo>
	<gdb_catch_this_syscall>
	<low_supports_catch_syscall>
	<low_get_syscall_trapinfo>: Declare.
	* linux-low.cc (get_syscall_trapinfo): Turn into...
	(linux_process_target::get_syscall_trapinfo): ...this.
	(linux_process_target::low_get_syscall_trapinfo): Define.
	(gdb_catch_this_syscall_p): Turn into...
	(linux_process_target::gdb_catch_this_syscall): ...this.
	(linux_process_target::low_supports_catch_syscall): Define.

	Update the callers below.

	(linux_process_target::wait_1)
	(linux_process_target::supports_catch_syscall)

	* linux-x86-low.cc (class x86_target) <low_supports_catch_syscall>
	<low_get_syscall_trapinfo>: Declare.
	(x86_target::low_supports_catch_syscall): Define.
	(x86_get_syscall_trapinfo): Turn into...
	(x86_target::low_get_syscall_trapinfo): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_supports_catch_syscall>
	<low_get_syscall_trapinfo>: Declare.
	(aarch64_target::low_supports_catch_syscall): Define.
	(aarch64_get_syscall_trapinfo): Turn into...
	(aarch64_target::low_get_syscall_trapinfo): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <low_supports_catch_syscall>
	<low_get_syscall_trapinfo>: Declare.
	(arm_target::low_supports_catch_syscall): Define.
	(arm_get_syscall_trapinfo): Turn into...
	(arm_target::low_get_syscall_trapinfo): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (the_low_target): Remove the op field.
	* linux-s390-low.cc (the_low_target): Remove the op field.
2020-04-02 15:11:31 +02:00
Tankut Baris Aktemur b31cdfa69f gdbserver/linux-low: turn 'supports_hardware_single_step' into a method
All the linux low targets except arm define the
'supports_hardware_single_step' op to return true.  Hence, we override
the method to return true in linux_process_target, and remove the
definitions in all the linux low targets but arm.

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

	Remove the 'supports_hardware_single_step' linux target op and
	override the process_stratum_target's op definition in
	linux_process_target to return true.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <finish_step_over>
	<maybe_hw_step>: Declare.
	* linux-low.cc (can_hardware_single_step): Remove.
	(maybe_hw_step): Turn into...
	(linux_process_target::maybe_hw_step): ...this.
	(finish_step_over): Turn into...
	(linux_process_target::finish_step_over): ...this.
	(linux_process_target::supports_hardware_single_step): Update
	to return true.

	Update the callers below.

	(linux_process_target::single_step)
	(linux_process_target::resume_one_lwp_throw)

	* linux-arm-low.cc (class arm_target)
	<supports_hardware_single_step>: Declare.
	(arm_supports_hardware_single_step): Turn into...
	(arm_target::supports_hardware_single_step): ...this.
	(the_low_target): Remove the op field.
	* linux-x86-low.cc (x86_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (aarch64_supports_hardware_single_step):
	Remove.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (bfin_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (cris_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-m32r-low.cc (m32r_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-m68k-low.cc (m68k_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (ppc_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (s390_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-sh-low.cc (sh_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-tic6x-low.cc (tic6x_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-tile-low.cc (tile_supports_hardware_single_step): Remove.
	(the_low_target): Remove the op field.
	* linux-xtensa-low.cc (xtensa_supports_hardware_single_step):
	Remove.
	(the_low_target): Remove the op field.
2020-04-02 15:11:31 +02:00
Tankut Baris Aktemur 9cfd871551 gdbserver/linux-low: turn 'supports_range_stepping' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'supports_range_stepping' linux target op into a method
	of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <low_supports_range_stepping>: Declare.
	* linux-low.cc (linux_process_target::low_supports_range_stepping):
	Define.
	(linux_process_target::supports_range_stepping): Update the call
	site.
	* linux-x86-low.cc (class x86_target)
	<low_supports_range_stepping>: Declare.
	(x86_supports_range_stepping): Turn into...
	(x86_target::low_supports_range_stepping): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_supports_range_stepping>: Declare.
	(aarch64_supports_range_stepping): Turn into...
	(aarch64_target::low_supports_range_stepping): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:31 +02:00
Tankut Baris Aktemur ab64c99982 gdbserver/linux-low: turn 'emit_ops' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'emit_ops' linux target ops and let the concrete
	linux target define the op by overriding the declaration of
	process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <emit_ops>: Remove.
	* linux-low.cc (linux_process_target::emit_ops): Remove.
	* linux-x86-low.cc (class x86_target) <emit_ops>: Declare.
	(x86_emit_ops): Turn into...
	(x86_target::emit_ops): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target) <emit_ops>: Declare.
	(aarch64_emit_ops): Turn into...
	(aarch64_target::emit_ops): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <emit_ops>: Declare.
	(ppc_emit_ops): Turn into...
	(ppc_target::emit_ops): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <emit_ops>: Declare.
	(s390_emit_ops): Turn into...
	(s390_target::emit_ops): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:30 +02:00
Tankut Baris Aktemur 809a0c354b gdbserver/linux-low: turn fast tracepoint ops into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'install_fast_tracepoint_jump_pad' and
	'get_min_fast_tracepoint_insn_len' linux target ops to let the
	concrete linux target define the ops by overriding the declarations
	of process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Remove.
	* linux-low.cc (linux_process_target::supports_fast_tracepoints)
	(linux_process_target::install_fast_tracepoint_jump_pad)
	(linux_process_target::get_min_fast_tracepoint_insn_len): Remove.
	* linux-x86-low.cc (class x86_target) <supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Declare.
	(x86_target::supports_fast_tracepoints): Define.
	(x86_install_fast_tracepoint_jump_pad): Turn into...
	(x86_target::install_fast_tracepoint_jump_pad): ...this.
	(x86_get_min_fast_tracepoint_insn_len): Turn into...
	(x86_target::get_min_fast_tracepoint_insn_len): ...this.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target)
	<supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Declare.
	(aarch64_target::supports_fast_tracepoints): Define.
	(aarch64_install_fast_tracepoint_jump_pad): Turn into...
	(aarch64_target::install_fast_tracepoint_jump_pad): ...this.
	(aarch64_get_min_fast_tracepoint_insn_len): Turn into...
	(aarch64_target::get_min_fast_tracepoint_insn_len): ...this.
	(the_low_target): Remove the op fields.
	* linux-ppc-low.cc (class ppc_target) <supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Declare.
	(ppc_target::supports_fast_tracepoints): Define.
	(ppc_install_fast_tracepoint_jump_pad): Turn into...
	(ppc_target::install_fast_tracepoint_jump_pad): ...this.
	(ppc_get_min_fast_tracepoint_insn_len): Turn into...
	(ppc_target::get_min_fast_tracepoint_insn_len): ...this.
	(the_low_target): Remove the op fields.
	* linux-s390-low.cc (class s390_target) <supports_fast_tracepoints>
	<install_fast_tracepoint_jump_pad>
	<get_min_fast_tracepoint_insn_len>: Declare.
	(s390_target::supports_fast_tracepoints): Define.
	(s390_install_fast_tracepoint_jump_pad): Turn into...
	(s390_target::install_fast_tracepoint_jump_pad): ...this.
	(s390_get_min_fast_tracepoint_insn_len): Turn into...
	(s390_target::get_min_fast_tracepoint_insn_len): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (the_low_target): Remove the op fields.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:30 +02:00
Tankut Baris Aktemur 13e567af27 gdbserver/linux-low: turn 'get_thread_area' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'get_thread_area' linux target op into a method of
	process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <stuck_in_jump_pad>
	<linux_fast_tracepoint_collecting>
	<low_get_thread_area>: Declare.
	* linux-low.cc (supports_fast_tracepoints): Remove.
	(linux_fast_tracepoint_collecting): Turn into...
	(linux_process_target::linux_fast_tracepoint_collecting): ...this.
	(linux_process_target::low_get_thread_area): Define.
	(stuck_in_jump_pad_callback): Turn into...
	(linux_process_target::stuck_in_jump_pad): ...this.

	Update the caller below.

	(linux_process_target::stabilize_threads)

	* linux-x86-low.cc (class x86_target) <low_get_thread_area>:
	Declare.
	(x86_get_thread_area): Turn into...
	(x86_target::low_get_thread_area): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target) <low_get_thread_area>:
	Declare.
	(aarch64_get_thread_area): Turn into...
	(aarch64_target::low_get_thread_area): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <low_get_thread_area>:
	Declare.
	(ppc_get_thread_area): Turn into...
	(ppc_target::low_get_thread_area): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <low_get_thread_area>:
	Declare.
	(s390_get_thread_area): Turn into...
	(s390_target::low_get_thread_area): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:30 +02:00
Tankut Baris Aktemur 47f70aa768 gdbserver/linux-low: turn 'supports_tracepoints' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remote the 'supports_tracepoints' linux target op and let the
	concrete linux target define it by overriding the op declared in
	process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <supports_tracepoints>: Remove.
	* linux-low.cc (linux_process_target::supports_tracepoints): Remove.
	* linux-x86-low.cc (class x86_target) <supports_tracepoints>:
	Declare.
	(x86_supports_tracepoints): Turn into...
	(x86_target::supports_tracepoints): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<supports_tracepoints>: Declare.
	(aarch64_supports_tracepoints): Turn into...
	(aarch64_target::supports_tracepoints): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <supports_tracepoints>:
	Declare.
	(ppc_supports_tracepoints): Turn into...
	(ppc_target::supports_tracepoints): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <supports_tracepoints>:
	Declare.
	(s390_supports_tracepoints): Turn into...
	(s390_target::supports_tracepoints): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:29 +02:00
Tankut Baris Aktemur a5b5da9258 gdbserver/linux-low: turn 'process_qsupported' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'process_qsupported' linux target op and let a concrete
	linux target define the op by overriding the op declaration in
	process_stratum_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <process_qsupported>: Remove.
	* linux-low.cc (linux_process_target::process_qsupported): Remove.
	* linux-x86-low.cc (class x86_target) <process_qsupported>: Declare.
	(x86_linux_process_qsupported): Turn into...
	(x86_target::process_qsupported): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (the_low_target): Remove the op
	field.
	* linux-arm-low.cc (the_low_target): Ditto.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:29 +02:00
Tankut Baris Aktemur d7599cc082 gdbserver/linux-low: turn 'prepare_to_resume' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'prepare_to_resume' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <low_prepare_to_resume>: Declare.
	* linux-low.cc (linux_process_target::low_prepare_to_resume):
	Define.

	Update the callers below:

	(linux_process_target::resume_one_lwp_throw)
	(linux_process_target::low_prepare_to_resume)

	* linux-x86-low.cc (class x86_target) <low_prepare_to_resume>:
	Declare.
	(x86_target::low_prepare_to_resume): Define.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_prepare_to_resume>: Declare.
	(aarch64_target::low_prepare_to_resume): Define.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <low_prepare_to_resume>:
	Declare.
	(arm_prepare_to_resume): Turn into...
	(arm_target::low_prepare_to_resume): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target) <low_prepare_to_resume>:
	Declare.
	(mips_linux_prepare_to_resume): Turn into...
	(mips_target::low_prepare_to_resume): ...this.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (the_low_target): Remove the op field.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:29 +02:00
Tankut Baris Aktemur fd000fb3df gdbserver/linux-low: turn process/thread addition/deletion ops into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'new_process', 'delete_process', 'new_thread',
	'delete_thread', and 'new_fork' linux target ops into methods
	of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <add_linux_process>
	<add_lwp>
	<delete_lwp>
	<attach_lwp>
	<detach_one_lwp>
	<check_zombie_leaders>
	<filter_exit_event>
	<low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	* linux-low.cc (delete_lwp): Turn into...
	(linux_process_target::delete_lwp): ...this.
	(linux_process_target::low_delete_thread): Define.
	(linux_add_process): Turn into...
	(linux_process_target::add_linux_process): ...this.
	(linux_process_target::low_new_process): Define.
	(linux_process_target::low_delete_process): Define.
	(linux_process_target::low_new_fork): Define.
	(add_lwp): Turn into...
	(linux_process_target::add_lwp): ...this.
	(linux_process_target::low_new_thread): Define.
	(linux_attach_lwp): Turn into...
	(linux_process_target::attach_lwp): ...this.
	(linux_detach_one_lwp): Turn into...
	(linux_process_target::detach_one_lwp): ...this.
	(linux_detach_lwp_callback): Remove and inline...
	(linux_process_target::detach): ...here.
	(check_zombie_leaders): Turn into...
	(linux_process_target::check_zombie_leaders): ...this.
	(filter_exit_event): Turn into...
	(linux_process_target::filter_exit_event): ...this.

	Update the callers below.

	(linux_process_target::handle_extended_wait)
	(linux_process_target::create_inferior)
	(attach_proc_task_lwp_callback)
	(linux_process_target::attach)
	(linux_process_target::detach)
	(linux_process_target::mourn)
	* thread-db.cc (attach_thread)

	* linux-x86-low.cc (class x86_target) <low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	(x86_linux_new_process): Turn into...
	(x86_target::low_new_process): ...this.
	(x86_linux_delete_process): Turn into...
	(x86_target::low_delete_process): ...this.
	(x86_target::low_new_thread): Define.
	(x86_target::low_delete_thread): Define.
	(x86_linux_new_fork): Turn into...
	(x86_target::low_new_fork): ...this.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target) <low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	(aarch64_linux_new_process): Turn into...
	(aarch64_target::low_new_process): ...this.
	(aarch64_linux_delete_process): Turn into...
	(aarch64_target::low_delete_process): ...this.
	(aarch64_target::low_new_thread): Define.
	(aarch64_target::low_delete_thread): Define.
	(aarch64_linux_new_fork): Turn into...
	(aarch64_target::low_new_fork): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target) <low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	(arm_new_process): Turn into...
	(arm_target::low_new_process): ...this.
	(arm_delete_process): Turn into...
	(arm_target::low_delete_process): ...this.
	(arm_new_thread): Turn into...
	(arm_target::low_new_thread): ...this.
	(arm_delete_thread): Turn into...
	(arm_target::low_delete_thread): ...this.
	(arm_new_fork): Turn into...
	(arm_target::low_new_fork): ...this.
	(the_low_target): Remove the op fields.
	* linux-mips-low.cc (class mips_target) <low_new_process>
	<low_delete_process>
	<low_new_thread>
	<low_delete_thread>
	<low_new_fork>: Declare.
	(mips_linux_new_process): Turn into...
	(mips_target::low_new_process): ...this.
	(mips_linux_delete_process): Turn into...
	(mips_target::low_delete_process): ...this.
	(mips_linux_new_thread): Turn into...
	(mips_target::low_new_thread): ...this.
	(mips_linux_delete_thread): Turn into...
	(mips_target::low_delete_thread): ...this.
	(mips_linux_new_fork): Turn into...
	(mips_target::low_new_fork): ...this.
	(the_low_target): Remove the op fields.
	* linux-bfin-low.cc (the_low_target): Remove the op fields.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:28 +02:00
Tankut Baris Aktemur cb63de7ca8 gdbserver/linux-low: turn 'siginfo_fixup' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'siginfo_fixup' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <siginfo_fixup>
	<low_siginfo_fixup>: Declare.
	* linux-low.cc (siginfo_fixup): Turn into...
	(linux_process_target::siginfo_fixup): ...this.
	(linux_process_target::low_siginfo_fixup): Define.
	* linux-x86-low.cc (class x86_target) <low_siginfo_fixup>: Declare.
	(x86_siginfo_fixup): Turn into...
	(x86_target::low_siginfo_fixup): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target):
	<low_siginfo_fixup>: Declare.
	(aarch64_linux_siginfo_fixup): Turn into...
	(aarch64_target::low_siginfo_fixup): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (the_low_target): Remove the op field.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-mips-low.cc (the_low_target): Ditto.
	* linux-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:28 +02:00
Tankut Baris Aktemur b35db73327 gdbserver/linux-low: turn '{collect, supply}_ptrace_register' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'collect_ptrace_register' and 'supply_ptrace_register'
	linux target ops into methods of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <low_collect_ptrace_register>
	<low_store_ptrace_register>: Declare.
	* linux-low.cc (linux_process_target::low_collect_ptrace_register)
	(linux_process_target::low_supply_ptrace_register): Define.

	Update the callers below.

	(linux_process_target::fetch_register)
	(linux_process_target::store_register)

	* linux-x86-low.cc (the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (the_low_target): Ditto.
	* linux-arm-low.cc (the_low_target): Ditto.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-sparc-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
	* linux-mips-low.cc (class mips_target)
	<low_collect_ptrace_register>
	<low_supply_ptrace_register>: Declare.
	(mips_collect_ptrace_register): Turn into ...
	(mips_target::low_collect_ptrace_register): ...this.
	(mips_supply_ptrace_register): Turn into...
	(mips_target::low_supply_ptrace_register): ...this.
	(the_low_target): Remove the op fields.
	* linux-ppc-low.cc (class ppc_target)
	<low_collect_ptrace_register>
	<low_supply_ptrace_register>: Declare.
	(ppc_collect_ptrace_register): Turn into ...
	(ppc_target::low_collect_ptrace_register): ...this.
	(ppc_supply_ptrace_register): Turn into ...
	(ppc_target::low_supply_ptrace_register): ...this.
	(ppc_fill_gregset): Update for the calls to
	low_collect_ptrace_register.
	(the_low_target): Remove the op fields.
	* linux-s390-low.cc (class s390_target)
	<low_collect_ptrace_register>
	<low_supply_ptrace_register>: Declare.
	(s390_collect_ptrace_register): Turn into ...
	(s390_target::low_collect_ptrace_register): ...this.
	(s390_supply_ptrace_register): Turn into ...
	(s390_target::low_supply_ptrace_register): ...this.
	(s390_fill_gregset): Update for the calls to
	low_collect_ptrace_register.
	(the_low_target): Remove the op fields.
2020-04-02 15:11:28 +02:00
Tankut Baris Aktemur ac1bbaca10 gdbserver/linux-low: turn watchpoint ops into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'stopped_by_watchpoint' and 'stopped_data_address' linux
	target ops into methods of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <check_stopped_by_watchpoint>
	<low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	* linux-low.cc (check_stopped_by_watchpoint): Turn into...
	(linux_process_target::check_stopped_by_watchpoint): ...this.
	(linux_process_target::low_stopped_by_watchpoint): Define.
	(linux_process_target::low_stopped_data_address): Define.
	* linux-x86-low.cc (class x86_target) <low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(x86_stopped_by_watchpoint): Turn into...
	(x86_target::low_stopped_by_watchpoint): ...this.
	(x86_stopped_data_address): Turn into...
	(x86_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(aarch64_stopped_by_watchpoint): Turn into...
	(aarch64_target::low_stopped_by_watchpoint): ...this.
	(aarch64_stopped_data_address): Turn into...
	(aarch64_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target) <low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(arm_stopped_by_watchpoint): Turn into...
	(arm_target::low_stopped_by_watchpoint): ...this.
	(arm_stopped_data_address): Turn into...
	(arm_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-crisv32-low.cc (class crisv32_target)
	<low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(cris_stopped_by_watchpoint): Turn into...
	(crisv32_target::low_stopped_by_watchpoint): ...this.
	(cris_stopped_data_address): Turn into...
	(crisv32_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-mips-low.cc (class mips_target) <low_stopped_by_watchpoint>
	<low_stopped_data_address>: Declare.
	(mips_stopped_by_watchpoint): Turn into...
	(mips_target::low_stopped_by_watchpoint): ...this.
	(mips_stopped_data_address): Turn into...
	(mips_target::low_stopped_data_address): ...this.
	(the_low_target): Remove the op fields.
	* linux-bfin-low.cc (the_low_target): Remove the op fields.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-sparc-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:27 +02:00
Tankut Baris Aktemur 9db9aa232a gdbserver/linux-low: turn 'insert_point' and 'remove_point' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'insert_point' and 'remove_point' linux target ops into
	methods of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <low_insert_point>
	<low_remove_point>: Declare.
	* linux-low.cc (linux_process_target::low_insert_point)
	(linux_process_target::low_remove_point): Define.
	(linux_process_target::insert_point)
	(linux_process_target::remove_point): Update for calls to
	low_insert_point and low_remove_point.
	* linux-x86-low.cc (class x86_target) <low_insert_point>
	<low_remove_point>: Declare.
	(x86_insert_point): Turn into...
	(x86_target::low_insert_point): ...this.
	(x86_remove_point): Turn into...
	(x86_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target) <low_insert_point>
	<low_remove_point>: Declare.
	(aarch64_insert_point): Turn into...
	(aarch64_target::low_insert_point): ...this.
	(aarch64_remove_point): Turn into...
	(aarch64_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target) <low_insert_point>
	<low_remove_point>: Declare.
	(arm_insert_point): Turn into...
	(arm_target::low_insert_point): ...this.
	(arm_remove_point): Turn into...
	(arm_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-crisv32-low.cc (class crisv32_target) <low_insert_point>
	<low_remove_point>: Declare.
	(crisv32_insert_point): Turn into...
	(crisv32_target::low_insert_point): ...this.
	(crisv32_remove_point): Turn into...
	(crisv32_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-mips-low.cc (class mips_target) <low_insert_point>
	<low_remove_point>: Declare.
	(mips_insert_point): Turn into...
	(mips_target::low_insert_point): ...this.
	(mips_remove_point): Turn into...
	(mips_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-ppc-low.cc (class ppc_target) <low_insert_point>
	<low_remove_point>: Declare.
	(ppc_insert_point): Turn into...
	(ppc_target::low_insert_point): ...this.
	(ppc_remove_point): Turn into...
	(ppc_target::low_remove_point): ...this.
	(the_low_target): Remove the op fields.
	* linux-bfin-low.cc (the_low_target): Remove the op fields.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-sparc-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:27 +02:00
Tankut Baris Aktemur 007c9b975d gdbserver/linux-low: turn 'supports_z_point_type' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'supports_z_point_type' linux target op and let the
	concrete linux target define it by overriding the op declared in
	process_stratum_target.

	* linux-low.cc (linux_process_target::supports_z_point_type):
	Remove.
	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <supports_z_point_type>: Remove.
	* linux-x86-low.cc (class x86_target) <supports_z_point_type>:
	Declare.
	(x86_supports_z_point_type): Turn into...
	(x86_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<supports_z_point_type>: Declare.
	(aarch64_supports_z_point_type): Turn into...
	(aarch64_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <supports_z_point_type>:
	Declare.
	(arm_supports_z_point_type): Turn into...
	(arm_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (class crisv32_target)
	<supports_z_point_type>: Declare.
	(cris_supports_z_point_type): Turn into...
	(crisv32_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target) <supports_z_point_type>:
	Declare.
	(mips_supports_z_point_type): Turn into...
	(mips_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <supports_z_point_type>:
	Declare.
	(ppc_supports_z_point_type): Turn into...
	(ppc_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <supports_z_point_type>:
	Declare.
	(s390_supports_z_point_type): Turn into...
	(s390_target::supports_z_point_type): ...this.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (the_low_target): Remove the op field.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-sparc-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
2020-04-02 15:11:27 +02:00
Tankut Baris Aktemur d7146cda56 gdbserver/linux-low: turn 'breakpoint_at' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'breakpoint_at' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <low_breakpoint_at>: Declare.

	Update the callers below:

	* linux-low.cc (linux_process_target::save_stop_reason)
	(linux_process_target::thread_still_has_status_pending)
	(linux_process_target::wait_1)

	* linux-x86-low.cc (class x86_target)
	<low_breakpoint_at>: Declare.
	(x86_breakpoint_at): Turn into...
	(x86_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_breakpoint_at>: Declare.
	(aarch64_breakpoint_at): Turn into...
	(aarch64_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target)
	<low_breakpoint_at>: Declare.
	(arm_target::low_breakpoint_at): Define.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (class bfin_target)
	<low_breakpoint_at>: Declare.
	(bfin_breakpoint_at): Turn into...
	(bfin_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-cris-low.cc (class cris_target)
	<low_breakpoint_at>: Declare.
	(cris_breakpoint_at): Turn into...
	(cris_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (class crisv32_target)
	<low_breakpoint_at>: Declare.
	(crisv32_breakpoint_at): Turn into...
	(crisv32_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-ia64-low.cc (class ia64_target)
	<low_breakpoint_at>: Declare.
	(ia64_target::low_breakpoint_at): Define.
	* linux-m32r-low.cc (class m32r_target)
	<low_breakpoint_at>: Declare.
	(m32r_breakpoint_at): Turn into...
	(m32r_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-m68k-low.cc (class m68k_target)
	<low_breakpoint_at>: Declare.
	(m68k_breakpoint_at): Turn into...
	(m68k_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target)
	<low_breakpoint_at>: Declare.
	(mips_breakpoint_at): Turn into...
	(mips_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-nios2-low.cc (class nios2_target)
	<low_breakpoint_at>: Declare.
	(nios2_breakpoint_at): Turn into...
	(nios2_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target)
	<low_breakpoint_at>: Declare.
	(ppc_breakpoint_at): Turn into...
	(ppc_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-riscv-low.cc (class riscv_target)
	<low_breakpoint_at>: Declare.
	(riscv_breakpoint_at): Turn into...
	(riscv_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target)
	<low_breakpoint_at>: Declare.
	(s390_breakpoint_at): Turn into...
	(s390_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-sh-low.cc (class sh_target)
	<low_breakpoint_at>: Declare.
	(sh_breakpoint_at): Turn into...
	(sh_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-sparc-low.cc (class sparc_target)
	<low_breakpoint_at>: Declare.
	(sparc_breakpoint_at): Turn into...
	(sparc_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-tic6x-low.cc (class tic6x_target)
	<low_breakpoint_at>: Declare.
	(tic6x_breakpoint_at): Turn into...
	(tic6x_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-tile-low.cc (class tile_target)
	<low_breakpoint_at>: Declare.
	(tile_breakpoint_at): Turn into...
	(tile_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
	* linux-xtensa-low.cc (class xtensa_target)
	<low_breakpoint_at>: Declare.
	(xtensa_breakpoint_at): Turn into...
	(xtensa_target::low_breakpoint_at): ...this.
	(the_low_target): Remove the op field.
2020-04-02 15:11:26 +02:00
Tankut Baris Aktemur d4807ea231 gdbserver/linux-low: turn the 'decr_pc_after_break' field into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'decr_pc_after_break' linux_target_ops field into
	a method of linux_process_target.

	* linux-low.h (struct linux_target_ops)
	<decr_pc_after_break>: Remove.
	(class linux_process_target) <low_decr_pc_after_break>: New method
	declaration.
	* linux-low.cc (linux_process_target::low_decr_pc_after_break):
	New method implementation.

	Update the users below.

	(linux_process_target::save_stop_reason)
	(linux_process_target::wait_1)
	* linux-x86-low.cc (class x86_target) <low_decr_pc_after_break>:
	New declaration.
	(x86_target::low_decr_pc_after_break): New method implementation.
	(the_low_target): Remove the field.
	* linux-bfin-low.cc (class bfin_target) <low_decr_pc_after_break>:
	New declaration.
	(bfin_target::low_decr_pc_after_break): New method implementation.
	(the_low_target): Remove the field.
	* linux-m68k-low.cc (class m68k_target) <low_decr_pc_after_break>:
	New declaration.
	(m68k_target::low_decr_pc_after_break): New method implementation.
	(the_low_target): Remove the field.
	* linux-s390-low.cc (class s390_target) <low_decr_pc_after_break>:
	New declaration.
	(s390_target::low_decr_pc_after_break): New method implementation.
	(the_low_target): Remove the field.
	* linux-aarch64-low.cc (the_low_target): Remove the field.
	* linux-arm-low.cc (the_low_target): Remove the field.
	* linux-cris-low.cc (the_low_target): Remove the field.
	* linux-crisv32-low.cc (the_low_target): Remove the field.
	* linux-m32r-low.cc (the_low_target): Remove the field.
	* linux-mips-low.cc (the_low_target): Remove the field.
	* linux-nios2-low.cc (the_low_target): Remove the field.
	* linux-ppc-low.cc (the_low_target): Remove the field.
	* linux-riscv-low.cc (the_low_target): Remove the field.
	* linux-sh-low.cc (the_low_target): Remove the field.
	* linux-sparc-low.cc (the_low_target): Remove the field.
	* linux-tic6x-low.cc (the_low_target): Remove the field.
	* linux-tile-low.cc (the_low_target): Remove the field.
	* linux-xtensa-low.cc (the_low_target): Remove the field.
2020-04-02 15:11:26 +02:00
Tankut Baris Aktemur 7582c77c1d gdbserver/linux-low: turn 'supports_software_single_step' and 'get_next_pcs' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'supports_software_single_step' linux target op and let
	the concrete linux target define it by overriding the op in
	process_stratum_target.
	Turn the 'get_next_pcs' linux target op into a method of
	linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <supports_software_single_step>:
	Remove.
	<low_get_next_pcs>: Declare.
	* linux-low.cc (can_software_single_step): Remove.
	(linux_process_target::low_get_next_pcs): Define.
	(linux_process_target::supports_software_single_step): Remove.

	Update the callers below.

	(linux_process_target::handle_extended_wait)
	(linux_process_target::wait_1)
	(linux_process_target::install_software_single_step_breakpoints)
	(linux_process_target::single_step)
	(linux_process_target::thread_needs_step_over)
	(linux_process_target::proceed_one_lwp)
	(linux_process_target::supports_range_stepping)

	* linux-x86-low.cc (the_low_target): Remove the op field.
	* linux-aarch64-low.cc (the_low_target): Ditto.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-cris-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-mips-low.cc (the_low_target): Ditto.
	* linux-nios2-low.cc (the_low_target): Ditto.
	* linux-ppc-low.cc (the_low_target): Ditto.
	* linux-riscv-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-sparc-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
	* linux-arm-low.cc (class arm_target) <low_get_next_pcs>
	<supports_software_single_step>: Declare.
	(arm_target::supports_software_single_step): Define.
	(arm_gdbserver_get_next_pcs): Turn into...
	(arm_target::low_get_next_pcs): ...this.
	(the_low_target): Remove the op field.
2020-04-02 15:11:26 +02:00
Tankut Baris Aktemur 3ca4edb661 gdbserver/linux-low: turn 'sw_breakpoint_from_kind' into a method
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'sw_breakpoint_from_kind' linux target op, and let
	the concrete linux target define it by overriding the op
	in process_stratum_target.

	* linux-low.cc (linux_process_target::sw_breakpoint_from_kind):
	Remove.
	* linux-low.h (struct linux_target_ops): Remove the op.
	(class linux_process_target) <sw_breakpoint_from_kind>: Remove.
	* linux-x86-low.cc (class x86_target) <sw_breakpoint_from_kind>:
	Declare.
	(x86_sw_breakpoint_from_kind): Turn into...
	(x86_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-aarch64-low.cc (class aarch64_target)
	<sw_breakpoint_from_kind>: Declare.
	(aarch64_sw_breakpoint_from_kind): Turn into...
	(aarch64_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-arm-low.cc (class arm_target) <sw_breakpoint_from_kind>:
	Declare.
	(arm_target::sw_breakpoint_from_kind): Define.
	(the_low_target): Remove the op field.
	* linux-bfin-low.cc (class bfin_target) <sw_breakpoint_from_kind>:
	Declare.
	(bfin_sw_breakpoint_from_kind): Turn into...
	(bfin_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-cris-low.cc (class cris_target) <sw_breakpoint_from_kind>:
	Declare.
	(cris_sw_breakpoint_from_kind): Turn into...
	(cris_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-crisv32-low.cc (class crisv32_target)
	<sw_breakpoint_from_kind>: Declare.
	(cris_sw_breakpoint_from_kind): Turn into...
	(crisv32_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-ia64-low.cc (class ia64_target) <sw_breakpoint_from_kind>:
	Declare.
	(ia64_target::sw_breakpoint_from_kind): Define.
	* linux-m32r-low.cc (class m32r_target) <sw_breakpoint_from_kind>:
	Declare.
	(m32r_sw_breakpoint_from_kind): Turn into...
	(m32r_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-m68k-low.cc (class m68k_target) <sw_breakpoint_from_kind>:
	Declare.
	(m68k_sw_breakpoint_from_kind): Turn into...
	(m68k_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-mips-low.cc (class mips_target) <sw_breakpoint_from_kind>:
	Declare.
	(mips_sw_breakpoint_from_kind): Turn into...
	(mips_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-nios2-low.cc (class nios2_target) <sw_breakpoint_from_kind>:
	Declare.
	(nios2_sw_breakpoint_from_kind): Turn into...
	(nios2_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-ppc-low.cc (class ppc_target) <sw_breakpoint_from_kind>:
	Declare.
	(ppc_sw_breakpoint_from_kind): Turn into...
	(ppc_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-riscv-low.cc (class riscv_target) <sw_breakpoint_from_kind>:
	Declare.
	(riscv_sw_breakpoint_from_kind): Turn into...
	(riscv_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-s390-low.cc (class s390_target) <sw_breakpoint_from_kind>:
	Declare.
	(s390_sw_breakpoint_from_kind): Turn into...
	(s390_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-sh-low.cc (class sh_target) <sw_breakpoint_from_kind>:
	Declare.
	(sh_sw_breakpoint_from_kind): Turn into...
	(sh_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-sparc-low.cc (class sparc_target) <sw_breakpoint_from_kind>:
	Declare.
	(sparc_sw_breakpoint_from_kind): Turn into...
	(sparc_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-tic6x-low.cc (class tic6x_target) <sw_breakpoint_from_kind>:
	Declare.
	(tic6x_sw_breakpoint_from_kind): Turn into...
	(tic6x_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-tile-low.cc (class tile_target) <sw_breakpoint_from_kind>:
	Declare.
	(tile_sw_breakpoint_from_kind): Turn into...
	(tile_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
	* linux-xtensa-low.cc (class xtensa_target)
	<sw_breakpoint_from_kind>: Declare.
	(xtensa_sw_breakpoint_from_kind): Turn into...
	(xtensa_target::sw_breakpoint_from_kind): ...this.
	(the_low_target): Remove the op field.
2020-04-02 15:11:25 +02:00
Tankut Baris Aktemur 06250e4e67 gdbserver/linux-low: turn 'breakpoint_kind_from_{pc, current_state}' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Remove the 'breakpoint_kind_from_pc' and
	'breakpoint_kind_from_current_state' linux target ops, and let the
	concrete linux target define them by overriding the ops of
	process_stratum_target.

	* linux-low.cc (linux_process_target::breakpoint_kind_from_pc):
	Remove.
	(linux_process_target::breakpoint_kind_from_current_state): Remove.
	* linux-low.h (struct linux_target_ops): Remove ops.
	(class linux_process_target) <breakpoint_kind_from_pc>: Remove.
	<breakpoint_kind_from_current_state>: Remove.
	* linux-x86-low.cc (the_low_target): Remove the op fields.
	* linux-bfin-low.cc (the_low_target): Ditto.
	* linux-cris-low.cc (the_low_target): Ditto.
	* linux-crisv32-low.cc (the_low_target): Ditto.
	* linux-m32r-low.cc (the_low_target): Ditto.
	* linux-m68k-low.cc (the_low_target): Ditto.
	* linux-mips-low.cc (the_low_target): Ditto.
	* linux-nios2-low.cc (the_low_target): Ditto.
	* linux-ppc-low.cc (the_low_target): Ditto.
	* linux-s390-low.cc (the_low_target): Ditto.
	* linux-sh-low.cc (the_low_target): Ditto.
	* linux-sparc-low.cc (the_low_target): Ditto.
	* linux-tic6x-low.cc (the_low_target): Ditto.
	* linux-tile-low.cc (the_low_target): Ditto.
	* linux-xtensa-low.cc (the_low_target): Ditto.
	* linux-aarch64-low.cc (class aarch64_target)
	<breakpoint_kind_from_pc>
	<breakpoint_kind_from_current_state>: Declare.
	(aarch64_breakpoint_kind_from_pc): Turn into...
	(aarch64_target::breakpoint_kind_from_pc): ...this.
	(aarch64_breakpoint_kind_from_current_state): Turn into...
	(aarch64_target::breakpoint_kind_from_current_state): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target):
	<breakpoint_kind_from_pc>
	<breakpoint_kind_from_current_state>: Declare.
	(arm_target::breakpoint_kind_from_pc): Define.
	(arm_target::breakpoint_kind_from_current_state): Define.
	(the_low_target): Remove the op fields.
	* linux-riscv-low.cc (class riscv_target):
	<breakpoint_kind_from_pc>: Declare.
	(riscv_breakpoint_kind_from_pc): Turn into...
	(riscv_target::breakpoint_kind_from_pc): ...this.
	(the_low_target): Remove the op fields.
2020-04-02 15:11:25 +02:00
Tankut Baris Aktemur bf9ae9d8c3 gdbserver/linux-low: turn 'get_pc' and 'set_pc' into methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn the 'get_pc' and 'set_pc' linux target ops into methods
	of linux_process_target.

	* linux-low.h (struct linux_target_ops): Remove the ops.
	(class linux_process_target) <low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	* linux-low.cc (supports_breakpoints): Turn into...
	(linux_process_target::low_supports_breakpoints): ...this.
	(linux_process_target::low_get_pc): Define.
	(linux_process_target::low_set_pc): Define.

	Update the callers below.

	(linux_process_target::get_pc)
	(linux_process_target::save_stop_reason)
	(linux_process_target::maybe_move_out_of_jump_pad)
	(linux_process_target::wait_1)
	(linux_process_target::resume_one_lwp_throw)
	(linux_process_target::resume)
	(linux_process_target::proceed_all_lwps)
	(linux_process_target::read_pc)
	(linux_process_target::write_pc)

	* linux-x86-low.cc (class linux_process_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(x86_target::low_supports_breakpoints): Define.
	(x86_get_pc): Turn into...
	(x86_target::low_get_pc): ...this.
	(x86_set_pc): Turn into...
	(x86_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-arm-low.cc (class arm_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(arm_target::low_supports_breakpoints)
	(arm_target::low_get_pc)
	(arm_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-bfin-low.cc (class bfin_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(bfin_target::low_supports_breakpoints)
	(bfin_target::low_get_pc)
	(bfin_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-cris-low.cc (class cris_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(cris_target::low_supports_breakpoints)
	(cris_target::low_get_pc)
	(cris_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-crisv32-low.cc (class crisv32_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(crisv32_target::low_supports_breakpoints)
	(crisv32_target::low_get_pc)
	(crisv32_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-m32r-low.cc (class m32r_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(m32r_target::low_supports_breakpoints)
	(m32r_target::low_get_pc)
	(m32r_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-m68k-low.cc (class m68k_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(m68k_target::low_supports_breakpoints)
	(m68k_target::low_get_pc)
	(m68k_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-nios2-low.cc (class nios2_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(nios2_target::low_supports_breakpoints)
	(nios2_target::low_get_pc)
	(nios2_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-sh-low.cc (class sh_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(sh_target::low_supports_breakpoints)
	(sh_target::low_get_pc)
	(sh_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-xtensa-low.cc (class xtensa_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(xtensa_target::low_supports_breakpoints)
	(xtensa_target::low_get_pc)
	(xtensa_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-sparc-low.cc (class sparc_target)
	<low_supports_breakpoints>
	<low_get_pc>: Declare.
	(sparc_target::low_supports_breakpoints)
	(sparc_target::low_get_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-tile-low.cc (class tile_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(tile_target::low_supports_breakpoints)
	(tile_target::low_get_pc)
	(tile_target::low_set_pc): Define.
	(the_low_target): Remove the op fields.
	* linux-aarch64-low.cc (class aarch64_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(aarch64_target::low_supports_breakpoints): Define.
	(aarch64_get_pc): Turn into...
	(aarch64_target::low_get_pc): ...this.
	(aarch64_set_pc): Turn into...
	(aarch64_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-mips-low.cc (class mips_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(mips_target::low_supports_breakpoints): Define.
	(mips_get_pc): Turn into...
	(mips_target::low_get_pc): ...this.
	(mips_set_pc): Turn into...
	(mips_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-ppc-low.cc (class ppc_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(ppc_target::low_supports_breakpoints): Define.
	(ppc_get_pc): Turn into...
	(ppc_target::low_get_pc): ...this.
	(ppc_set_pc): Turn into...
	(ppc_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-riscv-low.cc (class riscv_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(riscv_target::low_supports_breakpoints): Define.
	(riscv_get_pc): Turn into...
	(riscv_target::low_get_pc): ...this.
	(riscv_set_pc): Turn into...
	(riscv_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-s390-low.cc (class s390_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(s390_target::low_supports_breakpoints): Define.
	(s390_get_pc): Turn into...
	(s390_target::low_get_pc): ...this.
	(s390_set_pc): Turn into...
	(s390_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
	* linux-tic6x-low.cc (class tic6x_target)
	<low_supports_breakpoints>
	<low_get_pc>
	<low_set_pc>: Declare.
	(tic6x_target::low_supports_breakpoints): Define.
	(tic6x_get_pc): Turn into...
	(tic6x_target::low_get_pc): ...this.
	(tic6x_set_pc): Turn into...
	(tic6x_target::low_set_pc): ...this.
	(the_low_target): Remove the op fields.
2020-04-02 15:11:24 +02:00
Tankut Baris Aktemur df95181f00 gdbserver/linux-low: turn some more static functions into private methods
gdbserver/ChangeLog:
2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	Turn some more static methods in linux-low into private methods
	of linux_process_target.

	* linux-low.cc (get_pc): Turn into...
	(linux_process_target::get_pc): ...this.
	(save_stop_reason): Turn into...
	(linux_process_target::save_stop_reason): ...this.
	(thread_still_has_status_pending_p): Turn into...
	(linux_process_target::thread_still_has_status_pending): ...this.
	(status_pending_p_callback): Turn into...
	(linux_process_target::status_pending_p_callback): ...this.
	(resume_stopped_resumed_lwps): Turn into...
	(linux_process_target::resume_stopped_resumed_lwps): ...this.
	(install_software_single_step_breakpoints): Turn into...
	(linux_process_target::install_software_single_step_breakpoints):
	...this.
	(single_step): Turn into...
	(linux_process_target::single_step): ...this.
	(linux_resume_one_lwp_throw): Turn into...
	(linux_process_target::resume_one_lwp_throw): ...this.
	(linux_resume_one_lwp): Turn into...
	(linux_process_target::resume_one_lwp): ...this.
	(resume_status_pending_p): Turn into...
	(linux_process_target::resume_status_pending): ...this.
	(need_step_over_p): Turn into...
	(linux_process_target::thread_needs_step_over): ...this.
	(linux_resume_one_thread): Turn into...
	(linux_process_target::resume_one_thread): ...this.
	(proceed_one_lwp): Turn into...
	(linux_process_target::proceed_one_lwp): ...this.
	(unsuspend_and_proceed_one_lwp): Turn into...
	(linux_process_target::unsuspend_and_proceed_one_lwp): ...this.

	Update the calls/references to the above functions below.

	(linux_process_target::handle_extended_wait)
	(linux_process_target::filter_event)
	(linux_process_target::wait_for_event_filtered)
	(linux_process_target::wait_1)
	(linux_process_target::move_out_of_jump_pad)
	(linux_process_target::start_step_over)
	(linux_process_target::resume)
	(linux_process_target::proceed_all_lwps)
	(regsets_store_inferior_registers)
	(linux_process_target::store_register)

	* linux-low.h (class linux_process_target)
	<get_pc>
	<save_stop_reason>
	<thread_still_has_status_pending>
	<status_pending_p_callback>
	<resume_stopped_resumed_lwps>
	<install_software_single_step_breakpoints>
	<single_step>
	<resume_one_lwp_throw>
	<resume_one_lwp>
	<resume_status_pending>
	<thread_needs_step_over>
	<resume_one_thread>
	<proceed_one_lwp>
	<unsuspend_and_proceed_one_lwp>: Declare.
2020-04-02 15:11:24 +02:00