;;; Code:
(define-module (scripts disassemble)
- #:use-module (system vm objcode)
- #:use-module (system vm program)
#:use-module (system vm disassembler)
- #:use-module ((language assembly disassemble)
- #:renamer (symbol-prefix-proc 'asm:))
#:export (disassemble))
(define %summary "Disassemble a compiled .go file.")
(define (disassemble . files)
- (for-each (lambda (file)
- (let* ((thunk (load-thunk-from-file file))
- (elf (find-mapped-elf-image (rtl-program-code thunk))))
- (disassemble-image elf)))
- files))
+ (for-each disassemble-file files))
(define main disassemble)
(define (disassemble-program x)
((@ (system vm disassembler) disassemble-program) x))
+(define (disassemble-file x)
+ ((@ (system vm disassembler) disassemble-file) x))
+
(define-meta-command (disassemble repl (form))
"disassemble EXP
Disassemble a compiled procedure."
(define-meta-command (disassemble-file repl file)
"disassemble-file FILE
Disassemble a file."
- (guile:disassemble (load-thunk-from-file (->string file))))
+ (disassemble-file (->string file)))
\f
;;;
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-4)
#:export (disassemble-program
- disassemble-image))
+ disassemble-image
+ disassemble-file))
(define-syntax-rule (u32-ref buf n)
(bytevector-u32-native-ref buf (* n 4)))
ctx)
(display "\n\n" port)))))
(values))
+
+(define (disassemble-file file)
+ (let* ((thunk (load-thunk-from-file file))
+ (elf (find-mapped-elf-image (rtl-program-code thunk))))
+ (disassemble-image elf)))