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

Reply via email to