summaryrefslogtreecommitdiff
path: root/test-suite/tests/asm-to-bytecode.test
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2012-06-22 13:35:55 +0200
committerAndy Wingo <wingo@pobox.com>2012-06-22 13:40:50 +0200
commitb8bc86bce147cf280ca2a60d36c8b6493cbf11e8 (patch)
tree510c9f80953d586f40af3b5ad0ffa5fc7c0b2ec9 /test-suite/tests/asm-to-bytecode.test
parentafc74c2920d2f8f8424db9d6f554a91866cbac01 (diff)
downloadguile-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.test24
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))))))))