aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog14
-rwxr-xr-xbinutils/configure3
-rw-r--r--binutils/configure.in3
-rw-r--r--binutils/objdump.c24
-rw-r--r--include/ChangeLog6
-rw-r--r--include/dis-asm.h3
-rw-r--r--opcodes/ChangeLog6
-rw-r--r--opcodes/disassemble.c1
8 files changed, 36 insertions, 24 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index a5b7c15..b73144f 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,17 @@
+2006-01-17 Andreas Schwab <schwab@suse.de>
+
+ PR binutils/1486
+ * configure.in: Don't define DISASSEMBLER_NEEDS_RELOCS.
+ * configure: Regenerate.
+ * objdump.c (struct objdump_disasm_info): Don't check for
+ DISASSEMBLER_NEEDS_RELOCS.
+ (objdump_print_addr): Likewise.
+ (disassemble_bytes): Check disassembler_needs_relocs from
+ disassemble_info at run-time instead of DISASSEMBLER_NEEDS_RELOCS
+ at compile-time.
+ (disassemble_section): Likewise.
+ (disassemble_data): Initialize it.
+
2006-01-11 Alan Modra <amodra@bigpond.net.au>
* objcopy.c (copy_object): Fix thinko.
diff --git a/binutils/configure b/binutils/configure
index bf1ad10..2c4d463 100755
--- a/binutils/configure
+++ b/binutils/configure
@@ -10474,9 +10474,6 @@ do
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
- arm*-* | xscale-* | strongarm-* | d10v-*)
- OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS"
- ;;
i[3-7]86-*-pe* | i[3-7]86-*-cygwin* | i[3-7]86-*-mingw32** | i[3-7]86-*-netbsdpe*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
diff --git a/binutils/configure.in b/binutils/configure.in
index 60db5ba..990b060 100644
--- a/binutils/configure.in
+++ b/binutils/configure.in
@@ -250,9 +250,6 @@ changequote([,])dnl
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
- arm*-* | xscale-* | strongarm-* | d10v-*)
- OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS"
- ;;
changequote(,)dnl
i[3-7]86-*-pe* | i[3-7]86-*-cygwin* | i[3-7]86-*-mingw32** | i[3-7]86-*-netbsdpe*)
changequote([,])dnl
diff --git a/binutils/objdump.c b/binutils/objdump.c
index f2b5eea..fc9600c 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -1,6 +1,6 @@
/* objdump.c -- dump information about an object file.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
This file is part of GNU Binutils.
@@ -130,9 +130,7 @@ struct objdump_disasm_info
arelent ** dynrelbuf;
long dynrelcount;
disassembler_ftype disassemble_fn;
-#ifdef DISASSEMBLER_NEEDS_RELOCS
arelent * reloc;
-#endif
};
/* Architecture to disassemble for, or default if NULL. */
@@ -866,9 +864,7 @@ objdump_print_addr (bfd_vma vma,
{
struct objdump_disasm_info *aux;
asymbol *sym = NULL; /* Initialize to avoid compiler warning. */
-#ifdef DISASSEMBLER_NEEDS_RELOCS
bfd_boolean skip_find = FALSE;
-#endif
if (sorted_symcount < 1)
{
@@ -879,7 +875,6 @@ objdump_print_addr (bfd_vma vma,
aux = (struct objdump_disasm_info *) info->application_data;
-#ifdef DISASSEMBLER_NEEDS_RELOCS
if (aux->reloc != NULL
&& aux->reloc->sym_ptr_ptr != NULL
&& * aux->reloc->sym_ptr_ptr != NULL)
@@ -894,7 +889,6 @@ objdump_print_addr (bfd_vma vma,
}
if (!skip_find)
-#endif
sym = find_symbol_for_address (vma, info, NULL);
objdump_print_addr_with_sym (aux->abfd, aux->sec, sym, vma, info,
@@ -1319,12 +1313,10 @@ disassemble_bytes (struct disassemble_info * info,
{
bfd_vma z;
bfd_boolean need_nl = FALSE;
-#ifdef DISASSEMBLER_NEEDS_RELOCS
int previous_octets;
/* Remember the length of the previous instruction. */
previous_octets = octets;
-#endif
octets = 0;
/* If we see more than SKIP_ZEROES octets of zeroes, we just
@@ -1389,8 +1381,8 @@ disassemble_bytes (struct disassemble_info * info,
info->bytes_per_chunk = 0;
info->flags = 0;
-#ifdef DISASSEMBLER_NEEDS_RELOCS
- if (*relppp < relppend)
+ if (info->disassembler_needs_relocs
+ && *relppp < relppend)
{
bfd_signed_vma distance_to_rel;
@@ -1420,7 +1412,7 @@ disassemble_bytes (struct disassemble_info * info,
else
aux->reloc = NULL;
}
-#endif
+
octets = (*disassemble_fn) (section->vma + addr_offset, info);
info->fprintf_func = (fprintf_ftype) fprintf;
info->stream = stdout;
@@ -1672,10 +1664,7 @@ disassemble_section (bfd *abfd, asection *section, void *info)
rel_offset = 0;
if ((section->flags & SEC_RELOC) != 0
-#ifndef DISASSEMBLER_NEEDS_RELOCS
- && dump_reloc_info
-#endif
- )
+ && (dump_reloc_info || pinfo->disassembler_needs_relocs))
{
long relsize;
@@ -1882,9 +1871,7 @@ disassemble_data (bfd *abfd)
aux.require_sec = FALSE;
aux.dynrelbuf = NULL;
aux.dynrelcount = 0;
-#ifdef DISASSEMBLER_NEEDS_RELOCS
aux.reloc = NULL;
-#endif
disasm_info.print_address_func = objdump_print_address;
disasm_info.symbol_at_address_func = objdump_symbol_at_address;
@@ -1926,6 +1913,7 @@ disassemble_data (bfd *abfd)
disasm_info.octets_per_byte = bfd_octets_per_byte (abfd);
disasm_info.skip_zeroes = DEFAULT_SKIP_ZEROES;
disasm_info.skip_zeroes_at_end = DEFAULT_SKIP_ZEROES_AT_END;
+ disasm_info.disassembler_needs_relocs = FALSE;
if (bfd_big_endian (abfd))
disasm_info.display_endian = disasm_info.endian = BFD_ENDIAN_BIG;
diff --git a/include/ChangeLog b/include/ChangeLog
index fe5e1c1..66589fc 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,9 @@
+2006-01-17 Andreas Schwab <schwab@suse.de>
+
+ PR binutils/1486
+ * dis-asm.h (struct disassemble_info): Add
+ disassembler_needs_relocs.
+
2006-01-09 Bob Wilson <bob.wilson@acm.org>
* xtensa-config.h (XCHAL_HAVE_MUL32_HIGH): Define.
diff --git a/include/dis-asm.h b/include/dis-asm.h
index ddb3426..61b34c3 100644
--- a/include/dis-asm.h
+++ b/include/dis-asm.h
@@ -172,6 +172,9 @@ typedef struct disassemble_info {
alignment. */
unsigned int skip_zeroes_at_end;
+ /* Whether the disassembler always needs the relocations. */
+ bfd_boolean disassembler_needs_relocs;
+
/* Results from instruction decoders. Not all decoders yet support
this information. This info is set each time an instruction is
decoded, and is only valid for the last such instruction.
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 9083afa..fe28508 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,9 @@
+2006-01-17 Andreas Schwab <schwab@suse.de>
+
+ PR binutils/1486
+ * disassemble.c (disassemble_init_for_target): Set
+ disassembler_needs_relocs for bfd_arch_arm.
+
2006-01-16 Paul Brook <paul@codesourcery.com>
* m68k-opc.c (m68k_opcodes): Fix opcodes for ColdFire f?abss,
diff --git a/opcodes/disassemble.c b/opcodes/disassemble.c
index db5b90b..5cef902 100644
--- a/opcodes/disassemble.c
+++ b/opcodes/disassemble.c
@@ -442,6 +442,7 @@ disassemble_init_for_target (struct disassemble_info * info)
#ifdef ARCH_arm
case bfd_arch_arm:
info->symbol_is_valid = arm_symbol_is_valid;
+ info->disassembler_needs_relocs = TRUE;
break;
#endif
#ifdef ARCH_ia64