On 21 August 2012 17:18, Joseph S. Myers <jos...@codesourcery.com> wrote: > > On Tue, 21 Aug 2012, Simon Baldwin wrote: > > > Index: gcc/doc/options.texi > > =================================================================== > > --- gcc/doc/options.texi (revision 190535) > > +++ gcc/doc/options.texi (working copy) > > @@ -468,4 +468,8 @@ of @option{-@var{opt}}, if not explicitl > > specify several different languages. Each @var{language} must have > > been declared by an earlier @code{Language} record. @xref{Option file > > format}. > > + > > +@item NoDWARFRecord > > +The option is added to the list of those omitted from the producer > > string > > +written by @option{-grecord-gcc-switches}. > > Remove "added to the list of those" (which seems unnecessarily verbose). > > > +@item @samp{nodwarfrecord} > > +Display only those options that are marked for addition to the list of > > +options omitted from @option{-grecord-gcc-switches}. > > I don't think there's any need for special --help support for options with > this flag; this flag is really an implementation detail. (Thus, I think > all the opts.c changes are unnecessary.)
Thanks, revised and shorter version below. Please take another look when ready. ---------- Omit OPT_cpp_ from the DWARF producer string in gfortran. Gfortran uses -cpp=<temporary file> internally, and with -grecord_gcc_switches this command line switch is stored by default in object files. This causes problems with build and packaging systems that care about gcc binary reproducibility and file checksums; the temporary file is different on each compiler invocation. Fixed by adding a new opt marker NoDWARFRecord and associated flag, filtering options for this this setting when writing the producer string, and setting this flag for fortran -cpp=<temporary file> Tested for fortran (suppresses -cpp=...) and c (no effect). gcc/ChangeLog 2012-08-24 Simon Baldwin <sim...@google.com> * dwarf2out.c (gen_producer_string): Omit command line switch if CL_NO_DWARF_RECORD flag set. * opts.h (CL_NO_DWARF_RECORD): New. * opt-functions.awk (switch_flags): Add NoDWARFRecord. * doc/options.texi: Document NoDWARFRecord option flag. gcc/fortran/ChangeLog 2012-08-24 Simon Baldwin <sim...@google.com> * lang.opt (-cpp=): Mark flag NoDWARFRecord. Index: gcc/doc/options.texi =================================================================== --- gcc/doc/options.texi (revision 190642) +++ gcc/doc/options.texi (working copy) @@ -468,4 +468,8 @@ of @option{-@var{opt}}, if not explicitl specify several different languages. Each @var{language} must have been declared by an earlier @code{Language} record. @xref{Option file format}. + +@item NoDWARFRecord +The option is omitted from the producer string written by +@option{-grecord-gcc-switches}. @end table Index: gcc/dwarf2out.c =================================================================== --- gcc/dwarf2out.c (revision 190642) +++ gcc/dwarf2out.c (working copy) @@ -18138,6 +18138,9 @@ gen_producer_string (void) /* Ignore these. */ continue; default: + if (cl_options[save_decoded_options[j].opt_index].flags + & CL_NO_DWARF_RECORD) + continue; gcc_checking_assert (save_decoded_options[j].canonical_option[0][0] == '-'); switch (save_decoded_options[j].canonical_option[0][1]) Index: gcc/opts.h =================================================================== --- gcc/opts.h (revision 190642) +++ gcc/opts.h (working copy) @@ -145,6 +145,7 @@ extern const unsigned int cl_lang_count; #define CL_JOINED (1U << 22) /* If takes joined argument. */ #define CL_SEPARATE (1U << 23) /* If takes a separate argument. */ #define CL_UNDOCUMENTED (1U << 24) /* Do not output with --help. */ +#define CL_NO_DWARF_RECORD (1U << 25) /* Do not add to producer string. */ /* Flags for an enumerated option argument. */ #define CL_ENUM_CANONICAL (1 << 0) /* Canonical for this value. */ Index: gcc/fortran/lang.opt =================================================================== --- gcc/fortran/lang.opt (revision 190642) +++ gcc/fortran/lang.opt (working copy) @@ -295,7 +295,7 @@ Fortran Negative(nocpp) Enable preprocessing cpp= -Fortran Joined Negative(nocpp) Undocumented +Fortran Joined Negative(nocpp) Undocumented NoDWARFRecord ; Internal option generated by specs from -cpp. nocpp Index: gcc/opt-functions.awk =================================================================== --- gcc/opt-functions.awk (revision 190642) +++ gcc/opt-functions.awk (working copy) @@ -103,6 +103,7 @@ function switch_flags (flags) test_flag("JoinedOrMissing", flags, " | CL_JOINED") \ test_flag("Separate", flags, " | CL_SEPARATE") \ test_flag("Undocumented", flags, " | CL_UNDOCUMENTED") \ + test_flag("NoDWARFRecord", flags, " | CL_NO_DWARF_RECORD") \ test_flag("Warning", flags, " | CL_WARNING") \ test_flag("Optimization", flags, " | CL_OPTIMIZATION") sub( "^0 \\| ", "", result ) -- Google UK Limited | Registered Office: Belgrave House, 76 Buckingham Palace Road, London SW1W 9TQ | Registered in England Number: 3977902