This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: RFA: cleanup INIT_DISASSEMBLE_INFO macro
- From: Andrew Cagney <ac131313 at redhat dot com>
- To: binutils at sources dot redhat dot com
- Date: Wed, 27 Aug 2003 15:54:49 -0400
- Subject: Re: RFA: cleanup INIT_DISASSEMBLE_INFO macro
- References: <3F4BF174.6070405@redhat.com>
Here's a revised patch. It just updates the binutils side and retains
backward compatibility. I discovered that the sim directories have a
few lotering INIT_DISASSEMBLE_INFO references.
ok?
Andrew
Index: opcodes/ChangeLog
2003-08-26 Andrew Cagney <cagney@redhat.com>
* dis-init.c (init_disassemble_info): New file and function. Also
initialize "insn_sets".
* Makefile.am (CFILES): Add "dis-init.c".
(libopcodes_la_SOURCES): Add "dis-init.c".
(dis-init.lo): Specify dependencies.
* Makefile.in: Regenerate.
Index: binutils/ChangeLog
2003-08-27 Andrew Cagney <cagney@redhat.com>
* objdump.c: Refer to init_disassemble_info in comments.
(disassemble_data): Replace INIT_DISASSEMBLE_INFO with
init_disassemble_info.
Index: include/ChangeLog
2003-08-27 Andrew Cagney <cagney@redhat.com>
* dis-asm.h (init_disassemble_info): Declare.
(INIT_DISASSEMBLE_INFO): Redefine as a call to
init_disassemble_info.
(INIT_DISASSEMBLE_INFO_NO_ARCH): Ditto.
Index: binutils/objdump.c
===================================================================
RCS file: /cvs/src/src/binutils/objdump.c,v
retrieving revision 1.75
diff -u -r1.75 objdump.c
--- binutils/objdump.c 5 Aug 2003 14:40:54 -0000 1.75
+++ binutils/objdump.c 27 Aug 2003 19:40:22 -0000
@@ -37,7 +37,7 @@
#include "aout/aout64.h"
#ifdef NEED_DECLARATION_FPRINTF
-/* This is needed by INIT_DISASSEMBLE_INFO. */
+/* This is needed by init_disassemble_info(). */
extern int fprintf (FILE *, const char *, ...);
#endif
@@ -1528,7 +1528,7 @@
/* Sort the symbols into section and symbol order. */
qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols);
- INIT_DISASSEMBLE_INFO (disasm_info, stdout, fprintf);
+ init_disassemble_info (&disasm_info, stdout, fprintf);
disasm_info.application_data = (void *) &aux;
aux.abfd = abfd;
Index: include/dis-asm.h
===================================================================
RCS file: /cvs/src/src/include/dis-asm.h,v
retrieving revision 1.44
diff -u -r1.44 dis-asm.h
--- include/dis-asm.h 7 Aug 2003 02:25:49 -0000 1.44
+++ include/dis-asm.h 27 Aug 2003 19:41:19 -0000
@@ -284,42 +284,17 @@
extern int generic_symbol_at_address
(bfd_vma, struct disassemble_info *);
-/* Macro to initialize a disassemble_info struct. This should be called
- by all applications creating such a struct. */
-#define INIT_DISASSEMBLE_INFO(INFO, STREAM, FPRINTF_FUNC) \
- (INFO).flavour = bfd_target_unknown_flavour, \
- (INFO).arch = bfd_arch_unknown, \
- (INFO).mach = 0, \
- (INFO).insn_sets = 0, \
- (INFO).endian = BFD_ENDIAN_UNKNOWN, \
- (INFO).octets_per_byte = 1, \
- INIT_DISASSEMBLE_INFO_NO_ARCH(INFO, STREAM, FPRINTF_FUNC)
-
-/* Call this macro to initialize only the internal variables for the
- disassembler. Architecture dependent things such as byte order, or machine
- variant are not touched by this macro. This makes things much easier for
- GDB which must initialize these things separately. */
+/* Method to initialize a disassemble_info struct. This should be
+ called by all applications creating such a struct. */
+extern void init_disassemble_info (struct disassemble_info *info, void *stream,
+ fprintf_ftype fprintf_func);
+/* For compatibility with existing code. */
+#define INIT_DISASSEMBLE_INFO(INFO, STREAM, FPRINTF_FUNC) \
+ init_disassemble_info (&(INFO), (STREAM), (fprintf_ftype) (FPRINTF_FUNC))
#define INIT_DISASSEMBLE_INFO_NO_ARCH(INFO, STREAM, FPRINTF_FUNC) \
- (INFO).fprintf_func = (fprintf_ftype)(FPRINTF_FUNC), \
- (INFO).stream = (STREAM), \
- (INFO).section = NULL, \
- (INFO).symbols = NULL, \
- (INFO).num_symbols = 0, \
- (INFO).private_data = NULL, \
- (INFO).buffer = NULL, \
- (INFO).buffer_vma = 0, \
- (INFO).buffer_length = 0, \
- (INFO).read_memory_func = buffer_read_memory, \
- (INFO).memory_error_func = perror_memory, \
- (INFO).print_address_func = generic_print_address, \
- (INFO).symbol_at_address_func = generic_symbol_at_address, \
- (INFO).flags = 0, \
- (INFO).bytes_per_line = 0, \
- (INFO).bytes_per_chunk = 0, \
- (INFO).display_endian = BFD_ENDIAN_UNKNOWN, \
- (INFO).disassembler_options = NULL, \
- (INFO).insn_info_valid = 0
+ init_disassemble_info (&(INFO), (STREAM), (fprintf_ftype) (FPRINTF_FUNC))
+
#ifdef __cplusplus
}
Index: opcodes/Makefile.am
===================================================================
RCS file: /cvs/src/src/opcodes/Makefile.am,v
retrieving revision 1.68
diff -u -r1.68 Makefile.am
--- opcodes/Makefile.am 14 Aug 2003 07:03:18 -0000 1.68
+++ opcodes/Makefile.am 27 Aug 2003 19:41:45 -0000
@@ -63,6 +63,7 @@
d30v-opc.c \
dlx-dis.c \
dis-buf.c \
+ dis-init.c \
disassemble.c \
fr30-asm.c \
fr30-desc.c \
@@ -281,7 +282,7 @@
disassemble.lo: disassemble.c $(INCDIR)/dis-asm.h
$(LIBTOOL) --mode=compile $(COMPILE) -c @archdefs@ $(srcdir)/disassemble.c
-libopcodes_la_SOURCES = dis-buf.c disassemble.c
+libopcodes_la_SOURCES = dis-buf.c disassemble.c dis-init.c
libopcodes_la_DEPENDENCIES = $(OFILES) ../bfd/libbfd.la
libopcodes_la_LIBADD = $(OFILES) @WIN32LIBADD@ ../bfd/libbfd.la
libopcodes_la_LDFLAGS = -release $(VERSION) @WIN32LDFLAGS@
@@ -546,6 +547,8 @@
dlx-dis.lo: dlx-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/dlx.h
dis-buf.lo: dis-buf.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h opintl.h
+dis-init.lo: dis-init.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h opintl.h
disassemble.lo: disassemble.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h
Index: opcodes/dis-init.c
===================================================================
RCS file: opcodes/dis-init.c
diff -N opcodes/dis-init.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ opcodes/dis-init.c 27 Aug 2003 19:41:53 -0000
@@ -0,0 +1,55 @@
+/* Initialize "struct disassemble_info".
+
+ Copyright 2002 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include "sysdep.h"
+#include "dis-asm.h"
+#include "bfd.h"
+
+void
+init_disassemble_info (struct disassemble_info *info, void *stream,
+ fprintf_ftype fprintf_func)
+{
+ info->flavour = bfd_target_unknown_flavour;
+ info->arch = bfd_arch_unknown;
+ info->mach = 0;
+ info->insn_sets = 0;
+ info->endian = BFD_ENDIAN_UNKNOWN;
+ info->octets_per_byte = 1;
+ info->fprintf_func = fprintf_func;
+ info->stream = stream;
+ info->section = NULL;
+ info->symbols = NULL;
+ info->num_symbols = 0;
+ info->private_data = NULL;
+ info->buffer = NULL;
+ info->buffer_vma = 0;
+ info->buffer_length = 0;
+ info->read_memory_func = buffer_read_memory;
+ info->memory_error_func = perror_memory;
+ info->print_address_func = generic_print_address;
+ info->symbol_at_address_func = generic_symbol_at_address;
+ info->flags = 0;
+ info->bytes_per_line = 0;
+ info->bytes_per_chunk = 0;
+ info->display_endian = BFD_ENDIAN_UNKNOWN;
+ info->disassembler_options = NULL;
+ info->insn_info_valid = 0;
+ info->insn_sets = 0;
+}
+