35 lines
1.0 KiB
Factor
35 lines
1.0 KiB
Factor
! Copyright (C) 2008, 2010 Slava Pestov, Jorge Acereda Macia.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: io.files io.files.temp io words alien kernel math.parser
|
|
alien.syntax io.launcher assocs arrays sequences namespaces make
|
|
system math io.encodings.ascii accessors tools.disassembler
|
|
tools.disassembler.private locals ;
|
|
IN: tools.disassembler.gdb
|
|
|
|
SINGLETON: gdb-disassembler
|
|
|
|
: in-file ( -- path ) "gdb-in.txt" temp-file ;
|
|
|
|
: out-file ( -- path ) "gdb-out.txt" temp-file ;
|
|
|
|
:: make-disassemble-cmd ( from to -- )
|
|
in-file ascii [
|
|
"attach " write
|
|
(current-process) number>string print
|
|
"x/" write to from - 4 / number>string write
|
|
"i" write bl from number>string write
|
|
] with-file-writer ;
|
|
|
|
: run-gdb ( -- lines )
|
|
<process>
|
|
+closed+ >>stdin
|
|
out-file >>stdout
|
|
[ "gdb" , "-x" , in-file , "-batch" , ] { } make >>command
|
|
try-process
|
|
out-file ascii file-lines ;
|
|
|
|
M: gdb-disassembler disassemble*
|
|
make-disassemble-cmd run-gdb ;
|
|
|
|
gdb-disassembler disassembler-backend set-global
|