summaryrefslogtreecommitdiff
path: root/module/scripts
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-08-29 20:43:03 +0200
committerAndy Wingo <wingo@pobox.com>2013-08-29 20:44:55 +0200
commit610295ec9dbf3c21a59b4e579d0889ca90c499e6 (patch)
tree245b72298916e45f716ee8d76e28b0b5e3d70b32 /module/scripts
parentc96933fd544aaf14776a1fc3a2986afc6fecb00c (diff)
downloadguile-610295ec9dbf3c21a59b4e579d0889ca90c499e6.tar.gz
add ability to disassemble ELF images
* module/scripts/disassemble.scm (disassemble): Update to work with RTl (and only RTL, as that's the future). * module/system/vm/debug.scm (for-each-elf-symbol): New public interface. (debug-context-from-image): New helper. (find-debug-context): Use the helper. * module/system/vm/disassembler.scm (disassemble-image): New public interface.
Diffstat (limited to 'module/scripts')
-rw-r--r--module/scripts/disassemble.scm10
1 files changed, 7 insertions, 3 deletions
diff --git a/module/scripts/disassemble.scm b/module/scripts/disassemble.scm
index 094d65654..3825bc118 100644
--- a/module/scripts/disassemble.scm
+++ b/module/scripts/disassemble.scm
@@ -1,6 +1,6 @@
;;; Disassemble --- Disassemble .go files into something human-readable
-;; Copyright 2005, 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
+;; Copyright 2005, 2008, 2009, 2011, 2012, 2013 Free Software Foundation, Inc.
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public License
@@ -22,12 +22,14 @@
;;; Commentary:
-;; Usage: disassemble [ARGS]
+;; Usage: disassemble FILE...
;;; 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))
@@ -36,7 +38,9 @@
(define (disassemble . files)
(for-each (lambda (file)
- (asm:disassemble (load-thunk-from-file file)))
+ (let* ((thunk (load-thunk-from-file file))
+ (elf (find-mapped-elf-image (rtl-program-code thunk))))
+ (disassemble-image elf)))
files))
(define main disassemble)