mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 09:10:22 +02:00
instead of our custom .go format, use elf
* 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.
This commit is contained in:
parent
afc74c2920
commit
b8bc86bce1
12 changed files with 192 additions and 325 deletions
|
@ -1,6 +1,6 @@
|
|||
@c -*-texinfo-*-
|
||||
@c This is part of the GNU Guile Reference Manual.
|
||||
@c Copyright (C) 2008, 2009, 2010, 2011
|
||||
@c Copyright (C) 2008, 2009, 2010, 2011, 2012
|
||||
@c Free Software Foundation, Inc.
|
||||
@c See the file guile.texi for copying conditions.
|
||||
|
||||
|
@ -800,29 +800,36 @@ objcode)} module.
|
|||
Returns @code{#f} iff @var{obj} is object code, @code{#f} otherwise.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} bytecode->objcode bytecode
|
||||
@deffn {Scheme Procedure} bytecode->objcode bytecode [endianness]
|
||||
@deffnx {C Function} scm_bytecode_to_objcode (bytecode)
|
||||
Makes a bytecode object from @var{bytecode}, which should be a
|
||||
bytevector. @xref{Bytevectors}.
|
||||
bytevector. @xref{Bytevectors}. By default, the embedded length fields
|
||||
in the bytevector are interpreted in the native byte order.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Variable} load-objcode file
|
||||
@deffnx {C Function} scm_load_objcode (file)
|
||||
@deffn {Scheme Variable} load-thunk-from-file file
|
||||
@deffnx {C Function} scm_load_thunk_from_file (file)
|
||||
Load object code from a file named @var{file}. The file will be mapped
|
||||
into memory via @code{mmap}, so this is a very fast operation.
|
||||
|
||||
On disk, object code has an sixteen-byte cookie prepended to it, to
|
||||
prevent accidental loading of arbitrary garbage.
|
||||
On disk, object code is embedded in ELF, a flexible container format
|
||||
created for use in UNIX systems. Guile has its own ELF linker and
|
||||
loader, so it uses the ELF format on all systems.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Variable} write-objcode objcode file
|
||||
@deffnx {C Function} scm_write_objcode (objcode)
|
||||
Write object code out to a file, prepending the sixteen-byte cookie.
|
||||
Embed object code into an ELF container, and write it out to a file.
|
||||
|
||||
This procedure is part of a separate module, @code{(language objcode
|
||||
elf)}.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Variable} objcode->bytecode objcode
|
||||
@deffn {Scheme Variable} objcode->bytecode objcode [endianness]
|
||||
@deffnx {C Function} scm_objcode_to_bytecode (objcode)
|
||||
Copy object code out to a bytevector for analysis by Scheme.
|
||||
Copy object code out to a bytevector for analysis by Scheme. By
|
||||
default, the length fields in the @code{struct scm_objcode} are
|
||||
interpreted in the native byte order.
|
||||
@end deffn
|
||||
|
||||
The following procedure is actually in @code{(system vm program)}, but
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue