mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 11:00:01 +08:00
* elf.c (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New
functions. * bfd-in2.h (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New declarations.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
1999-11-29 Jim Blandy <jimb@cygnus.com>
|
||||||
|
|
||||||
|
* elf.c (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New
|
||||||
|
functions.
|
||||||
|
* bfd-in2.h (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New
|
||||||
|
declarations.
|
||||||
|
|
||||||
1999-11-27 Michael Meissner <meissner@cygnus.com>
|
1999-11-27 Michael Meissner <meissner@cygnus.com>
|
||||||
|
|
||||||
* reloc.c (BFD_RELOC_ALPHA_USER_LITERAL): New relocation for
|
* reloc.c (BFD_RELOC_ALPHA_USER_LITERAL): New relocation for
|
||||||
|
@ -3091,6 +3091,22 @@ bfd_set_format PARAMS ((bfd *abfd, bfd_format format));
|
|||||||
CONST char *
|
CONST char *
|
||||||
bfd_format_string PARAMS ((bfd_format format));
|
bfd_format_string PARAMS ((bfd_format format));
|
||||||
|
|
||||||
|
|
||||||
|
/* Return an upper bound on the number of bytes required to store a
|
||||||
|
copy of ABFD's program header table entries. Return -1 if an error
|
||||||
|
occurs; bfd_get_error will return an appropriate code. */
|
||||||
|
extern long bfd_get_elf_phdr_upper_bound PARAMS ((bfd *abfd));
|
||||||
|
|
||||||
|
/* Copy ABFD's program header table entries to *PHDRS. The entries
|
||||||
|
will be stored as an array of Elf_Internal_Phdr structures, as
|
||||||
|
defined in include/elf/internal.h. To find out how large the
|
||||||
|
buffer needs to be, call bfd_get_elf_phdr_upper_bound.
|
||||||
|
|
||||||
|
Return the number of program header table entries read, or -1 if an
|
||||||
|
error occurs; bfd_get_error will return an appropriate code. */
|
||||||
|
extern int bfd_get_elf_phdrs PARAMS ((bfd *abfd, void *phdrs));
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
48
bfd/elf.c
48
bfd/elf.c
@ -5359,3 +5359,51 @@ _bfd_elfcore_section_from_phdr (abfd, phdr, sec_num)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Providing external access to the ELF program header table. */
|
||||||
|
|
||||||
|
/* Return an upper bound on the number of bytes required to store a
|
||||||
|
copy of ABFD's program header table entries. Return -1 if an error
|
||||||
|
occurs; bfd_get_error will return an appropriate code. */
|
||||||
|
long
|
||||||
|
bfd_get_elf_phdr_upper_bound (abfd)
|
||||||
|
bfd *abfd;
|
||||||
|
{
|
||||||
|
if (abfd->xvec->flavour != bfd_target_elf_flavour)
|
||||||
|
{
|
||||||
|
bfd_set_error (bfd_error_wrong_format);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (elf_elfheader (abfd)->e_phnum
|
||||||
|
* sizeof (Elf_Internal_Phdr));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Copy ABFD's program header table entries to *PHDRS. The entries
|
||||||
|
will be stored as an array of Elf_Internal_Phdr structures, as
|
||||||
|
defined in include/elf/internal.h. To find out how large the
|
||||||
|
buffer needs to be, call bfd_get_elf_phdr_upper_bound.
|
||||||
|
|
||||||
|
Return the number of program header table entries read, or -1 if an
|
||||||
|
error occurs; bfd_get_error will return an appropriate code. */
|
||||||
|
int
|
||||||
|
bfd_get_elf_phdrs (abfd, phdrs)
|
||||||
|
bfd *abfd;
|
||||||
|
void *phdrs;
|
||||||
|
{
|
||||||
|
int num_phdrs;
|
||||||
|
|
||||||
|
if (abfd->xvec->flavour != bfd_target_elf_flavour)
|
||||||
|
{
|
||||||
|
bfd_set_error (bfd_error_wrong_format);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
num_phdrs = elf_elfheader (abfd)->e_phnum;
|
||||||
|
memcpy (phdrs, elf_tdata (abfd)->phdr,
|
||||||
|
num_phdrs * sizeof (Elf_Internal_Phdr));
|
||||||
|
|
||||||
|
return num_phdrs;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user