Patchwork [google] Add SECTION_EXCLUDE flag and exclude .gnu.callgraph sections (issue5126041)

login
register
mail settings
Submitter Sriraman Tallam
Date Sept. 27, 2011, 6:57 p.m.
Message ID <CAAs8HmxpRJULNy2Wu3YcSEM0MZB7r6AYo+mn0qJyvNkC9F=C4g@mail.gmail.com>
Download mbox | patch
Permalink /patch/116651/
State New
Headers show

Comments

Sriraman Tallam - Sept. 27, 2011, 6:57 p.m.
I committed the patch to google/gcc-4_6 branch.

Thanks,
-Sri.


	* output.h (SECTION_EXCLUDE): New flag for exclude sections.
	* varasm.c (default_elf_asm_named_section): Add "e" to section flags
	marked as SECTION_EXCLUDE.
	* final.c (rest_of_handle_final): Exclude .gnu.callgraph sections.



On Tue, Sep 27, 2011 at 11:02 AM, Cary Coutant <ccoutant@google.com> wrote:
>> 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);
>
> This part is OK for the google/gcc-4_6 branch.
>
> -cary
>

Patch

Index: gcc/varasm.c
===================================================================
--- gcc/varasm.c	(revision 179288)
+++ gcc/varasm.c	(working copy)
@@ -6191,6 +6191,8 @@ 

   if (!(flags & SECTION_DEBUG))
     *f++ = 'a';
+  if (flags & SECTION_EXCLUDE)
+    *f++ = 'e';
   if (flags & SECTION_WRITE)
     *f++ = 'w';
   if (flags & SECTION_CODE)
Index: gcc/output.h
===================================================================
--- gcc/output.h	(revision 179288)
+++ gcc/output.h	(working copy)
@@ -443,6 +443,7 @@ 
 #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 */
Index: gcc/final.c
===================================================================
--- gcc/final.c	(revision 179288)
+++ gcc/final.c	(working copy)
@@ -4428,7 +4428,7 @@ 
       && 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);