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";