eb4c3f4aaa
This constifies the add_setshow_* family of functions, and then fixes up the fallout. The bulk of this patch was written by script. gdb/ChangeLog 2017-11-07 Tom Tromey <tom@tromey.com> * ada-lang.c (catch_ada_exception_command): Constify. (catch_assert_command): Constify. * break-catch-throw.c (catch_catch_command, catch_throw_command) (catch_rethrow_command): Constify. (catch_exception_command_1): Constify. * breakpoint.h (add_catch_command): Constify. * break-catch-syscall.c (catch_syscall_command_1): Constify. (catch_syscall_split_args): Constify. * break-catch-sig.c (catch_signal_command): Constify. (catch_signal_split_args): Constify. * cli/cli-decode.h (struct cmd_list_element) <function>: Use cmd_const_sfunc_ftype. * cli/cli-decode.c (add_setshow_cmd_full): Constify. (add_setshow_enum_cmd, add_setshow_auto_boolean_cmd) (add_setshow_boolean_cmd, add_setshow_filename_cmd) (add_setshow_string_cmd, struct cmd_list_element) (add_setshow_optional_filename_cmd, add_setshow_integer_cmd) (add_setshow_uinteger_cmd, add_setshow_zinteger_cmd) (add_setshow_zuinteger_unlimited_cmd, add_setshow_zuinteger_cmd): Constify. (set_cmd_sfunc): Constify. (empty_sfunc): Constify. * command.h (add_setshow_enum_cmd, add_setshow_auto_boolean_cmd) (add_setshow_boolean_cmd, add_setshow_filename_cmd) (add_setshow_string_cmd, add_setshow_string_noescape_cmd) (add_setshow_optional_filename_cmd, add_setshow_integer_cmd) (add_setshow_uinteger_cmd, add_setshow_zinteger_cmd) (add_setshow_zuinteger_cmd, add_setshow_zuinteger_unlimited_cmd): Constify. (set_cmd_sfunc): Constify. (cmd_sfunc_ftype): Remove. * compile/compile.c (set_compile_args): Constify. * infrun.c (set_disable_randomization): Constify. * infcmd.c (set_args_command, set_cwd_command): Constify. * breakpoint.c (set_condition_evaluation_mode): Constify. (add_catch_command): Constify. (catch_fork_command_1, catch_exec_command_1) (catch_load_command_1, catch_unload_command_1): Constify. (catch_load_or_unload): Constify. * guile/scm-param.c (pascm_set_func): Constify. (add_setshow_generic): Constify. * python/py-param.c (get_set_value): Constify. * top.h (set_verbose): Constify. * tui/tui-win.c (tui_set_var_cmd): Constify. * mi/mi-main.c (set_mi_async_command): Constify. * cli/cli-logging.c (set_logging_overwrite) (set_logging_redirect): Constify. * value.c (set_max_value_size): Constify. * valprint.c (set_input_radix, set_output_radix): Constify. * utils.c (set_width_command, set_height_command): Constify. * typeprint.c (set_print_type_methods, set_print_type_typedefs): Constify. * tracepoint.c (set_disconnected_tracing) (set_circular_trace_buffer, set_trace_buffer_size) (set_trace_user, set_trace_notes, set_trace_stop_notes): Constify. * top.c (set_history_size_command, set_verbose, set_editing) (set_gdb_datadir, set_history_filename): Constify. * target.c (set_targetdebug, maint_set_target_async_command) (maint_set_target_non_stop_command, set_target_permissions) (set_write_memory_permission): Constify. (open_target): Constify. * target-descriptions.c (set_tdesc_filename_cmd): Constify. * target-dcache.c (set_stack_cache, set_code_cache): Constify. * symtab.c (set_symbol_cache_size_handler): Constify. * symfile.c (set_ext_lang_command): Constify. * symfile-debug.c (set_debug_symfile): Constify. * source.c (set_directories_command): Constify. * solib.c (reload_shared_libraries, gdb_sysroot_changed): Constify. * serial.c (set_parity): Constify. * rs6000-tdep.c (powerpc_set_soft_float, powerpc_set_vector_abi): Constify. * remote.c (set_remote_exec_file, set_remotebreak) (set_remote_protocol_Z_packet_cmd, set_range_stepping): Constify. * record.c (set_record_insn_history_size) (set_record_call_history_size): Constify. * record-full.c (set_record_full_insn_max_num): Constify. * proc-api.c (set_procfs_trace_cmd, set_procfs_file_cmd): Constify. * osabi.c (set_osabi): Constify. * mips-tdep.c (set_mips64_transfers_32bit_regs) (reinit_frame_cache_sfunc, mips_abi_update): Constify. * maint.c (maintenance_set_profile_cmd): Constify. * linux-thread-db.c (set_libthread_db_search_path): Constify. * language.c (set_language_command, set_range_command) (set_case_command): Constify. * infrun.c (set_non_stop, set_observer_mode) (set_stop_on_solib_events, set_schedlock_func) (set_exec_direction_func): Constify. * infcmd.c (set_inferior_tty_command): Constify. * disasm.c (set_disassembler_options_sfunc): Constify. * demangle.c (set_demangling_command): Constify. * dcache.c (set_dcache_size, set_dcache_line_size): Constify. * cris-tdep.c (set_cris_version, set_cris_mode) (set_cris_dwarf2_cfi): Constify. * corefile.c (set_gnutarget_command): Constify. * charset.c (set_host_charset_sfunc, set_target_charset_sfunc) (set_target_wide_charset_sfunc): Constify. * breakpoint.c (update_dprintf_commands): Constify. * auto-load.c (set_auto_load_dir, set_auto_load_safe_path): Constify. * arm-tdep.c (set_fp_model_sfunc, arm_set_abi) (set_disassembly_style_sfunc): Constify. * arch-utils.c (set_endian, set_architecture): Constify. * alpha-tdep.c (reinit_frame_cache_sfunc): Constify. * agent.c (set_can_use_agent): Constify.
201 lines
5.4 KiB
C
201 lines
5.4 KiB
C
/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#include "defs.h"
|
|
#include "target-dcache.h"
|
|
#include "gdbcmd.h"
|
|
#include "progspace.h"
|
|
|
|
/* The target dcache is kept per-address-space. This key lets us
|
|
associate the cache with the address space. */
|
|
|
|
static const struct address_space_data *target_dcache_aspace_key;
|
|
|
|
/* Clean up dcache, represented by ARG, which is associated with
|
|
ASPACE. */
|
|
|
|
static void
|
|
target_dcache_cleanup (struct address_space *aspace, void *arg)
|
|
{
|
|
dcache_free ((DCACHE *) arg);
|
|
}
|
|
|
|
/* Target dcache is initialized or not. */
|
|
|
|
int
|
|
target_dcache_init_p (void)
|
|
{
|
|
DCACHE *dcache
|
|
= (DCACHE *) address_space_data (current_program_space->aspace,
|
|
target_dcache_aspace_key);
|
|
|
|
return (dcache != NULL);
|
|
}
|
|
|
|
/* Invalidate the target dcache. */
|
|
|
|
void
|
|
target_dcache_invalidate (void)
|
|
{
|
|
DCACHE *dcache
|
|
= (DCACHE *) address_space_data (current_program_space->aspace,
|
|
target_dcache_aspace_key);
|
|
|
|
if (dcache != NULL)
|
|
dcache_invalidate (dcache);
|
|
}
|
|
|
|
/* Return the target dcache. Return NULL if target dcache is not
|
|
initialized yet. */
|
|
|
|
DCACHE *
|
|
target_dcache_get (void)
|
|
{
|
|
DCACHE *dcache
|
|
= (DCACHE *) address_space_data (current_program_space->aspace,
|
|
target_dcache_aspace_key);
|
|
|
|
return dcache;
|
|
}
|
|
|
|
/* Return the target dcache. If it is not initialized yet, initialize
|
|
it. */
|
|
|
|
DCACHE *
|
|
target_dcache_get_or_init (void)
|
|
{
|
|
DCACHE *dcache
|
|
= (DCACHE *) address_space_data (current_program_space->aspace,
|
|
target_dcache_aspace_key);
|
|
|
|
if (dcache == NULL)
|
|
{
|
|
dcache = dcache_init ();
|
|
set_address_space_data (current_program_space->aspace,
|
|
target_dcache_aspace_key, dcache);
|
|
}
|
|
|
|
return dcache;
|
|
}
|
|
|
|
/* The option sets this. */
|
|
static int stack_cache_enabled_1 = 1;
|
|
/* And set_stack_cache updates this.
|
|
The reason for the separation is so that we don't flush the cache for
|
|
on->on transitions. */
|
|
static int stack_cache_enabled = 1;
|
|
|
|
/* This is called *after* the stack-cache has been set.
|
|
Flush the cache for off->on and on->off transitions.
|
|
There's no real need to flush the cache for on->off transitions,
|
|
except cleanliness. */
|
|
|
|
static void
|
|
set_stack_cache (const char *args, int from_tty, struct cmd_list_element *c)
|
|
{
|
|
if (stack_cache_enabled != stack_cache_enabled_1)
|
|
target_dcache_invalidate ();
|
|
|
|
stack_cache_enabled = stack_cache_enabled_1;
|
|
}
|
|
|
|
static void
|
|
show_stack_cache (struct ui_file *file, int from_tty,
|
|
struct cmd_list_element *c, const char *value)
|
|
{
|
|
fprintf_filtered (file, _("Cache use for stack accesses is %s.\n"), value);
|
|
}
|
|
|
|
/* Return true if "stack cache" is enabled, otherwise, return false. */
|
|
|
|
int
|
|
stack_cache_enabled_p (void)
|
|
{
|
|
return stack_cache_enabled;
|
|
}
|
|
|
|
/* The option sets this. */
|
|
|
|
static int code_cache_enabled_1 = 1;
|
|
|
|
/* And set_code_cache updates this.
|
|
The reason for the separation is so that we don't flush the cache for
|
|
on->on transitions. */
|
|
static int code_cache_enabled = 1;
|
|
|
|
/* This is called *after* the code-cache has been set.
|
|
Flush the cache for off->on and on->off transitions.
|
|
There's no real need to flush the cache for on->off transitions,
|
|
except cleanliness. */
|
|
|
|
static void
|
|
set_code_cache (const char *args, int from_tty, struct cmd_list_element *c)
|
|
{
|
|
if (code_cache_enabled != code_cache_enabled_1)
|
|
target_dcache_invalidate ();
|
|
|
|
code_cache_enabled = code_cache_enabled_1;
|
|
}
|
|
|
|
/* Show option "code-cache". */
|
|
|
|
static void
|
|
show_code_cache (struct ui_file *file, int from_tty,
|
|
struct cmd_list_element *c, const char *value)
|
|
{
|
|
fprintf_filtered (file, _("Cache use for code accesses is %s.\n"), value);
|
|
}
|
|
|
|
/* Return true if "code cache" is enabled, otherwise, return false. */
|
|
|
|
int
|
|
code_cache_enabled_p (void)
|
|
{
|
|
return code_cache_enabled;
|
|
}
|
|
|
|
void
|
|
_initialize_target_dcache (void)
|
|
{
|
|
add_setshow_boolean_cmd ("stack-cache", class_support,
|
|
&stack_cache_enabled_1, _("\
|
|
Set cache use for stack access."), _("\
|
|
Show cache use for stack access."), _("\
|
|
When on, use the target memory cache for all stack access, regardless of any\n\
|
|
configured memory regions. This improves remote performance significantly.\n\
|
|
By default, caching for stack access is on."),
|
|
set_stack_cache,
|
|
show_stack_cache,
|
|
&setlist, &showlist);
|
|
|
|
add_setshow_boolean_cmd ("code-cache", class_support,
|
|
&code_cache_enabled_1, _("\
|
|
Set cache use for code segment access."), _("\
|
|
Show cache use for code segment access."), _("\
|
|
When on, use the target memory cache for all code segment accesses,\n\
|
|
regardless of any configured memory regions. This improves remote\n\
|
|
performance significantly. By default, caching for code segment\n\
|
|
access is on."),
|
|
set_code_cache,
|
|
show_code_cache,
|
|
&setlist, &showlist);
|
|
|
|
target_dcache_aspace_key
|
|
= register_address_space_data_with_cleanup (NULL,
|
|
target_dcache_cleanup);
|
|
}
|