diff options
author | Andy Wingo <wingo@pobox.com> | 2012-06-22 13:35:55 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2012-06-22 13:40:50 +0200 |
commit | b8bc86bce147cf280ca2a60d36c8b6493cbf11e8 (patch) | |
tree | 510c9f80953d586f40af3b5ad0ffa5fc7c0b2ec9 /test-suite/tests/asm-to-bytecode.test | |
parent | afc74c2920d2f8f8424db9d6f554a91866cbac01 (diff) | |
download | guile-b8bc86bce147cf280ca2a60d36c8b6493cbf11e8.tar.gz |
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.
Diffstat (limited to 'test-suite/tests/asm-to-bytecode.test')
-rw-r--r-- | test-suite/tests/asm-to-bytecode.test | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/test-suite/tests/asm-to-bytecode.test b/test-suite/tests/asm-to-bytecode.test index 52bc7e1a7..ddbe2eeac 100644 --- a/test-suite/tests/asm-to-bytecode.test +++ b/test-suite/tests/asm-to-bytecode.test @@ -22,7 +22,9 @@ #:use-module (test-suite lib) #:use-module (system vm instruction) #:use-module (system vm objcode) + #:use-module (system vm elf) #:use-module (system base target) + #:use-module (language objcode elf) #:use-module (language assembly) #:use-module (language assembly compile-bytecode)) @@ -167,20 +169,12 @@ (nop) (nop) (nop) (nop) (nop)) #f))) - (write-objcode (bytecode->objcode b) p) - (let ((cookie (make-bytevector %objcode-cookie-size)) - (expected (format #f "GOOF----~a-~a" - (cond ((eq? endian (endianness little)) - "LE") - ((eq? endian (endianness big)) - "BE") - (else - (error "unknown endianness" - endian))) - word-size))) - (bytevector-copy! (get-objcode) 0 cookie 0 - %objcode-cookie-size) - (string=? (utf8->string cookie) expected))))))))) + (write-objcode (bytecode->objcode b (target-endianness)) p) + (let* ((bv (get-objcode))) + (and=> (parse-elf bv) + (lambda (elf) + (and (equal? (elf-byte-order elf) endian) + (equal? (elf-word-size elf) word-size)))))))))))) (with-test-prefix "cross-compilation" @@ -202,7 +196,7 @@ (make-int8 77) (return)) #f)) - (o (bytecode->objcode b))) + (o (bytecode->objcode b (target-endianness)))) (with-target "fcpu-unknown-gnu1.0" (lambda () (write-objcode o p)))))))) |