Пример #1
0
static SCM
gdbscm_symbol_addr_class (SCM self)
{
    symbol_smob *s_smob
        = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
    const struct symbol *symbol = s_smob->symbol;

    return scm_from_int (SYMBOL_CLASS (symbol));
}
Пример #2
0
static SCM
gdbscm_symbol_argument_p (SCM self)
{
    symbol_smob *s_smob
        = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
    const struct symbol *symbol = s_smob->symbol;

    return scm_from_bool (SYMBOL_IS_ARGUMENT (symbol));
}
Пример #3
0
static SCM
gdbscm_symbol_symtab (SCM self)
{
    symbol_smob *s_smob
        = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
    const struct symbol *symbol = s_smob->symbol;

    return stscm_scm_from_symtab (SYMBOL_SYMTAB (symbol));
}
Пример #4
0
static SCM
gdbscm_symbol_print_name (SCM self)
{
    symbol_smob *s_smob
        = 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));
}
Пример #5
0
struct symbol *
syscm_get_valid_symbol_arg_unsafe (SCM self, int arg_pos,
                                   const char *func_name)
{
    symbol_smob *s_smob = syscm_get_valid_symbol_smob_arg_unsafe (self, arg_pos,
                          func_name);

    return s_smob->symbol;
}
Пример #6
0
static SCM
gdbscm_symbol_symtab (SCM self)
{
  symbol_smob *s_smob
    = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
  const struct symbol *symbol = s_smob->symbol;

  if (!SYMBOL_OBJFILE_OWNED (symbol))
    return SCM_BOOL_F;
  return stscm_scm_from_symtab (symbol_symtab (symbol));
}
Пример #7
0
static SCM
gdbscm_symbol_function_p (SCM self)
{
    symbol_smob *s_smob
        = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
    const struct symbol *symbol = s_smob->symbol;
    enum address_class class;

    class = SYMBOL_CLASS (symbol);

    return scm_from_bool (class == LOC_BLOCK);
}
Пример #8
0
static SCM
gdbscm_symbol_type (SCM self)
{
    symbol_smob *s_smob
        = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
    const struct symbol *symbol = s_smob->symbol;

    if (SYMBOL_TYPE (symbol) == NULL)
        return SCM_BOOL_F;

    return tyscm_scm_from_type (SYMBOL_TYPE (symbol));
}
Пример #9
0
static SCM
gdbscm_symbol_constant_p (SCM self)
{
  symbol_smob *s_smob
    = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
  const struct symbol *symbol = s_smob->symbol;
  enum address_class theclass;

  theclass = SYMBOL_CLASS (symbol);

  return scm_from_bool (theclass == LOC_CONST || theclass == LOC_CONST_BYTES);
}
Пример #10
0
static SCM
gdbscm_symbol_needs_frame_p (SCM self)
{
    symbol_smob *s_smob
        = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
    struct symbol *symbol = s_smob->symbol;
    volatile struct gdb_exception except;
    int result = 0;

    TRY_CATCH (except, RETURN_MASK_ALL)
    {
        result = symbol_read_needs_frame (symbol);
    }
Пример #11
0
static SCM
gdbscm_symbol_variable_p (SCM self)
{
    symbol_smob *s_smob
        = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
    const struct symbol *symbol = s_smob->symbol;
    enum address_class class;

    class = SYMBOL_CLASS (symbol);

    return scm_from_bool (!SYMBOL_IS_ARGUMENT (symbol)
                          && (class == LOC_LOCAL || class == LOC_REGISTER
                              || class == LOC_STATIC || class == LOC_COMPUTED
                              || class == LOC_OPTIMIZED_OUT));
}
Пример #12
0
static SCM
gdbscm_symbol_needs_frame_p (SCM self)
{
  symbol_smob *s_smob
    = syscm_get_valid_symbol_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
  struct symbol *symbol = s_smob->symbol;
  int result = 0;

  TRY
    {
      result = symbol_read_needs_frame (symbol);
    }
  CATCH (except, RETURN_MASK_ALL)
    {
      GDBSCM_HANDLE_GDB_EXCEPTION (except);
    }