https://gcc.gnu.org/g:8912313df87679e202f2897ec25c924a67ee8117

commit r15-8082-g8912313df87679e202f2897ec25c924a67ee8117
Author: Richard Biener <rguent...@suse.de>
Date:   Thu Mar 13 14:29:06 2025 +0100

    Add -[DU]_FORTIFY_SOURCE[=n] to DW_AT_producer
    
    The following makes sure to record -D_FORTIFY_SOURCE=n and
    -U_FORTIFY_SOURCE in the DW_AT_producer debuginfo attribute when
    present on the compiler command line.
    
            * opts.cc (gen_producer_string): Record -D and -U
            with _FORTIFY_SOURCE prefix.

Diff:
---
 gcc/opts.cc | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/gcc/opts.cc b/gcc/opts.cc
index 23900c7b1c04..80c7a9715825 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -3831,9 +3831,7 @@ gen_command_line_string (cl_decoded_option *options,
       case OPT_v:
       case OPT_w:
       case OPT_L:
-      case OPT_D:
       case OPT_I:
-      case OPT_U:
       case OPT_SPECIAL_unknown:
       case OPT_SPECIAL_ignore:
       case OPT_SPECIAL_warn_removed:
@@ -3869,6 +3867,18 @@ gen_command_line_string (cl_decoded_option *options,
       case OPT_fchecking_:
        /* Ignore these.  */
        continue;
+      case OPT_D:
+      case OPT_U:
+       if (startswith (options[i].arg, "_FORTIFY_SOURCE")
+           && (options[i].arg[sizeof ("_FORTIFY_SOURCE") - 1] == '\0'
+               || (options[i].opt_index == OPT_D
+                   && options[i].arg[sizeof ("_FORTIFY_SOURCE") - 1] == '=')))
+         {
+           switches.safe_push (options[i].orig_option_with_args_text);
+           len += strlen (options[i].orig_option_with_args_text) + 1;
+         }
+       /* Otherwise ignore these. */
+       continue;
       case OPT_flto_:
        {
          const char *lto_canonical = "-flto";

Reply via email to