mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 20:00:19 +02:00
* libguile/objcodes.c: Change to expect objcode on disk to be embedded in ELF instead of having the funky cookie. (to_native_order): Use already existing SCM_BYTE_ORDER style byte order instead of chars. (bytecode_to_objcode): No need for word_size arg. (scm_bytecode_to_objcode, scm_objcode_to_bytecode): Take optional endianness arg instead of sometimes using target-endianness. (scm_load_objcode, scm_write_objcode, scm_bytecode_to_native_objcode): Remove. * libguile/objcodes.h: Adapt. * libguile/vm.c (scm_load_compiled_with_vm): Use scm_load_thunk_from_file. (make_boot_program): Adapt to use scm_bytecode_to_objcode with endianness arg. * module/Makefile.am (OBJCODE_LANG_SOURCES): Add (language objcode elf). * module/language/objcode/elf.scm: New module, embeds objcode in ELF. * module/language/bytecode/spec.scm (compile-objcode): (decompile-objcode): Use (target-endianness). * module/language/objcode/spec.scm: use (language objcode elf) for write-objcode. * module/scripts/disassemble.scm (disassemble): * module/system/repl/command.scm (disassemble-file): Use load-thunk-from-file. * module/system/vm/objcode.scm: Remove load-objcode and write-objcode. * test-suite/tests/asm-to-bytecode.test (test-target): Adapt to the new ELF world. |
||
---|---|---|
.. | ||
api-diff.scm | ||
autofrisk.scm | ||
ChangeLog-2008 | ||
compile.scm | ||
disassemble.scm | ||
display-commentary.scm | ||
doc-snarf.scm | ||
frisk.scm | ||
generate-autoload.scm | ||
help.scm | ||
lint.scm | ||
list.scm | ||
punify.scm | ||
read-rfc822.scm | ||
read-scheme-source.scm | ||
read-text-outline.scm | ||
README | ||
scan-api.scm | ||
snarf-check-and-output-texi.scm | ||
snarf-guile-m4-docs.scm | ||
summarize-guile-TODO.scm | ||
use2dot.scm |
Overview and Usage ------------------ This directory contains Scheme programs, some useful in maintaining Guile. On "make install", these programs are copied to PKGDATADIR/VERSION/scripts. You can use guild to invoke a program from the shell, or alternatively, load its file as a Guile Scheme module, and use its exported procedure(s) from Scheme code. Typically for any PROGRAM: (use-modules (scripts PROGRAM)) (PROGRAM ARG1 ARG2 ...) For programs that write to stdout, you might try, instead: (use-modules (scripts PROGRAM)) (with-output-to-string (lambda () (PROGRAM ARG1 ARG2 ...))) Note that all args must be strings. To see PROGRAM's commentary, which may or may not be helpful: (help (scripts PROGRAM)) If you want to try the programs before installing Guile, you will probably need to set environment variable GUILE_LOAD_PATH to be the parent directory. This can be done in Bourne-compatible shells like so: GUILE_LOAD_PATH=`(cd .. ; pwd)` export GUILE_LOAD_PATH [FIXME: Can someone supply the csh-compatible equivalent?] How to Contribute ----------------- See template file PROGRAM for a quick start. Programs must follow the "guild" convention, documented here: - The module name must be "(scripts PROGRAM)". A procedure named PROGRAM w/ signature "(PROGRAM . args)" must be exported. Basically, use some variant of the form: (define-module (scripts PROGRAM) :export (PROGRAM)) Feel free to export other definitions useful in the module context. - There must be the alias: (define main PROGRAM) However, `main' must NOT be exported. Following these conventions allows the program file to be used as module (scripts PROGRAM) in addition to being invoked by guild. Please also include a helpful Commentary section w/ some usage info. [README ends here]