1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-02 22:46:30 +02:00
gnupg/tests/gpgscm
Justus Winter 404e8a4136 gpgscm: Keep a history of calls for error messages.
* tests/gpgscm/init.scm (vm-history-print): New function.
* tests/gpgscm/opdefines.h: New opcodes 'CALLSTACK_POP', 'APPLY_CODE',
and 'VM_HISTORY'.
* tests/gpgscm/scheme-private.h (struct history): New definition.
(struct scheme): New field 'history'.
* tests/gpgscm/scheme.c (gc): Mark objects in the history.
(history_free): New function.
(history_init): Likewise.
(history_mark): Likewise.
(add_mod): New macro.
(sub_mod): Likewise.
(tailstack_clear): New function.
(callstack_pop): Likewise.
(callstack_push): Likewise.
(tailstack_push): Likewise.
(tailstack_flatten): Likewise.
(callstack_flatten): Likewise.
(history_flatten): Likewise.
(opexe_0): New variable 'callsite', keep track of the expression if it
is a call, implement the new opcodes, record function applications in
the history.
(opexe_6): Implement new opcode.
(scheme_init_custom_alloc): Initialize history.
(scheme_deinit): Free history.
* tests/gpgscm/scheme.h (USE_HISTORY): New macro.
--

This patch makes TinySCHEME keep a history of function calls.  This
history can be used to produce helpful error messages.  The history
data structure is inspired by MIT/GNU Scheme.

Signed-off-by: Justus Winter <justus@g10code.com>

fu history
2016-12-08 17:15:20 +01:00
..
ffi-private.h Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
ffi.c gpgscm: Expose seek and associated constants. 2016-11-08 16:02:55 +01:00
ffi.h Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
ffi.scm gpgscm: Fix installation of error handler. 2016-11-22 12:09:47 +01:00
init.scm gpgscm: Keep a history of calls for error messages. 2016-12-08 17:15:20 +01:00
lib.scm gpgscm: Expose seek and associated constants. 2016-11-08 16:02:55 +01:00
LICENSE.TinySCHEME Add license notices for TinySCHEME. 2016-06-17 18:53:45 +02:00
main.c Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
Makefile.am Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
Manual.txt Fix more spelling 2016-09-17 16:00:37 +09:00
opdefines.h gpgscm: Keep a history of calls for error messages. 2016-12-08 17:15:20 +01:00
private.h Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
repl.scm tests: Refine the repl function. 2016-09-19 18:49:17 +02:00
scheme-config.h Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
scheme-private.h gpgscm: Keep a history of calls for error messages. 2016-12-08 17:15:20 +01:00
scheme.c gpgscm: Keep a history of calls for error messages. 2016-12-08 17:15:20 +01:00
scheme.h gpgscm: Keep a history of calls for error messages. 2016-12-08 17:15:20 +01:00
t-child.c Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
t-child.scm gpgscm: Improve test of low-level functions. 2016-10-07 16:25:55 +02:00
tests.scm gpgscm: Generalize 'for-each-p'. 2016-12-08 15:39:05 +01:00