aboutsummaryrefslogtreecommitdiff
path: root/gdb/scm-lang.h
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2007-08-09 23:01:17 +0000
committerLudovic Courtès <ludo@gnu.org>2007-08-09 23:01:17 +0000
commitd4310edb359dda35189ab0ece88a9107085fcf54 (patch)
tree61d5c8ff3037b68131052d16e18c791844d5ab43 /gdb/scm-lang.h
parent57da77961a2dc9c840da5ac22432a84fb4044bc1 (diff)
downloadgdb-d4310edb359dda35189ab0ece88a9107085fcf54.zip
gdb-d4310edb359dda35189ab0ece88a9107085fcf54.tar.gz
gdb-d4310edb359dda35189ab0ece88a9107085fcf54.tar.bz2
Re-instated Guile/Scheme support.
Diffstat (limited to 'gdb/scm-lang.h')
-rw-r--r--gdb/scm-lang.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/gdb/scm-lang.h b/gdb/scm-lang.h
new file mode 100644
index 0000000..2507566
--- /dev/null
+++ b/gdb/scm-lang.h
@@ -0,0 +1,72 @@
+/* Scheme/Guile language support routines for GDB, the GNU debugger.
+
+ Copyright (C) 1995, 1996, 1998, 1999, 2000, 2003, 2005 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 2 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, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+#define SICP
+#include "scm-tags.h"
+#undef SCM_NCELLP
+#define SCM_NCELLP(x) ((SCM_SIZE-1) & (int)(x))
+#define SCM_ITAG8_DATA(X) ((X)>>8)
+#define SCM_ICHR(x) ((unsigned char)SCM_ITAG8_DATA(x))
+#define SCM_ICHRP(x) (SCM_ITAG8(x) == scm_tc8_char)
+#define scm_tc8_char 0xf4
+#define SCM_IFLAGP(n) ((0x87 & (int)(n))==4)
+#define SCM_ISYMNUM(n) ((int)((n)>>9))
+#define SCM_ISYMCHARS(n) (scm_isymnames[SCM_ISYMNUM(n)])
+#define SCM_ILOCP(n) ((0xff & (int)(n))==0xfc)
+#define SCM_ITAG8(X) ((int)(X) & 0xff)
+#define SCM_TYP7(x) (0x7f & (int)SCM_CAR(x))
+#define SCM_LENGTH(x) (((unsigned long)SCM_CAR(x))>>8)
+#define SCM_NCONSP(x) (1 & (int)SCM_CAR(x))
+#define SCM_NECONSP(x) (SCM_NCONSP(x) && (1 != SCM_TYP3(x)))
+#define SCM_CAR(x) scm_get_field (x, 0)
+#define SCM_CDR(x) scm_get_field (x, 1)
+#define SCM_VELTS(x) ((SCM *)SCM_CDR(x))
+#define SCM_CLOSCAR(x) (SCM_CAR(x)-scm_tc3_closure)
+#define SCM_CODE(x) SCM_CAR(SCM_CLOSCAR (x))
+#define SCM_MAKINUM(x) (((x)<<2)+2L)
+
+/* Forward decls for prototypes */
+struct value;
+
+extern int scm_value_print (struct value *, struct ui_file *,
+ int, enum val_prettyprint);
+
+extern int scm_val_print (struct type *, const gdb_byte *, int, CORE_ADDR,
+ struct ui_file *, int, int, int,
+ enum val_prettyprint);
+
+extern LONGEST scm_get_field (LONGEST, int);
+
+extern void scm_scmval_print (LONGEST, struct ui_file *, int, int, int,
+ enum val_prettyprint);
+
+extern int is_scmvalue_type (struct type *);
+
+extern void scm_printchar (int, struct ui_file *);
+
+extern struct value *scm_evaluate_string (char *, int);
+
+extern struct type *builtin_type_scm;
+
+extern int scm_parse (void);
+
+extern LONGEST scm_unpack (struct type *, const gdb_byte *, enum type_code);