aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elfcode.h13
-rw-r--r--bfd/elfcore.h15
3 files changed, 16 insertions, 19 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 5bd8d55..88b7b86 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2015-10-15 Riku Voipio <riku.voipio@iki.fi>
+
+ PR ld/19123
+ * elfcore.h (elf_core_file_p): Use the file_ptr type to hold the
+ offset for bfd_seek.
+ * elfcode.h (elf_object_p): Likewise.
+
2015-10-14 Rich Felker <dalias@libc.org>
PR ld/19091
diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index 7e309cf..26af1d1 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -605,13 +605,10 @@ elf_object_p (bfd *abfd)
if (i_ehdrp->e_shoff != 0)
{
- bfd_signed_vma where = i_ehdrp->e_shoff;
-
- if (where != (file_ptr) where)
- goto got_wrong_format_error;
+ file_ptr where = (file_ptr) i_ehdrp->e_shoff;
/* Seek to the section header table in the file. */
- if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0)
+ if (bfd_seek (abfd, where, SEEK_SET) != 0)
goto got_no_match;
/* Read the first section header at index 0, and convert to internal
@@ -657,19 +654,17 @@ elf_object_p (bfd *abfd)
goto got_wrong_format_error;
where += (i_ehdrp->e_shnum - 1) * sizeof (x_shdr);
- if (where != (file_ptr) where)
- goto got_wrong_format_error;
if ((bfd_size_type) where <= i_ehdrp->e_shoff)
goto got_wrong_format_error;
- if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0)
+ if (bfd_seek (abfd, where, SEEK_SET) != 0)
goto got_no_match;
if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
goto got_no_match;
/* Back to where we were. */
where = i_ehdrp->e_shoff + sizeof (x_shdr);
- if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0)
+ if (bfd_seek (abfd, where, SEEK_SET) != 0)
goto got_no_match;
}
}
diff --git a/bfd/elfcore.h b/bfd/elfcore.h
index c4e5b43..93b3cc4 100644
--- a/bfd/elfcore.h
+++ b/bfd/elfcore.h
@@ -188,13 +188,10 @@ elf_core_file_p (bfd *abfd)
{
Elf_External_Shdr x_shdr;
Elf_Internal_Shdr i_shdr;
- bfd_signed_vma where = i_ehdrp->e_shoff;
-
- if (where != (file_ptr) where)
- goto wrong;
+ file_ptr where = (file_ptr) i_ehdrp->e_shoff;
/* Seek to the section header table in the file. */
- if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0)
+ if (bfd_seek (abfd, where, SEEK_SET) != 0)
goto fail;
/* Read the first section header at index 0, and convert to internal
@@ -217,7 +214,7 @@ elf_core_file_p (bfd *abfd)
{
Elf_External_Phdr x_phdr;
Elf_Internal_Phdr i_phdr;
- bfd_signed_vma where;
+ file_ptr where;
/* Check that we don't have a totally silly number of
program headers. */
@@ -225,13 +222,11 @@ elf_core_file_p (bfd *abfd)
|| i_ehdrp->e_phnum > (unsigned int) -1 / sizeof (i_phdr))
goto wrong;
- where = i_ehdrp->e_phoff + (i_ehdrp->e_phnum - 1) * sizeof (x_phdr);
- if (where != (file_ptr) where)
- goto wrong;
+ where = (file_ptr)(i_ehdrp->e_phoff + (i_ehdrp->e_phnum - 1) * sizeof (x_phdr));
if ((bfd_size_type) where <= i_ehdrp->e_phoff)
goto wrong;
- if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0)
+ if (bfd_seek (abfd, where, SEEK_SET) != 0)
goto fail;
if (bfd_bread (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr))
goto fail;