This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Useless code in sh_elf_create_dynamic_sections
- From: Alan Modra <amodra at gmail dot com>
- To: binutils at sourceware dot org
- Cc: nickc at redhat dot com, ian at airs dot com, aoliva at redhat dot com
- Date: Thu, 28 Jun 2012 01:16:08 +0930
- Subject: Useless code in sh_elf_create_dynamic_sections
This patch removes a useless block of code that started life in
elf32-sh.c (*) http://sourceware.org/ml/binutils/2000-08/msg00457.html
and was copied blindly to other files. At least I can't see any use
for the code. It looks to be creating relocation sections for bss
style sections, ie. .rela.bss for .bss, .rela.sbss for .sbss if such
exists, etc. However, none of these sections will be used except for
.rela.bss, to hold copy relocs for .dynbss, and we create .rela.bss a
few lines later anyway. (I guess .rela.bss should really be called
.rela.dynbss.) .rela.bss is sized in adjust_dynamic_symbol, allocated
along with other dynamic sections, then filled out in
finish_dynamic_symbol. I'll note that
s = bfd_get_section_by_name (h->root.u.def.section->owner,
".rela.bss");
in finish_dynamic_symbol is just an obscure way of writing
s = bfd_get_section_by_name (dynobj, ".rela.bss");
(h->root.u.def.section becomes .dynbss in _bfd_elf_adjust_dynamic_copy).
cc'ing a few maintainers in case I've missed something, but I'd like
to apply this soon as it's a prerequisite for another cleanup.
*) As far as I could tell. Maybe it was copied from some earlier
file..
* 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.
Index: bfd/elf-m10300.c
===================================================================
RCS file: /cvs/src/src/bfd/elf-m10300.c,v
retrieving revision 1.114
diff -u -p -r1.114 elf-m10300.c
--- bfd/elf-m10300.c 7 May 2012 03:27:48 -0000 1.114
+++ bfd/elf-m10300.c 27 Jun 2012 05:55:09 -0000
@@ -4843,32 +4835,6 @@ _bfd_mn10300_elf_create_dynamic_sections
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
Index: bfd/elf32-cr16.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-cr16.c,v
retrieving revision 1.19
diff -u -p -r1.19 elf32-cr16.c
--- bfd/elf32-cr16.c 7 May 2012 03:27:49 -0000 1.19
+++ bfd/elf32-cr16.c 27 Jun 2012 05:55:14 -0000
@@ -2289,32 +2287,6 @@ _bfd_cr16_elf_create_dynamic_sections (b
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
Index: bfd/elf32-lm32.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-lm32.c,v
retrieving revision 1.13
diff -u -p -r1.13 elf32-lm32.c
--- bfd/elf32-lm32.c 16 May 2012 14:26:46 -0000 1.13
+++ bfd/elf32-lm32.c 27 Jun 2012 05:55:18 -0000
@@ -2523,32 +2528,6 @@ lm32_elf_create_dynamic_sections (bfd *a
&& ! 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
Index: bfd/elf32-m32r.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-m32r.c,v
retrieving revision 1.107
diff -u -p -r1.107 elf32-m32r.c
--- bfd/elf32-m32r.c 16 May 2012 16:38:28 -0000 1.107
+++ bfd/elf32-m32r.c 27 Jun 2012 05:55:19 -0000
@@ -1701,32 +1702,6 @@ m32r_elf_create_dynamic_sections (bfd *a
&& ! 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
Index: bfd/elf32-sh.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-sh.c,v
retrieving revision 1.179
diff -u -p -r1.179 elf32-sh.c
--- bfd/elf32-sh.c 7 May 2012 03:27:50 -0000 1.179
+++ bfd/elf32-sh.c 27 Jun 2012 05:55:26 -0000
@@ -2749,32 +2750,6 @@ sh_elf_create_dynamic_sections (bfd *abf
&& !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
Index: bfd/elf64-sh64.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-sh64.c,v
retrieving revision 1.91
diff -u -p -r1.91 elf64-sh64.c
--- bfd/elf64-sh64.c 7 May 2012 03:27:52 -0000 1.91
+++ bfd/elf64-sh64.c 27 Jun 2012 05:55:36 -0000
@@ -3196,30 +3195,6 @@ sh64_elf64_create_dynamic_sections (bfd
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
--
Alan Modra
Australia Development Lab, IBM