mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-25 04:49:54 +08:00
* elf32-frv.c (elf32_frvfdpic_modify_segment_map): Return
immediately if there's no link info. (elf32_frvfdpic_copy_private_bfd_data): New. (bfd_elf32_bfd_copy_private_bfd_data): Use it for frvfdpic.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2004-05-07 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
|
* elf32-frv.c (elf32_frvfdpic_modify_segment_map): Return
|
||||||
|
immediately if there's no link info.
|
||||||
|
(elf32_frvfdpic_copy_private_bfd_data): New.
|
||||||
|
(bfd_elf32_bfd_copy_private_bfd_data): Use it for frvfdpic.
|
||||||
|
|
||||||
2004-05-06 Zack Weinberg <zack@codesourcery.com>
|
2004-05-06 Zack Weinberg <zack@codesourcery.com>
|
||||||
|
|
||||||
* dwarf2.c (add_line_info): Also set info->filename to NULL if
|
* dwarf2.c (add_line_info): Also set info->filename to NULL if
|
||||||
|
@ -3686,6 +3686,11 @@ elf32_frvfdpic_modify_segment_map (bfd *output_bfd,
|
|||||||
{
|
{
|
||||||
struct elf_segment_map *m;
|
struct elf_segment_map *m;
|
||||||
|
|
||||||
|
/* objcopy and strip preserve what's already there using
|
||||||
|
elf32_frvfdpic_copy_private_bfd_data (). */
|
||||||
|
if (! info)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
for (m = elf_tdata (output_bfd)->segment_map; m != NULL; m = m->next)
|
for (m = elf_tdata (output_bfd)->segment_map; m != NULL; m = m->next)
|
||||||
if (m->p_type == PT_GNU_STACK)
|
if (m->p_type == PT_GNU_STACK)
|
||||||
break;
|
break;
|
||||||
@ -4311,6 +4316,50 @@ frv_elf_arch_extension_p (flagword base, flagword extension)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bfd_boolean
|
||||||
|
elf32_frvfdpic_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|
||||||
|
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (! frv_elf_copy_private_bfd_data (ibfd, obfd))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (! elf_tdata (ibfd) || ! elf_tdata (ibfd)->phdr
|
||||||
|
|| ! elf_tdata (obfd) || ! elf_tdata (obfd)->phdr)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
/* Copy the stack size. */
|
||||||
|
for (i = 0; i < elf_elfheader (ibfd)->e_phnum; i++)
|
||||||
|
if (elf_tdata (ibfd)->phdr[i].p_type == PT_GNU_STACK)
|
||||||
|
{
|
||||||
|
Elf_Internal_Phdr *iphdr = &elf_tdata (ibfd)->phdr[i];
|
||||||
|
|
||||||
|
for (i = 0; i < elf_elfheader (obfd)->e_phnum; i++)
|
||||||
|
if (elf_tdata (obfd)->phdr[i].p_type == PT_GNU_STACK)
|
||||||
|
{
|
||||||
|
memcpy (&elf_tdata (obfd)->phdr[i], iphdr, sizeof (*iphdr));
|
||||||
|
|
||||||
|
/* Rewrite the phdrs, since we're only called after they
|
||||||
|
were first written. */
|
||||||
|
if (bfd_seek (obfd, (bfd_signed_vma) get_elf_backend_data (obfd)
|
||||||
|
->s->sizeof_ehdr, SEEK_SET) != 0
|
||||||
|
|| get_elf_backend_data (obfd)->s
|
||||||
|
->write_out_phdrs (obfd, elf_tdata (obfd)->phdr,
|
||||||
|
elf_elfheader (obfd)->e_phnum) != 0)
|
||||||
|
return FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Merge backend specific data from an object file to the output
|
/* Merge backend specific data from an object file to the output
|
||||||
object file when linking. */
|
object file when linking. */
|
||||||
|
|
||||||
@ -4726,6 +4775,9 @@ frv_elf_print_private_bfd_data (abfd, ptr)
|
|||||||
#undef elf_backend_modify_segment_map
|
#undef elf_backend_modify_segment_map
|
||||||
#define elf_backend_modify_segment_map \
|
#define elf_backend_modify_segment_map \
|
||||||
elf32_frvfdpic_modify_segment_map
|
elf32_frvfdpic_modify_segment_map
|
||||||
|
#undef bfd_elf32_bfd_copy_private_bfd_data
|
||||||
|
#define bfd_elf32_bfd_copy_private_bfd_data \
|
||||||
|
elf32_frvfdpic_copy_private_bfd_data
|
||||||
|
|
||||||
#undef elf_backend_create_dynamic_sections
|
#undef elf_backend_create_dynamic_sections
|
||||||
#define elf_backend_create_dynamic_sections \
|
#define elf_backend_create_dynamic_sections \
|
||||||
|
Reference in New Issue
Block a user