| 
									
										
										
										
											2008-12-10 20:35:18 -05:00
										 |  |  | ! Copyright (C) 2008 Slava Pestov, Jorge Acereda Macia. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2008-12-13 05:41:33 -05:00
										 |  |  | USING: io.files io.files.temp io words alien kernel math.parser | 
					
						
							|  |  |  | alien.syntax io.launcher system assocs arrays sequences | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | namespaces make system math io.encodings.ascii | 
					
						
							| 
									
										
										
										
											2008-12-13 05:41:33 -05:00
										 |  |  | accessors tools.disassembler ;
 | 
					
						
							| 
									
										
										
										
											2008-12-10 20:35:18 -05:00
										 |  |  | 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-handle number>string print
 | 
					
						
							|  |  |  |         "disassemble " write
 | 
					
						
							|  |  |  |         [ number>string write bl ] bi@
 | 
					
						
							|  |  |  |     ] with-file-writer ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : gdb-binary ( -- string ) "gdb" ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : run-gdb ( -- lines )
 | 
					
						
							|  |  |  |     <process> | 
					
						
							|  |  |  |         +closed+ >>stdin | 
					
						
							|  |  |  |         out-file >>stdout | 
					
						
							|  |  |  |         [ gdb-binary , "-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
 |