From 66e17d7f5306149e4ac421015d305d00eb1a2f0f Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 29 Jun 2012 07:37:50 +0000 Subject: [PATCH] * elf32-sh.c (sh_elf_create_dynamic_sections): Don't create .rela section for bss type sections, except for .rela.bss. * elf-m10300.c (_bfd_mn10300_elf_create_dynamic_sections): Likewise. * elf32-cr16.c (_bfd_cr16_elf_create_dynamic_sections): Likewise. * elf32-lm32.c (lm32_elf_create_dynamic_sections): Likewise. * elf32-m32r.c (m32r_elf_create_dynamic_sections): Likewise. * elf64-sh64.c (sh64_elf64_create_dynamic_sections): Likewise. --- bfd/ChangeLog | 10 ++++++++++ bfd/elf-m10300.c | 26 -------------------------- bfd/elf32-cr16.c | 26 -------------------------- bfd/elf32-lm32.c | 26 -------------------------- bfd/elf32-m32r.c | 26 -------------------------- bfd/elf32-sh.c | 26 -------------------------- bfd/elf64-sh64.c | 24 ------------------------ 7 files changed, 10 insertions(+), 154 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 26bcbd53c0..9ace5e60c4 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,13 @@ +2012-06-29 Alan Modra + + * elf32-sh.c (sh_elf_create_dynamic_sections): Don't create .rela + section for bss type sections, except for .rela.bss. + * elf-m10300.c (_bfd_mn10300_elf_create_dynamic_sections): Likewise. + * elf32-cr16.c (_bfd_cr16_elf_create_dynamic_sections): Likewise. + * elf32-lm32.c (lm32_elf_create_dynamic_sections): Likewise. + * elf32-m32r.c (m32r_elf_create_dynamic_sections): Likewise. + * elf64-sh64.c (sh64_elf64_create_dynamic_sections): Likewise. + 2012-06-28 Roland McGrath * elf32-arm.c (elf32_arm_populate_plt_entry): Use int32_t for diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c index 8b5afa56d7..ef3233ac93 100644 --- a/bfd/elf-m10300.c +++ b/bfd/elf-m10300.c @@ -4843,32 +4843,6 @@ _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) if (! _bfd_mn10300_elf_create_got_section (abfd, info)) return FALSE; - { - const char * secname; - char * relname; - flagword secflags; - asection * sec; - - for (sec = abfd->sections; sec; sec = sec->next) - { - secflags = bfd_get_section_flags (abfd, sec); - if ((secflags & (SEC_DATA | SEC_LINKER_CREATED)) - || ((secflags & SEC_HAS_CONTENTS) != SEC_HAS_CONTENTS)) - continue; - - secname = bfd_get_section_name (abfd, sec); - relname = bfd_malloc (strlen (secname) + 6); - strcpy (relname, ".rela"); - strcat (relname, secname); - - s = bfd_make_section_with_flags (abfd, relname, - flags | SEC_READONLY); - if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) - return FALSE; - } - } - if (bed->want_dynbss) { /* The .dynbss section is a place to put symbols which are defined diff --git a/bfd/elf32-cr16.c b/bfd/elf32-cr16.c index 56d1c54278..9d1106e2cc 100644 --- a/bfd/elf32-cr16.c +++ b/bfd/elf32-cr16.c @@ -2289,32 +2289,6 @@ _bfd_cr16_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) if (! _bfd_cr16_elf_create_got_section (abfd, info)) return FALSE; - { - const char * secname; - char * relname; - flagword secflags; - asection * sec; - - for (sec = abfd->sections; sec; sec = sec->next) - { - secflags = bfd_get_section_flags (abfd, sec); - if ((secflags & (SEC_DATA | SEC_LINKER_CREATED)) - || ((secflags & SEC_HAS_CONTENTS) != SEC_HAS_CONTENTS)) - continue; - - secname = bfd_get_section_name (abfd, sec); - relname = (char *) bfd_malloc (strlen (secname) + 6); - strcpy (relname, ".rela"); - strcat (relname, secname); - - s = bfd_make_section_with_flags (abfd, relname, - flags | SEC_READONLY); - if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) - return FALSE; - } - } - if (bed->want_dynbss) { /* The .dynbss section is a place to put symbols which are defined diff --git a/bfd/elf32-lm32.c b/bfd/elf32-lm32.c index b2211a302e..461dbb83e7 100644 --- a/bfd/elf32-lm32.c +++ b/bfd/elf32-lm32.c @@ -2523,32 +2523,6 @@ lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) && ! create_got_section (abfd, info)) return FALSE; - { - const char *secname; - char *relname; - flagword secflags; - asection *sec; - - for (sec = abfd->sections; sec; sec = sec->next) - { - secflags = bfd_get_section_flags (abfd, sec); - if ((secflags & (SEC_DATA | SEC_LINKER_CREATED)) - || ((secflags & SEC_HAS_CONTENTS) != SEC_HAS_CONTENTS)) - continue; - secname = bfd_get_section_name (abfd, sec); - relname = bfd_malloc ((bfd_size_type) strlen (secname) + 6); - strcpy (relname, ".rela"); - strcat (relname, secname); - if (bfd_get_section_by_name (abfd, secname)) - continue; - s = bfd_make_section_with_flags (abfd, relname, - flags | SEC_READONLY); - if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) - return FALSE; - } - } - if (bed->want_dynbss) { /* The .dynbss section is a place to put symbols which are defined diff --git a/bfd/elf32-m32r.c b/bfd/elf32-m32r.c index 730b3f56bf..275daebc74 100644 --- a/bfd/elf32-m32r.c +++ b/bfd/elf32-m32r.c @@ -1701,32 +1701,6 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) && ! create_got_section (abfd, info)) return FALSE; - { - const char *secname; - char *relname; - flagword secflags; - asection *sec; - - for (sec = abfd->sections; sec; sec = sec->next) - { - secflags = bfd_get_section_flags (abfd, sec); - if ((secflags & (SEC_DATA | SEC_LINKER_CREATED)) - || ((secflags & SEC_HAS_CONTENTS) != SEC_HAS_CONTENTS)) - continue; - secname = bfd_get_section_name (abfd, sec); - relname = bfd_malloc ((bfd_size_type) strlen (secname) + 6); - strcpy (relname, ".rela"); - strcat (relname, secname); - if (bfd_get_section_by_name (abfd, secname)) - continue; - s = bfd_make_section_with_flags (abfd, relname, - flags | SEC_READONLY); - if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) - return FALSE; - } - } - if (bed->want_dynbss) { /* The .dynbss section is a place to put symbols which are defined diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c index c7a8b2b698..c33995a818 100644 --- a/bfd/elf32-sh.c +++ b/bfd/elf32-sh.c @@ -2749,32 +2749,6 @@ sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) && !create_got_section (abfd, info)) return FALSE; - { - const char *secname; - char *relname; - flagword secflags; - asection *sec; - - for (sec = abfd->sections; sec; sec = sec->next) - { - secflags = bfd_get_section_flags (abfd, sec); - if ((secflags & (SEC_DATA | SEC_LINKER_CREATED)) - || ((secflags & SEC_HAS_CONTENTS) != SEC_HAS_CONTENTS)) - continue; - secname = bfd_get_section_name (abfd, sec); - relname = (char *) bfd_malloc ((bfd_size_type) strlen (secname) + 6); - strcpy (relname, ".rela"); - strcat (relname, secname); - if (bfd_get_section_by_name (abfd, secname)) - continue; - s = bfd_make_section_with_flags (abfd, relname, - flags | SEC_READONLY); - if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) - return FALSE; - } - } - if (bed->want_dynbss) { /* The .dynbss section is a place to put symbols which are defined diff --git a/bfd/elf64-sh64.c b/bfd/elf64-sh64.c index e041bdae41..c314efd3ce 100644 --- a/bfd/elf64-sh64.c +++ b/bfd/elf64-sh64.c @@ -3196,30 +3196,6 @@ sh64_elf64_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) if (! _bfd_elf_create_got_section (abfd, info)) return FALSE; - { - const char *secname; - char *relname; - flagword secflags; - asection *sec; - - for (sec = abfd->sections; sec; sec = sec->next) - { - secflags = bfd_get_section_flags (abfd, sec); - if ((secflags & (SEC_DATA | SEC_LINKER_CREATED)) - || ((secflags & SEC_HAS_CONTENTS) != SEC_HAS_CONTENTS)) - continue; - secname = bfd_get_section_name (abfd, sec); - relname = (char *) bfd_malloc (strlen (secname) + 6); - strcpy (relname, ".rela"); - strcat (relname, secname); - s = bfd_make_section_with_flags (abfd, relname, - flags | SEC_READONLY); - if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) - return FALSE; - } - } - if (bed->want_dynbss) { /* The .dynbss section is a place to put symbols which are defined