1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-16 16:50:21 +02:00

,xx for RTL images

* module/scripts/disassemble.scm (disassemble):
* module/system/vm/disassembler.scm (disassemble-file): Factor
  disassemble-file out.

* module/system/repl/command.scm (disassemble-file): Map ,xx to
  disassemble RTL images.
This commit is contained in:
Andy Wingo 2013-08-29 20:50:19 +02:00
parent 610295ec9d
commit 93009a7aca
3 changed files with 12 additions and 11 deletions

View file

@ -27,20 +27,12 @@
;;; 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)

View file

@ -487,6 +487,9 @@ Run the optimizer on a piece of code and print the result."
(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."
@ -503,7 +506,7 @@ 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)))
;;;

View file

@ -32,7 +32,8 @@
#: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)))
@ -357,3 +358,8 @@ address of that offset."
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)))