From 66b4deae03e7a503f8c543aa198a8c010863135a Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 30 Nov 2018 17:49:49 +0000 Subject: target_ops::to_stratum -> target_ops::stratum() virtual method Given that a target's stratum is a property of the type, and not of an instance of the type, get rid of to_stratum data field and replace it with a virtual method. I.e., when we have e.g., 10 target remote instances active, there's no need for each of the instances to have their own to_stratum copy. gdb/ChangeLog: 2018-11-30 Pedro Alves * aix-thread.c (aix_thread_target) : Delete. : New override. * bfd-target.c (aix_thread_target) : Delete. : New override. * bsd-uthread.c (bsd_uthread_target) : Delete. : New override. * exec.c (exec_target) : Delete. : New override. * gdbarch-selftests.c (register_to_value_test): Adjust to use the stratum method instead of the to_stratum field. * linux-thread-db.c (thread_db_target) : Delete. : New override. (thread_db_target::thread_db_target): Delete. * make-target-delegates (print_class): Don't print a ctor declaration. Print a stratum method override declaration. * process-stratum-target.h (process_stratum_target) : Delete. : New override. * ravenscar-thread.c (ravenscar_thread_target) : Delete. : New override. * record-btrace.c (record_btrace_target) : Delete. : New override. * record-full.c (record_full_base_target) : Delete. : New override. * record.c (record_disconnect, record_detach) (record_mourn_inferior, record_kill): Adjust to use the stratum method instead of the to_stratum field. * regcache.c (cooked_read_test, cooked_write_test): Likewise. * sol-thread.c (sol_thread_target) : Delete. : New override. * spu-multiarch.c (spu_multiarch_target) : Delete. : New override. * target-delegates.c: Regenerate. * target.c (target_stack::push, target_stack::unpush) (pop_all_targets_above, pop_all_targets_at_and_above) (info_target_command, target_require_runnable) (target_stack::find_beneath): Adjust to use the stratum method instead of the to_stratum field. (dummy_target::dummy_target): Delete. (dummy_target::stratum): New. (debug_target::debug_target): Delete. (debug_target::stratum): New. (maintenance_print_target_stack): Adjust to use the stratum method instead of the to_stratum field. * target.h (struct target_ops) : New method. : Delete. : Adjust to use the stratum method instead of the to_stratum field. --- gdb/target.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'gdb/target.h') diff --git a/gdb/target.h b/gdb/target.h index b0469bb..abe0ee4 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -431,6 +431,9 @@ struct target_info struct target_ops { + /* Return this target's stratum. */ + virtual strata stratum () const = 0; + /* To the target under this one. */ target_ops *beneath () const; @@ -672,7 +675,6 @@ struct target_ops TARGET_DEFAULT_IGNORE (); virtual struct target_section_table *get_section_table () TARGET_DEFAULT_RETURN (NULL); - enum strata to_stratum; /* Provide default values for all "must have" methods. */ virtual bool has_all_memory () { return false; } @@ -1286,7 +1288,7 @@ public: /* Returns true if T is pushed on the target stack. */ bool is_pushed (target_ops *t) const - { return at (t->to_stratum) == t; } + { return at (t->stratum ()) == t; } /* Return the target at STRATUM. */ target_ops *at (strata stratum) const { return m_stack[stratum]; } -- cgit v1.1