/* Scheme interface to symbols.
- Copyright (C) 2008-2015 Free Software Foundation, Inc.
+ Copyright (C) 2008-2019 Free Software Foundation, Inc.
This file is part of GDB.
static hashval_t
syscm_hash_symbol_smob (const void *p)
{
- const symbol_smob *s_smob = p;
+ const symbol_smob *s_smob = (const symbol_smob *) p;
return htab_hash_pointer (s_smob->symbol);
}
static int
syscm_eq_symbol_smob (const void *ap, const void *bp)
{
- const symbol_smob *a = ap;
- const symbol_smob *b = bp;
+ const symbol_smob *a = (const symbol_smob *) ap;
+ const symbol_smob *b = (const symbol_smob *) bp;
return (a->symbol == b->symbol
&& a->symbol != NULL);
{
struct objfile *objfile = symbol_objfile (symbol);
- htab = objfile_data (objfile, syscm_objfile_data_key);
+ htab = (htab_t) objfile_data (objfile, syscm_objfile_data_key);
if (htab == NULL)
{
htab = gdbscm_create_eqable_gsmob_ptr_map (syscm_hash_symbol_smob,
else
{
struct gdbarch *gdbarch = symbol_arch (symbol);
- struct syscm_gdbarch_data *data = gdbarch_data (gdbarch,
+ struct syscm_gdbarch_data *data
+ = (struct syscm_gdbarch_data *) gdbarch_data (gdbarch,
syscm_gdbarch_data_key);
htab = data->htab;
gdbscm_printf (port, "#<%s ", symbol_smob_name);
gdbscm_printf (port, "%s",
s_smob->symbol != NULL
- ? SYMBOL_PRINT_NAME (s_smob->symbol)
+ ? s_smob->symbol->print_name ()
: "<invalid>");
if (pstate->writingp)
scm_puts (">", port);
static void
syscm_del_objfile_symbols (struct objfile *objfile, void *datum)
{
- htab_t htab = datum;
+ htab_t htab = (htab_t) datum;
if (htab != NULL)
{
= syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
const struct symbol *symbol = s_smob->symbol;
- return gdbscm_scm_from_c_string (SYMBOL_NATURAL_NAME (symbol));
+ return gdbscm_scm_from_c_string (symbol->natural_name ());
}
/* (symbol-linkage-name <gdb:symbol>) -> string */
= syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
const struct symbol *symbol = s_smob->symbol;
- return gdbscm_scm_from_c_string (SYMBOL_LINKAGE_NAME (symbol));
+ return gdbscm_scm_from_c_string (symbol->linkage_name ());
}
/* (symbol-print-name <gdb:symbol>) -> string */
= syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
const struct symbol *symbol = s_smob->symbol;
- return gdbscm_scm_from_c_string (SYMBOL_PRINT_NAME (symbol));
+ return gdbscm_scm_from_c_string (symbol->print_name ());
}
/* (symbol-addr-class <gdb:symbol>) -> integer */
struct symbol *symbol = s_smob->symbol;
int result = 0;
- TRY
+ gdbscm_gdb_exception exc {};
+ try
{
result = symbol_read_needs_frame (symbol);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
- GDBSCM_HANDLE_GDB_EXCEPTION (except);
+ exc = unpack (except);
}
- END_CATCH
+ GDBSCM_HANDLE_GDB_EXCEPTION (exc);
return scm_from_bool (result);
}
_("cannot get the value of a typedef"));
}
- TRY
+ gdbscm_gdb_exception exc {};
+ try
{
if (f_smob != NULL)
{
can happen with nested functions). */
value = read_var_value (symbol, NULL, frame_info);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
- GDBSCM_HANDLE_GDB_EXCEPTION (except);
+ exc = unpack (except);
}
- END_CATCH
+ GDBSCM_HANDLE_GDB_EXCEPTION (exc);
return vlscm_scm_from_value (value);
}
\f
int block_arg_pos = -1, domain_arg_pos = -1;
struct field_of_this_result is_a_field_of_this;
struct symbol *symbol = NULL;
- struct cleanup *cleanups;
- struct gdb_exception except = exception_none;
gdbscm_parse_function_args (FUNC_NAME, SCM_ARG1, keywords, "s#Oi",
name_scm, &name, rest,
&block_arg_pos, &block_scm,
&domain_arg_pos, &domain);
- cleanups = make_cleanup (xfree, name);
-
if (block_arg_pos >= 0)
{
SCM except_scm;
&except_scm);
if (block == NULL)
{
- do_cleanups (cleanups);
+ xfree (name);
gdbscm_throw (except_scm);
}
}
{
struct frame_info *selected_frame;
- TRY
+ gdbscm_gdb_exception exc {};
+ try
{
selected_frame = get_selected_frame (_("no frame selected"));
block = get_frame_block (selected_frame, NULL);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &ex)
{
- GDBSCM_HANDLE_GDB_EXCEPTION_WITH_CLEANUPS (except, cleanups);
+ xfree (name);
+ exc = unpack (ex);
}
- END_CATCH
+ GDBSCM_HANDLE_GDB_EXCEPTION (exc);
}
- TRY
+ gdbscm_gdb_exception except {};
+ try
{
- symbol = lookup_symbol (name, block, domain, &is_a_field_of_this).symbol;
+ symbol = lookup_symbol (name, block, (domain_enum) domain,
+ &is_a_field_of_this).symbol;
}
- CATCH (ex, RETURN_MASK_ALL)
+ catch (const gdb_exception &ex)
{
- except = ex;
+ except = unpack (ex);
}
- END_CATCH
- do_cleanups (cleanups);
+ xfree (name);
GDBSCM_HANDLE_GDB_EXCEPTION (except);
if (symbol == NULL)
int domain_arg_pos = -1;
int domain = VAR_DOMAIN;
struct symbol *symbol = NULL;
- struct cleanup *cleanups;
- struct gdb_exception except = exception_none;
+ gdbscm_gdb_exception except {};
gdbscm_parse_function_args (FUNC_NAME, SCM_ARG1, keywords, "s#i",
name_scm, &name, rest,
&domain_arg_pos, &domain);
- cleanups = make_cleanup (xfree, name);
-
- TRY
+ try
{
- symbol = lookup_global_symbol (name, NULL, domain).symbol;
+ symbol = lookup_global_symbol (name, NULL, (domain_enum) domain).symbol;
}
- CATCH (ex, RETURN_MASK_ALL)
+ catch (const gdb_exception &ex)
{
- except = ex;
+ except = unpack (ex);
}
- END_CATCH
- do_cleanups (cleanups);
+ xfree (name);
GDBSCM_HANDLE_GDB_EXCEPTION (except);
if (symbol == NULL)
static const scheme_function symbol_functions[] =
{
- { "symbol?", 1, 0, 0, gdbscm_symbol_p,
+ { "symbol?", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_p),
"\
Return #t if the object is a <gdb:symbol> object." },
- { "symbol-valid?", 1, 0, 0, gdbscm_symbol_valid_p,
+ { "symbol-valid?", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_valid_p),
"\
Return #t if object is a valid <gdb:symbol> object.\n\
A valid symbol is a symbol that has not been freed.\n\
Symbols are freed when the objfile they come from is freed." },
- { "symbol-type", 1, 0, 0, gdbscm_symbol_type,
+ { "symbol-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_type),
"\
Return the type of symbol." },
- { "symbol-symtab", 1, 0, 0, gdbscm_symbol_symtab,
+ { "symbol-symtab", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_symtab),
"\
Return the symbol table (<gdb:symtab>) containing symbol." },
- { "symbol-line", 1, 0, 0, gdbscm_symbol_line,
+ { "symbol-line", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_line),
"\
Return the line number at which the symbol was defined." },
- { "symbol-name", 1, 0, 0, gdbscm_symbol_name,
+ { "symbol-name", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_name),
"\
Return the name of the symbol as a string." },
- { "symbol-linkage-name", 1, 0, 0, gdbscm_symbol_linkage_name,
+ { "symbol-linkage-name", 1, 0, 0,
+ as_a_scm_t_subr (gdbscm_symbol_linkage_name),
"\
Return the linkage name of the symbol as a string." },
- { "symbol-print-name", 1, 0, 0, gdbscm_symbol_print_name,
+ { "symbol-print-name", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_print_name),
"\
Return the print name of the symbol as a string.\n\
This is either name or linkage-name, depending on whether the user\n\
asked GDB to display demangled or mangled names." },
- { "symbol-addr-class", 1, 0, 0, gdbscm_symbol_addr_class,
+ { "symbol-addr-class", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_addr_class),
"\
Return the address class of the symbol." },
- { "symbol-needs-frame?", 1, 0, 0, gdbscm_symbol_needs_frame_p,
+ { "symbol-needs-frame?", 1, 0, 0,
+ as_a_scm_t_subr (gdbscm_symbol_needs_frame_p),
"\
Return #t if the symbol needs a frame to compute its value." },
- { "symbol-argument?", 1, 0, 0, gdbscm_symbol_argument_p,
+ { "symbol-argument?", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_argument_p),
"\
Return #t if the symbol is a function argument." },
- { "symbol-constant?", 1, 0, 0, gdbscm_symbol_constant_p,
+ { "symbol-constant?", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_constant_p),
"\
Return #t if the symbol is a constant." },
- { "symbol-function?", 1, 0, 0, gdbscm_symbol_function_p,
+ { "symbol-function?", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_function_p),
"\
Return #t if the symbol is a function." },
- { "symbol-variable?", 1, 0, 0, gdbscm_symbol_variable_p,
+ { "symbol-variable?", 1, 0, 0, as_a_scm_t_subr (gdbscm_symbol_variable_p),
"\
Return #t if the symbol is a variable." },
- { "symbol-value", 1, 0, 1, gdbscm_symbol_value,
+ { "symbol-value", 1, 0, 1, as_a_scm_t_subr (gdbscm_symbol_value),
"\
Return the value of the symbol.\n\
\n\
Arguments: <gdb:symbol> [#:frame frame]" },
- { "lookup-symbol", 1, 0, 1, gdbscm_lookup_symbol,
+ { "lookup-symbol", 1, 0, 1, as_a_scm_t_subr (gdbscm_lookup_symbol),
"\
Return (<gdb:symbol> field-of-this?) if found, otherwise #f.\n\
\n\
block: a <gdb:block> object\n\
domain: a SYMBOL_*_DOMAIN value" },
- { "lookup-global-symbol", 1, 0, 1, gdbscm_lookup_global_symbol,
+ { "lookup-global-symbol", 1, 0, 1,
+ as_a_scm_t_subr (gdbscm_lookup_global_symbol),
"\
Return <gdb:symbol> if found, otherwise #f.\n\
\n\