aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-avr.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2009-02-18 15:28:56 +0000
committerNick Clifton <nickc@redhat.com>2009-02-18 15:28:56 +0000
commit121230679fd8a176e4d08340bf4ce9027426da81 (patch)
treeca961bbf1c4a575da180d7aa949d9edec250854c /bfd/elf32-avr.c
parentc087fcd326dc166f4a7aebd8485713440133f0ff (diff)
downloadgdb-121230679fd8a176e4d08340bf4ce9027426da81.zip
gdb-121230679fd8a176e4d08340bf4ce9027426da81.tar.gz
gdb-121230679fd8a176e4d08340bf4ce9027426da81.tar.bz2
PR 9841
* elf32-avr.c: Handle case where no local symbos exist correctly.
Diffstat (limited to 'bfd/elf32-avr.c')
-rw-r--r--bfd/elf32-avr.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c
index afcef18..9190db3 100644
--- a/bfd/elf32-avr.c
+++ b/bfd/elf32-avr.c
@@ -1415,7 +1415,6 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
Elf_Internal_Rela *irelalign;
Elf_Internal_Sym *isym;
Elf_Internal_Sym *isymbuf = NULL;
- Elf_Internal_Sym *isymend;
bfd_vma toaddr;
struct elf_link_hash_entry **sym_hashes;
struct elf_link_hash_entry **end_hashes;
@@ -1553,13 +1552,19 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
/* Adjust the local symbols defined in this section. */
isym = (Elf_Internal_Sym *) symtab_hdr->contents;
- isymend = isym + symtab_hdr->sh_info;
- for (; isym < isymend; isym++)
+ /* Fix PR 9841, there may be no local symbols. */
+ if (isym != NULL)
{
- if (isym->st_shndx == sec_shndx
- && isym->st_value > addr
- && isym->st_value < toaddr)
- isym->st_value -= count;
+ Elf_Internal_Sym *isymend;
+
+ isymend = isym + symtab_hdr->sh_info;
+ for (; isym < isymend; isym++)
+ {
+ if (isym->st_shndx == sec_shndx
+ && isym->st_value > addr
+ && isym->st_value < toaddr)
+ isym->st_value -= count;
+ }
}
/* Now adjust the global symbols defined in this section. */