/* Scheme/Guile language support routines for GDB, the GNU debugger.
- Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003 Free Software
- Foundation, Inc.
+ Copyright (C) 1995, 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2007
+ Free Software Foundation, Inc.
This file is part of GDB.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
#include "defs.h"
#include "symtab.h"
int *, enum noside);
static struct value *scm_lookup_name (char *);
static int in_eval_c (void);
-static void scm_printstr (struct ui_file * stream, char *string,
- unsigned int length, int width,
- int force_ellipses);
-
-extern struct type **const (c_builtin_types[]);
struct type *builtin_type_scm;
}
static void
-scm_printstr (struct ui_file *stream, char *string, unsigned int length,
- int width, int force_ellipses)
+scm_printstr (struct ui_file *stream, const gdb_byte *string,
+ unsigned int length, int width, int force_ellipses)
{
fprintf_filtered (stream, "\"%s\"", string);
}
LONGEST
scm_get_field (LONGEST svalue, int index)
{
- char buffer[20];
+ gdb_byte buffer[20];
read_memory (SCM2PTR (svalue) + index * TYPE_LENGTH (builtin_type_scm),
buffer, TYPE_LENGTH (builtin_type_scm));
return extract_signed_integer (buffer, TYPE_LENGTH (builtin_type_scm));
or Boolean (CONTEXT == TYPE_CODE_BOOL). */
LONGEST
-scm_unpack (struct type *type, const char *valaddr, enum type_code context)
+scm_unpack (struct type *type, const gdb_byte *valaddr, enum type_code context)
{
if (is_scmvalue_type (type))
{
return 1;
}
}
- error ("Value can't be converted to integer.");
+ error (_("Value can't be converted to integer."));
default:
return svalue;
}
struct symbol *sym;
args[0] = value_allocate_space_in_inferior (len);
args[1] = value_from_longest (builtin_type_int, len);
- write_memory (value_as_long (args[0]), str, len);
+ write_memory (value_as_long (args[0]), (gdb_byte *) str, len);
if (in_eval_c ()
&& (sym = lookup_symbol ("env",
(struct symtab **) NULL);
if (sym)
return value_of_variable (sym, NULL);
- error ("No symbol \"%s\" in current context.", str);
+ error (_("No symbol \"%s\" in current context."), str);
}
struct value *
struct value *func;
struct value *addr = value_allocate_space_in_inferior (len + 1);
LONGEST iaddr = value_as_long (addr);
- write_memory (iaddr, str, len);
+ write_memory (iaddr, (gdb_byte *) str, len);
/* FIXME - should find and pass env */
- write_memory (iaddr + len, "", 1);
+ write_memory (iaddr + len, (gdb_byte *) "", 1);
func = find_function_in_inferior ("scm_evstr");
return call_function_by_hand (func, 1, &addr);
}
{
"scheme", /* Language name */
language_scm,
- c_builtin_types,
+ NULL,
range_check_off,
type_check_off,
case_sensitive_off,
+ array_row_major,
&exp_descriptor_scm,
scm_parse,
c_error,
+ null_post_parser,
scm_printchar, /* Print a character constant */
scm_printstr, /* Function to print string constant */
NULL, /* Function to print a single character */
NULL, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
- {"", "", "", ""}, /* Binary format info */
- {"#o%lo", "#o", "o", ""}, /* Octal format info */
- {"%ld", "", "d", ""}, /* Decimal format info */
- {"#x%lX", "#X", "X", ""}, /* Hex format info */
+ NULL, /* Language specific class_name_from_physname */
NULL, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */
- &builtin_type_char, /* Type of string elements */
+ NULL,
default_word_break_characters,
+ c_language_arch_info,
+ default_print_array_index,
LANG_MAGIC
};