This patch adds a new flag to mark sections as exclude sections. Such
sections will be discarded by the linker. Also, mark .gnu.callgraph
sections which store the callgraph edge profile info as exclude
sections.
I also want the SECTION_EXCLUDE part alone to be considered for trunk.
Index: final.c
===================================================================
--- final.c (revision 179104)
+++ final.c (working copy)
@@ -4428,7 +4428,7 @@ rest_of_handle_final (void)
&& cgraph_node (current_function_decl) != NULL
&& (cgraph_node (current_function_decl))->callees != NULL)
{
- flags = SECTION_DEBUG;
+ flags = SECTION_DEBUG | SECTION_EXCLUDE;
asprintf (&profile_fnname, ".gnu.callgraph.text.%s", fnname);
switch_to_section (get_section (profile_fnname, flags, NULL));
fprintf (asm_out_file, "\t.string \"Function %s\"\n", fnname);
Index: varasm.c
===================================================================
--- varasm.c (revision 179098)
+++ varasm.c (working copy)
@@ -6191,6 +6191,8 @@ default_elf_asm_named_section (const char *name, u
if (!(flags & SECTION_DEBUG))
*f++ = 'a';
+ if (flags & SECTION_EXCLUDE)
+ *f++ = 'e';
if (flags & SECTION_WRITE)
*f++ = 'w';
if (flags & SECTION_CODE)
Index: output.h
===================================================================
--- output.h (revision 179098)
+++ output.h (working copy)
@@ -443,6 +443,7 @@ extern void no_asm_to_stream (FILE *);
#define SECTION_COMMON 0x800000 /* contains common data */
#define SECTION_RELRO 0x1000000 /* data is readonly after relocation
processing */
#define SECTION_MACH_DEP 0x2000000 /* subsequent bits reserved for target
*/
+#define SECTION_EXCLUDE 0x4000000 /* discarded by the linker */
/* This SECTION_STYLE is used for unnamed sections that we can switch
to using a special assembler directive. */
--
This patch is available for review at http://codereview.appspot.com/5126041