aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-06-09 14:51:41 +0000
committerJakub Jelinek <jakub@redhat.com>2005-06-09 14:51:41 +0000
commitf9ecb0a4402c67583df83bebec0c6ae3191e1e88 (patch)
tree06a7d4f582381c7a62609487639e60e8d7cda213
parent3b137b9a0883b4de28eeba1fa318bb1d4e49edc9 (diff)
downloadfsf-binutils-gdb-f9ecb0a4402c67583df83bebec0c6ae3191e1e88.zip
fsf-binutils-gdb-f9ecb0a4402c67583df83bebec0c6ae3191e1e88.tar.gz
fsf-binutils-gdb-f9ecb0a4402c67583df83bebec0c6ae3191e1e88.tar.bz2
* objdump.c (disassemble_bytes): Don't crash if q->howto == NULL.
If q->howto->name == NULL, print q->howto->type as number instead. (dump_reloc_set): Likewise.
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/objdump.c28
2 files changed, 21 insertions, 13 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 23ab45b..3117f14 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2005-06-09 Jakub Jelinek <jakub@redhat.com>
+
+ * objdump.c (disassemble_bytes): Don't crash if q->howto == NULL.
+ If q->howto->name == NULL, print q->howto->type as number instead.
+ (dump_reloc_set): Likewise.
+
2005-06-07 Eric Christopher <echristo@redhat.com>
* readelf.c (guess_is_rela): Support ms1.
diff --git a/binutils/objdump.c b/binutils/objdump.c
index cec11de..e598a23 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -1570,7 +1570,12 @@ disassemble_bytes (struct disassemble_info * info,
objdump_print_value (section->vma - rel_offset + q->address,
info, TRUE);
- printf (": %s\t", q->howto->name);
+ if (q->howto == NULL)
+ printf (": *unknown*\t");
+ else if (q->howto->name)
+ printf (": %s\t", q->howto->name);
+ else
+ printf (": %d\t", q->howto->type);
if (q->sym_ptr_ptr == NULL || *q->sym_ptr_ptr == NULL)
printf ("*unknown*");
@@ -2465,23 +2470,20 @@ dump_reloc_set (bfd *abfd, asection *sec, arelent **relpp, long relcount)
section_name = NULL;
}
+ bfd_printf_vma (abfd, q->address);
+ if (q->howto == NULL)
+ printf (" *unknown* ");
+ else if (q->howto->name)
+ printf (" %-16s ", q->howto->name);
+ else
+ printf (" %-16d ", q->howto->type);
if (sym_name)
- {
- bfd_printf_vma (abfd, q->address);
- if (q->howto->name)
- printf (" %-16s ", q->howto->name);
- else
- printf (" %-16d ", q->howto->type);
- objdump_print_symname (abfd, NULL, *q->sym_ptr_ptr);
- }
+ objdump_print_symname (abfd, NULL, *q->sym_ptr_ptr);
else
{
if (section_name == NULL)
section_name = "*unknown*";
- bfd_printf_vma (abfd, q->address);
- printf (" %-16s [%s]",
- q->howto->name,
- section_name);
+ printf ("[%s]", section_name);
}
if (q->addend)