summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamm Maguire <camm@debian.org>2014-09-12 09:35:27 -0400
committerCamm Maguire <camm@debian.org>2014-09-12 09:35:27 -0400
commit5405fca9720bb31164f90902f719cfff0608e582 (patch)
tree86fee4e129681e3636e789078913c91d1c33f9c5
parent9b45ccd2d9c213f7268932579e147f97f0eb4292 (diff)
downloadgcl-5405fca9720bb31164f90902f719cfff0608e582.tar.gz
reorder disassemble-instruction to avoid dis-asm defining DEFUN
-rw-r--r--gcl/o/main.c94
1 files changed, 51 insertions, 43 deletions
diff --git a/gcl/o/main.c b/gcl/o/main.c
index decb9f36..41391148 100644
--- a/gcl/o/main.c
+++ b/gcl/o/main.c
@@ -1068,49 +1068,6 @@ DEFUN("FUNCTION-BY-ADDRESS",object,fSfunction_by_address,SI,1,1,NONE,OI,OO,OO,OO
#ifdef PRINT_INSN
-#include "dis-asm.h"
-
-static char b[4096],*bp;
-
-static int
-my_fprintf(void *v,const char *f,...) {
- va_list va;
- int r;
- va_start(va,f);
- bp+=(r=vsnprintf(bp,sizeof(b)-(bp-b),f,va));
- va_end(va);
- return r;
-}
-
-static int
-my_read(bfd_vma memaddr, bfd_byte *myaddr, unsigned int length, struct disassemble_info *dinfo) {
- memcpy(myaddr,(void *)memaddr,length);
- return 0;
-}
-
-static void
-my_pa(bfd_vma addr,struct disassemble_info *dinfo) {
- dinfo->fprintf_func(dinfo->stream,"%p",(void *)addr);
-}
-
-DEFUN("DISASSEMBLE-INSTRUCTION",object,fSdisassemble_instruction,SI,1,1,NONE,OI,OO,OO,OO,(fixnum addr),"") {
- static disassemble_info i;
- /* static int k; */
- int j;
-
- /* if (!k) {init_disassemble_info(&i,NULL,my_fprintf);k=1;} */
- memset(&i,0,sizeof(i));
- i.fprintf_func=my_fprintf;
- i.read_memory_func=my_read;
- i.print_address_func=my_pa;
- bp=b;
-
- j=PRINT_INSN(addr,&i);
- my_fprintf(NULL," ;");
- return MMcons(make_simple_string(b),make_fixnum(j));
-}
-
-
#define MC(b_) v.uc_mcontext.b_
#define REG_LIST(a_,b_) list(3,make_fixnum((void *)&(a_)-(void *)(b_)),make_fixnum(sizeof(a_)),make_fixnum(sizeof(*a_)))
#define MCF(b_) (((struct _fpstate *)MC(fpregs))->b_)
@@ -1167,4 +1124,55 @@ DEFCONST("+FE-LIST+",sSPfe_listP,SI,list(5,
list(3,sLfloating_point_inexact,make_fixnum(FPE_FLTRES),make_fixnum(FE_INEXACT)),
list(3,sLfloating_point_invalid_operation,make_fixnum(FPE_FLTINV),make_fixnum(FE_INVALID))),"");
+static object disassemble_instruction(fixnum);
+
+DEFUN("DISASSEMBLE-INSTRUCTION",object,fSdisassemble_instruction,SI,1,1,NONE,OI,OO,OO,OO,(fixnum addr),"") {
+ return disassemble_instruction(addr);
+}
+
+#include "dis-asm.h"
+
+static char b[4096],*bp;
+
+static int
+my_fprintf(void *v,const char *f,...) {
+ va_list va;
+ int r;
+ va_start(va,f);
+ bp+=(r=vsnprintf(bp,sizeof(b)-(bp-b),f,va));
+ va_end(va);
+ return r;
+}
+
+static int
+my_read(bfd_vma memaddr, bfd_byte *myaddr, unsigned int length, struct disassemble_info *dinfo) {
+ memcpy(myaddr,(void *)memaddr,length);
+ return 0;
+}
+
+static void
+my_pa(bfd_vma addr,struct disassemble_info *dinfo) {
+ dinfo->fprintf_func(dinfo->stream,"%p",(void *)addr);
+}
+
+static object
+disassemble_instruction(fixnum addr) {
+
+ static disassemble_info i;
+ /* static int k; */
+ int j;
+
+ /* if (!k) {init_disassemble_info(&i,NULL,my_fprintf);k=1;} */
+ memset(&i,0,sizeof(i));
+ i.fprintf_func=my_fprintf;
+ i.read_memory_func=my_read;
+ i.print_address_func=my_pa;
+ bp=b;
+
+ j=PRINT_INSN(addr,&i);
+ my_fprintf(NULL," ;");
+ return MMcons(make_simple_string(b),make_fixnum(j));
+}
+
+
#endif