corename = elf_tdata (core_bfd)->core->program;
if (corename != NULL)
{
- const char* execname = strrchr (exec_bfd->filename, '/');
+ const char* execname = strrchr (bfd_get_filename (exec_bfd), '/');
- execname = execname ? execname + 1 : exec_bfd->filename;
+ execname = execname ? execname + 1 : bfd_get_filename (exec_bfd);
if (strcmp (execname, corename) != 0)
return FALSE;
that allow standard bfd access to the general registers (.reg) and the
floating point registers (.reg2). */
-const bfd_target *
+bfd_cleanup
elf_core_file_p (bfd *abfd)
{
Elf_External_Ehdr x_ehdr; /* Elf file header, external form. */
/* Save the entry point from the ELF header. */
abfd->start_address = i_ehdrp->e_entry;
- return abfd->xvec;
+ return _bfd_no_cleanup;
-wrong:
+ wrong:
bfd_set_error (bfd_error_wrong_format);
-fail:
+ fail:
return NULL;
}
Elf_Internal_Ehdr i_ehdr; /* Elf file header, internal form. */
Elf_Internal_Phdr *i_phdr;
unsigned int i;
+ size_t amt;
/* Seek to the position of the segment at OFFSET. */
if (bfd_seek (abfd, offset, SEEK_SET) != 0)
goto fail;
/* Read in program headers. */
- i_phdr = (Elf_Internal_Phdr *) bfd_alloc2 (abfd, i_ehdr.e_phnum,
- sizeof (*i_phdr));
+ if (_bfd_mul_overflow (i_ehdr.e_phnum, sizeof (*i_phdr), &amt))
+ {
+ bfd_set_error (bfd_error_file_too_big);
+ goto fail;
+ }
+ i_phdr = (Elf_Internal_Phdr *) bfd_alloc (abfd, amt);
if (i_phdr == NULL)
goto fail;
build-id was found. */
goto fail;
-wrong:
+ wrong:
bfd_set_error (bfd_error_wrong_format);
-fail:
+ fail:
return FALSE;
}