--- bfd/elf32-avr.c 2011-06-02 19:13:14.000000000 +0530 +++ bfd/elf32-avr.c 2012-02-01 19:09:51.000000000 +0530 @@ -1506,8 +1506,12 @@ shrinked_insn_address = (sec->output_section->vma + sec->output_offset + addr - count); - irelend = elf_section_data (isec)->relocs + isec->reloc_count; - for (irel = elf_section_data (isec)->relocs; + irel = elf_section_data (isec)->relocs; + + if (NULL == irel) + irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, FALSE); + + for (irelend = irel + isec->reloc_count; irel < irelend; irel++) { @@ -1564,6 +1568,8 @@ /* else...Reference symbol is extern. No need for adjusting the addend. */ } + if (NULL == elf_section_data (isec)->relocs) + free (irelend - isec->reloc_count); } }