Keep .GCC.command.line sections of LTO objetcs
authorRichard Biener <rguenther@suse.de>
Thu, 5 Mar 2020 07:44:11 +0000 (08:44 +0100)
committerRichard Biener <rguenther@suse.de>
Thu, 5 Mar 2020 07:44:11 +0000 (08:44 +0100)
This patch is for .GCC.command.line sections in LTO objects to be copied
into the final objects as in the following example:

[egeyar@localhost lto]$ gcc -flto -O3 demo.c -c -g --record-gcc-command-line
[egeyar@localhost lto]$ gcc -flto -O2 demo2.c -c -g --record-gcc-command-line -DFORTIFY=2
[egeyar@localhost lto]$ gcc demo.o demo2.o -o a.out
[egeyar@localhost lto]$ readelf -p .GCC.command.line a.out

String dump of section '.GCC.command.line':
  [     0]  10.0.1 20200227 (experimental) : gcc -flto -O3 demo.c -c -g --record-gcc-command-line
  [    56]  10.0.1 20200227 (experimental) : gcc -flto -O2 demo2.c -c -g --record-gcc-command-line -DFORTIFY=2

2020-03-05  Egeyar Bagcioglu  <egeyar.bagcioglu@oracle.com>

* simple-object.c (handle_lto_debug_sections): Name
".GCC.command.line" among debug sections to be copied over
from lto objects.

libiberty/ChangeLog
libiberty/simple-object.c

index 4c8b236cf782ece65564d54905ad3c759288eb00..106c107e91a1bd1f1ad992d4723e0d49f314a5a6 100644 (file)
@@ -1,3 +1,9 @@
+2020-03-05  Egeyar Bagcioglu  <egeyar.bagcioglu@oracle.com>
+
+       * simple-object.c (handle_lto_debug_sections): Name
+       ".GCC.command.line" among debug sections to be copied over
+       from lto objects.
+
 2020-03-02  Nick Clifton  <nickc@redhat.com>
 
        * testsuite/demangle-expected: Update expected demangling of
index e6c466ab767b681498cdffecb081b2ae76b82b94..92f5698d0a6490bc1364812af61c1a402523eab9 100644 (file)
@@ -301,6 +301,9 @@ handle_lto_debug_sections (const char *name, int rename)
      COMDAT sections in objects produced by GCC.  */
   else if (strcmp (name, ".comment") == 0)
     return strcpy (newname, name);
+  /* Copy over .GCC.command.line section under the same name if present.  */
+  else if (strcmp (name, ".GCC.command.line") == 0)
+    return strcpy (newname, name);
   free (newname);
   return NULL;
 }