forked from Imagelibrary/binutils-gdb
PR 1004
bfd/ * elf-bfd.h (struct elf_backend_data): Add get_sec_type_attr. Delete special_sections. (_bfd_elf_get_special_section): Declare. (bfd_elf_special_section): Update prototype. * elf.c (special_sections): Remove unused outer entries. (get_special_section): Delete. (_bfd_elf_get_special_section): New function. (_bfd_elf_get_sec_type_attr): Replace "name" arg with "sec". Update special_sections indexing. (_bfd_elf_new_section_hook): Call backend get_sec_type_attr. * elf32-arm.c (symbian_special_sections_d): Delete. (symbian_special_sections_g, symbian_special_sections_h): Delete. (symbian_special_sections_i, symbian_special_sections_f): Delete. (symbian_special_sections_p): Delete. (elf32_arm_symbian_special_sections): Merge above to here. (elf32_arm_symbian_get_sec_type_attr): New function. (elf_backend_special_sections): Don't define. (elf_backend_get_sec_type_attr): Define. * elf32-m32r.c: Similarly to elf32-arm.c. * elf32-m68hc11.c: Likewise. * elf32-m68hc12.c: Likewise. * elf32-mcore.c: Likewise. * elf32-sh64.c: Likewise. * elf32-v850.c: Likewise. * elf32-xtensa.c: Likewise. * elf64-alpha.c: Likewise. * elf64-hppa.c: Likewise. * elf64-ppc.c: Likewise. * elf64-sh64.c: Likewise. * elfxx-ia64.c: Likewise. * elfxx-mips.c: Likewise. * elf32-ppc.c: Likewise. (bfd_elf_special_section ppc_alt_plt): New. Use it if .plt loadable. * elfxx-mips.h (_bfd_mips_elf_get_sec_type_attr): Declare. (_bfd_mips_elf_special_sections, elf_backend_special_sections): Delete. (elf_backend_get_sec_type_attr): Define. * elfxx-target.h (elf_backend_get_sec_type_attr): Define. (elf_backend_special_sections): Don't define. (elfNN_bed): Update. binutils/ * objcopy.c (copy_object): Use bfd_make_section_with_flags. (write_debugging_info): Likewise. (setup_section): Use bfd_make_section_anyway_with_flags. gas/ * config/obj-elf.c (obj_elf_change_section): Use backend get_sec_type_attr.
This commit is contained in:
@@ -635,51 +635,30 @@ mcore_elf_check_relocs (bfd * abfd,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static struct bfd_elf_special_section const
|
||||
mcore_special_sections_c [] =
|
||||
static struct bfd_elf_special_section const mcore_elf_special_sections[]=
|
||||
{
|
||||
{ ".ctors", 6, -2, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE },
|
||||
{ NULL, 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
static struct bfd_elf_special_section const
|
||||
mcore_special_sections_d[]=
|
||||
{
|
||||
{ ".dtors", 6, -2, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE },
|
||||
{ NULL, 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
static struct bfd_elf_special_section const *
|
||||
mcore_elf_special_sections[27]=
|
||||
static const struct bfd_elf_special_section *
|
||||
mcore_elf_get_sec_type_attr (bfd *abfd, asection *sec)
|
||||
{
|
||||
NULL, /* 'a' */
|
||||
NULL, /* 'b' */
|
||||
mcore_special_sections_c, /* 'c' */
|
||||
mcore_special_sections_d, /* 'd' */
|
||||
NULL, /* 'e' */
|
||||
NULL, /* 'f' */
|
||||
NULL, /* 'g' */
|
||||
NULL, /* 'h' */
|
||||
NULL, /* 'i' */
|
||||
NULL, /* 'j' */
|
||||
NULL, /* 'k' */
|
||||
NULL, /* 'l' */
|
||||
NULL, /* 'm' */
|
||||
NULL, /* 'n' */
|
||||
NULL, /* 'o' */
|
||||
NULL, /* 'p' */
|
||||
NULL, /* 'q' */
|
||||
NULL, /* 'r' */
|
||||
NULL, /* 's' */
|
||||
NULL, /* 't' */
|
||||
NULL, /* 'u' */
|
||||
NULL, /* 'v' */
|
||||
NULL, /* 'w' */
|
||||
NULL, /* 'x' */
|
||||
NULL, /* 'y' */
|
||||
NULL, /* 'z' */
|
||||
NULL /* other */
|
||||
};
|
||||
const struct bfd_elf_special_section const *ssect;
|
||||
|
||||
/* See if this is one of the special sections. */
|
||||
if (sec->name == NULL)
|
||||
return NULL;
|
||||
|
||||
ssect = _bfd_elf_get_special_section (sec->name,
|
||||
mcore_elf_special_sections,
|
||||
sec->use_rela_p);
|
||||
if (ssect != NULL)
|
||||
return ssect;
|
||||
|
||||
return _bfd_elf_get_sec_type_attr (abfd, sec);
|
||||
}
|
||||
|
||||
#define TARGET_BIG_SYM bfd_elf32_mcore_big_vec
|
||||
#define TARGET_BIG_NAME "elf32-mcore-big"
|
||||
@@ -699,7 +678,7 @@ static struct bfd_elf_special_section const *
|
||||
#define elf_backend_gc_mark_hook mcore_elf_gc_mark_hook
|
||||
#define elf_backend_gc_sweep_hook mcore_elf_gc_sweep_hook
|
||||
#define elf_backend_check_relocs mcore_elf_check_relocs
|
||||
#define elf_backend_special_sections mcore_elf_special_sections
|
||||
#define elf_backend_get_sec_type_attr mcore_elf_get_sec_type_attr
|
||||
|
||||
#define elf_backend_can_gc_sections 1
|
||||
#define elf_backend_rela_normal 1
|
||||
|
||||
Reference in New Issue
Block a user