[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gcl-devel] [PATCH 04/11] Reorder code to avoid problems with dis-asm.h
From: |
Will Newton |
Subject: |
[Gcl-devel] [PATCH 04/11] Reorder code to avoid problems with dis-asm.h defining DEFUN. |
Date: |
Wed, 11 Jun 2014 17:27:17 +0100 |
From: Will Newton <address@hidden>
---
gcl/o/main.c | 77 ++++++++++++++++++++++++++++++++----------------------------
1 file changed, 41 insertions(+), 36 deletions(-)
diff --git a/gcl/o/main.c b/gcl/o/main.c
index 7e5bee7..c8defb7 100644
--- a/gcl/o/main.c
+++ b/gcl/o/main.c
@@ -1068,46 +1068,12 @@
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);
-}
+static object disassemble_instruction(fixnum 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));
+ return disassemble_instruction(addr);
}
@@ -1167,4 +1133,43 @@ 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))),"");
+#include "dis-asm.h"
+
+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;
+ int j;
+
+ 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
--
1.9.3
- [Gcl-devel] [PATCH 00/11] Add support for AArch64, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 01/11] config.{sub, guess}: Update to latest versions of GNU config, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 03/11] Add support for AArch64, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 04/11] Reorder code to avoid problems with dis-asm.h defining DEFUN.,
Will Newton <=
- [Gcl-devel] [PATCH 02/11] o/main.c: Ensure cs_org is always pointer aligned, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 06/11] Check for preceding NULL in find_init_name1, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 07/11] Fix handling of varargs in sSuniversal_error_handler, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 05/11] Always pass a va_list as the last arg of call_proc_new, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 10/11] Reduce threshold for increasing maxpage, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 09/11] Avoid looking up dynamic symbols in the executable, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 08/11] Handle dladdr failure correctly, Will Newton, 2014/06/11
- [Gcl-devel] [PATCH 11/11] Hack to disable x86 floating point code, Will Newton, 2014/06/11
- Re: [Gcl-devel] [PATCH 00/11] Add support for AArch64, Camm Maguire, 2014/06/11