public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH PR other/77609] Let the assembler choose ELF section types for miscellaneous named sections
@ 2016-09-15 23:41 Roland McGrath
  2016-09-22 20:25 ` Roland McGrath
  0 siblings, 1 reply; 16+ messages in thread
From: Roland McGrath @ 2016-09-15 23:41 UTC (permalink / raw)
  To: gcc-patches

This fixes https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77609 (which I've
just filed).

OK for trunk?

I'm not sure if this kind of fix is appropriate for gcc-6-branch or not,
but I'd like to backport it there too if it is acceptable.


Thanks,
Roland


gcc/
2016-09-15  Roland McGrath  <<mcgrathr@google.com>

	PR other/77609
	* varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
	any section for which we don't know a specific type it should have,
	regardless of name.  Previously this was done only for the exact
	names ".init_array", ".fini_array", and ".preinit_array".

diff --git a/gcc/varasm.c b/gcc/varasm.c
index 00a9b30..0d7ea38 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -6210,15 +6210,20 @@ default_section_type_flags (tree decl, const
char *name, int reloc)
       || strncmp (name, ".gnu.linkonce.tb.", 17) == 0)
     flags |= SECTION_TLS | SECTION_BSS;

-  /* These three sections have special ELF types.  They are neither
-     SHT_PROGBITS nor SHT_NOBITS, so when changing sections we don't
-     want to print a section type (@progbits or @nobits).  If someone
-     is silly enough to emit code or TLS variables to one of these
-     sections, then don't handle them specially.  */
-  if (!(flags & (SECTION_CODE | SECTION_BSS | SECTION_TLS))
-      && (strcmp (name, ".init_array") == 0
-	  || strcmp (name, ".fini_array") == 0
-	  || strcmp (name, ".preinit_array") == 0))
+  /* Various sections have special ELF types that the assembler will
+     assign by default based on the name.  They are neither SHT_PROGBITS
+     nor SHT_NOBITS, so when changing sections we don't want to print a
+     section type (@progbits or @nobits).  Rather than duplicating the
+     assembler's knowledge of what those special name patterns are, just
+     let the assembler choose the type if we don't know a specific
+     reason to set it to something other than the default.  SHT_PROGBITS
+     is the default for sections whose name is not specially known to
+     the assembler, so it does no harm to leave the choice to the
+     assembler when @progbits is the best thing we know to use.  If
+     someone is silly enough to emit code or TLS variables to one of
+     these sections, then don't handle them specially.  */
+  if (!(flags & (SECTION_CODE | SECTION_BSS | SECTION_TLS | SECTION_ENTSIZE))
+      && !(HAVE_COMDAT_GROUP && (flags & SECTION_LINKONCE)))
     flags |= SECTION_NOTYPE;

   return flags;

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2018-06-14  1:23 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-15 23:41 [PATCH PR other/77609] Let the assembler choose ELF section types for miscellaneous named sections Roland McGrath
2016-09-22 20:25 ` Roland McGrath
2018-02-24  9:54   ` Roland McGrath via gcc-patches
2018-02-27  4:11     ` Ian Lance Taylor via gcc-patches
2018-02-28  2:01       ` Roland McGrath via gcc-patches
2018-02-28  4:14         ` Ian Lance Taylor via gcc-patches
2018-02-28 23:56           ` Roland McGrath via gcc-patches
2018-03-01  0:07             ` Ian Lance Taylor via gcc-patches
2018-03-01  0:19               ` Roland McGrath via gcc-patches
2018-04-28 11:58                 ` Roland McGrath via gcc-patches
2018-05-04 18:25                   ` Roland McGrath via gcc-patches
2018-05-04 18:44                   ` Ian Lance Taylor via gcc-patches
2018-05-05 23:38                     ` Roland McGrath via gcc-patches
2018-06-14  0:52                       ` Roland McGrath via gcc-patches
2018-06-14  1:05                         ` Ian Lance Taylor via gcc-patches
2018-06-14  1:23                           ` Roland McGrath via gcc-patches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).