X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Felf32-nios2.c;h=d85fc69eb79922a9043a8847c139706de93c4cb6;hb=cac709756b00c57a375f40e032d2eb4f5dbd3804;hp=3f72b11325c4e5e18b99835ca9277b3de97fdc55;hpb=6f2750feaf2827ef8a1a0a5b2f90c1e9a6cabbd1;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c index 3f72b11325..d85fc69eb7 100644 --- a/bfd/elf32-nios2.c +++ b/bfd/elf32-nios2.c @@ -1905,7 +1905,7 @@ nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value) { bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset); - BFD_ASSERT(value <= 0xffff); + BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff); bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6), sec->contents + offset); @@ -4480,16 +4480,16 @@ nios2_elf32_relocate_section (bfd *output_bfd, switch (r) { case bfd_reloc_overflow: - r = info->callbacks->reloc_overflow (info, NULL, name, - howto->name, (bfd_vma) 0, - input_bfd, input_section, - rel->r_offset); + (*info->callbacks->reloc_overflow) (info, NULL, name, + howto->name, (bfd_vma) 0, + input_bfd, input_section, + rel->r_offset); break; case bfd_reloc_undefined: - r = info->callbacks->undefined_symbol (info, name, input_bfd, - input_section, - rel->r_offset, TRUE); + (*info->callbacks->undefined_symbol) (info, name, input_bfd, + input_section, + rel->r_offset, TRUE); break; case bfd_reloc_outofrange: @@ -4515,8 +4515,8 @@ nios2_elf32_relocate_section (bfd *output_bfd, if (msg) { - r = info->callbacks->warning - (info, msg, name, input_bfd, input_section, rel->r_offset); + (*info->callbacks->warning) (info, msg, name, input_bfd, + input_section, rel->r_offset); return FALSE; } } @@ -5344,22 +5344,19 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, break; case DT_PLTGOT: - s = htab->root.sgot; - BFD_ASSERT (s != NULL); - dyn.d_un.d_ptr = s->output_section->vma; + s = htab->root.sgotplt; + dyn.d_un.d_ptr = s->output_section->vma + s->output_offset; bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); break; case DT_JMPREL: s = htab->root.srelplt; - BFD_ASSERT (s != NULL); - dyn.d_un.d_ptr = s->output_section->vma; + dyn.d_un.d_ptr = s->output_section->vma + s->output_offset; bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); break; case DT_PLTRELSZ: s = htab->root.srelplt; - BFD_ASSERT (s != NULL); dyn.d_un.d_val = s->size; bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); break; @@ -5379,9 +5376,9 @@ nios2_elf32_finish_dynamic_sections (bfd *output_bfd, break; case DT_NIOS2_GP: - s = htab->root.sgot; - BFD_ASSERT (s != NULL); - dyn.d_un.d_ptr = s->output_section->vma + 0x7ff0; + s = htab->root.sgotplt; + dyn.d_un.d_ptr + = s->output_section->vma + s->output_offset + 0x7ff0; bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); break; }