diff options
author | Alan Modra <amodra@gmail.com> | 2002-05-10 07:34:52 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2002-05-10 07:34:52 +0000 |
commit | 16a1038833ea864c753c819285eb0ddfcfc77295 (patch) | |
tree | a80069ad028a912aaf1d752b071129be6fc6d5e7 | |
parent | 1f077a3e7c3992ced4c5e02908857ca985607ca1 (diff) | |
download | gdb-16a1038833ea864c753c819285eb0ddfcfc77295.zip gdb-16a1038833ea864c753c819285eb0ddfcfc77295.tar.gz gdb-16a1038833ea864c753c819285eb0ddfcfc77295.tar.bz2 |
* elf32-i386.c (elf_i386_relocate_section): Remove overflow checks
addend in 2002-05-09 commit.
-rw-r--r-- | bfd/ChangeLog | 3 | ||||
-rw-r--r-- | bfd/elf32-i386.c | 42 |
2 files changed, 7 insertions, 38 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 20f8a23..ed28147 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,8 @@ 2002-05-10 Alan Modra <amodra@bigpond.net.au> + * elf32-i386.c (elf_i386_relocate_section): Remove overflow checks + addend in 2002-05-09 commit. + * elf32-hppa.c (elf32_hppa_size_stubs): Revert part of 2002-05-04, don't look for stubs on all undefined syms. diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 8560cd3..760762d 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -1724,7 +1724,6 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, bfd_vma off; bfd_vma relocation; boolean unresolved_reloc; - boolean overflow; bfd_reloc_status_type r; unsigned int indx; @@ -1747,7 +1746,6 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, if (info->relocateable) { bfd_vma val; - bfd_vma addend; bfd_byte *where; /* This is a relocatable link. We don't have to change @@ -1769,36 +1767,14 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, where = contents + rel->r_offset; switch (howto->size) { + /* FIXME: overflow checks. */ case 0: - addend = bfd_get_8 (input_bfd, where); - if (howto->pc_relative) - addend = (addend ^ 0x80) - 0x80; - val += addend; + val += bfd_get_8 (input_bfd, where); bfd_put_8 (input_bfd, val, where); - if (howto->pc_relative) - val += 0x80; - if (val > 0xff) - { - h = NULL; - r = bfd_reloc_overflow; - goto overflow_error; - } break; case 1: - addend = bfd_get_16 (input_bfd, where); - if (howto->pc_relative) - addend = (addend ^ 0x8000) - 0x8000; - val += addend; + val += bfd_get_16 (input_bfd, where); bfd_put_16 (input_bfd, val, where); - if (howto->pc_relative) - val += 0x8000; - if (output_bfd->arch_info->mach != bfd_mach_i386_i8086 - && val > 0xffff) - { - h = NULL; - r = bfd_reloc_overflow; - goto overflow_error; - } break; case 2: val += bfd_get_32 (input_bfd, where); @@ -1815,7 +1791,6 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, sym = NULL; sec = NULL; unresolved_reloc = false; - overflow = false; if (r_symndx < symtab_hdr->sh_info) { sym = local_syms + r_symndx; @@ -1868,21 +1843,15 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, switch (howto->size) { case 0: + /* FIXME: overflow checks. */ if (howto->pc_relative) addend -= 1; bfd_put_8 (input_bfd, addend, where); - if (howto->pc_relative) - addend += 0x80; - overflow = addend > 0xff; break; case 1: if (howto->pc_relative) addend -= 2; bfd_put_16 (input_bfd, addend, where); - if (howto->pc_relative) - addend += 0x8000; - if (output_bfd->arch_info->mach != bfd_mach_i386_i8086) - overflow = addend > 0xffff; break; case 2: if (howto->pc_relative) @@ -2172,10 +2141,7 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section, r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents, rel->r_offset, relocation, (bfd_vma) 0); - if (overflow && r == bfd_reloc_ok) - r = bfd_reloc_overflow; - overflow_error: if (r != bfd_reloc_ok) { const char *name; |