* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
[not found] ` <alpine.LNX.2.00.1208161634250.2706@wotan.suse.de>
@ 2012-08-16 16:59 ` Simon Baldwin
2012-08-16 19:34 ` Jakub Jelinek
0 siblings, 1 reply; 10+ messages in thread
From: Simon Baldwin @ 2012-08-16 16:59 UTC (permalink / raw)
To: Michael Matz, gcc-patches; +Cc: Gerald Pfeifer
On 16 August 2012 16:40, Michael Matz <matz@suse.de> wrote:
>
> ,,,
>
> Do you have considered to use a new option flag (usable in the .opt files)
> instead of a langhook? I.e. add a flag cl_dont_record to cl_option, a
> string Norecord for the .opt files, some handling for it in
> opt-functions.awk and the like?
>
> Adding lang-hooks used by debug producers make me twitch :)
Okay. Below is an alternative approach.
I've moved discussion to gcc-patches, since it's now more concrete
than abstract.
----------
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-16 Simon Baldwin <simonb@google.com>
* dwarf2out.c (gen_producer_string): Omit command line switch if
CL_NO_DWARF_RECORD flag set.
* opts.c (print_specific_help): Add CL_NO_DWARF_RECORD handling.
* opts.h (CL_NO_DWARF_RECORD): New.
* opt-functions.awk (switch_flags): Add NoDwarfRecord.
gcc/fortran/ChangeLog
2012-08-16 Simon Baldwin <simonb@google.com>
* lang.opt (-cpp=): Mark flag NoDwarfRecord.
Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c (revision 190442)
+++ gcc/dwarf2out.c (working copy)
@@ -18101,6 +18101,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.c
===================================================================
--- gcc/opts.c (revision 190442)
+++ gcc/opts.c (working copy)
@@ -1186,7 +1186,9 @@ print_specific_help (unsigned int includ
{
if (any_flags == 0)
{
- if (include_flags & CL_UNDOCUMENTED)
+ if (include_flags & CL_NO_DWARF_RECORD)
+ description = _("The following options are not recorded by DWARF");
+ else if (include_flags & CL_UNDOCUMENTED)
description = _("The following options are not documented");
else if (include_flags & CL_SEPARATE)
description = _("The following options take separate arguments");
@@ -1292,7 +1294,7 @@ common_handle_option (struct gcc_options
/* Walk along the argument string, parsing each word in turn.
The format is:
arg = [^]{word}[,{arg}]
- word = {optimizers|target|warnings|undocumented|
+ word = {optimizers|target|warnings|undocumented|nodwarfrecord|
params|common|<language>} */
while (* a != 0)
{
@@ -1307,6 +1309,7 @@ common_handle_option (struct gcc_options
{ "target", CL_TARGET },
{ "warnings", CL_WARNING },
{ "undocumented", CL_UNDOCUMENTED },
+ { "nodwarfrecord", CL_NO_DWARF_RECORD },
{ "params", CL_PARAMS },
{ "joined", CL_JOINED },
{ "separate", CL_SEPARATE },
Index: gcc/opts.h
===================================================================
--- gcc/opts.h (revision 190442)
+++ 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 190442)
+++ gcc/fortran/lang.opt (working copy)
@@ -287,7 +287,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 190442)
+++ 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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
2012-08-16 16:59 ` Reproducible gcc builds, gfortran, and -grecord-gcc-switches Simon Baldwin
@ 2012-08-16 19:34 ` Jakub Jelinek
2012-08-17 9:46 ` Simon Baldwin
0 siblings, 1 reply; 10+ messages in thread
From: Jakub Jelinek @ 2012-08-16 19:34 UTC (permalink / raw)
To: Simon Baldwin; +Cc: Michael Matz, gcc-patches, Gerald Pfeifer
On Thu, Aug 16, 2012 at 06:59:09PM +0200, Simon Baldwin wrote:
> On 16 August 2012 16:40, Michael Matz <matz@suse.de> wrote:
> >
> > ,,,
> >
> > Do you have considered to use a new option flag (usable in the .opt files)
> > instead of a langhook? I.e. add a flag cl_dont_record to cl_option, a
> > string Norecord for the .opt files, some handling for it in
> > opt-functions.awk and the like?
> >
> > Adding lang-hooks used by debug producers make me twitch :)
>
> Okay. Below is an alternative approach.
>
> I've moved discussion to gcc-patches, since it's now more concrete
> than abstract.
You could have just added
case OPT_cpp_:
to the switch in gen_producer_string, instead of all this.
> --- gcc/dwarf2out.c (revision 190442)
> +++ gcc/dwarf2out.c (working copy)
> @@ -18101,6 +18101,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])
Jakub
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
2012-08-16 19:34 ` Jakub Jelinek
@ 2012-08-17 9:46 ` Simon Baldwin
2012-08-17 14:56 ` Joseph S. Myers
0 siblings, 1 reply; 10+ messages in thread
From: Simon Baldwin @ 2012-08-17 9:46 UTC (permalink / raw)
To: Jakub Jelinek; +Cc: Michael Matz, gcc-patches, Gerald Pfeifer
On 16 August 2012 21:28, Jakub Jelinek <jakub@redhat.com> wrote:
>
> On Thu, Aug 16, 2012 at 06:59:09PM +0200, Simon Baldwin wrote:
> > On 16 August 2012 16:40, Michael Matz <matz@suse.de> wrote:
> > >
> > > ,,,
> > >
> > > Do you have considered to use a new option flag (usable in the .opt files)
> > > instead of a langhook? I.e. add a flag cl_dont_record to cl_option, a
> > > string Norecord for the .opt files, some handling for it in
> > > opt-functions.awk and the like?
> > >
> > > Adding lang-hooks used by debug producers make me twitch :)
> >
> > Okay. Below is an alternative approach.
> >
> > I've moved discussion to gcc-patches, since it's now more concrete
> > than abstract.
>
> You could have just added
> case OPT_cpp_:
> to the switch in gen_producer_string, instead of all this.
Thanks. I was under the impression, apparently mistaken, that
OPT_cpp_ exists only if fortran is enabled.
--
Google UK Limited | Registered Office: Belgrave House, 76 Buckingham
Palace Road, London SW1W 9TQ | Registered in England Number: 3977902
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
2012-08-17 9:46 ` Simon Baldwin
@ 2012-08-17 14:56 ` Joseph S. Myers
2012-08-20 14:30 ` Simon Baldwin
0 siblings, 1 reply; 10+ messages in thread
From: Joseph S. Myers @ 2012-08-17 14:56 UTC (permalink / raw)
To: Simon Baldwin; +Cc: Jakub Jelinek, Michael Matz, gcc-patches, Gerald Pfeifer
On Fri, 17 Aug 2012, Simon Baldwin wrote:
> > You could have just added
> > case OPT_cpp_:
> > to the switch in gen_producer_string, instead of all this.
>
> Thanks. I was under the impression, apparently mistaken, that
> OPT_cpp_ exists only if fortran is enabled.
OPT_* for Fortran options only exist when the Fortran front-end is in the
source tree (whether or not enabled). I think we try to avoid knowingly
breaking use cases where people remove some front ends from the source
tree, although we don't actively test them and no longer provide split-up
source tarballs.
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
2012-08-17 14:56 ` Joseph S. Myers
@ 2012-08-20 14:30 ` Simon Baldwin
2012-08-20 14:45 ` Joseph S. Myers
0 siblings, 1 reply; 10+ messages in thread
From: Simon Baldwin @ 2012-08-20 14:30 UTC (permalink / raw)
To: Joseph S. Myers; +Cc: Jakub Jelinek, Michael Matz, gcc-patches, Gerald Pfeifer
On 17 August 2012 16:55, Joseph S. Myers <joseph@codesourcery.com> wrote:
>
> On Fri, 17 Aug 2012, Simon Baldwin wrote:
>
> > > You could have just added
> > > case OPT_cpp_:
> > > to the switch in gen_producer_string, instead of all this.
> >
> > Thanks. I was under the impression, apparently mistaken, that
> > OPT_cpp_ exists only if fortran is enabled.
>
> OPT_* for Fortran options only exist when the Fortran front-end is in the
> source tree (whether or not enabled). I think we try to avoid knowingly
> breaking use cases where people remove some front ends from the source
> tree, although we don't actively test them and no longer provide split-up
> source tarballs.
Thanks for the update. Which fix should move forwards?
--
Google UK Limited | Registered Office: Belgrave House, 76 Buckingham
Palace Road, London SW1W 9TQ | Registered in England Number: 3977902
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
2012-08-20 14:30 ` Simon Baldwin
@ 2012-08-20 14:45 ` Joseph S. Myers
2012-08-21 12:20 ` Simon Baldwin
0 siblings, 1 reply; 10+ messages in thread
From: Joseph S. Myers @ 2012-08-20 14:45 UTC (permalink / raw)
To: Simon Baldwin; +Cc: Jakub Jelinek, Michael Matz, gcc-patches, Gerald Pfeifer
On Mon, 20 Aug 2012, Simon Baldwin wrote:
> > OPT_* for Fortran options only exist when the Fortran front-end is in the
> > source tree (whether or not enabled). I think we try to avoid knowingly
> > breaking use cases where people remove some front ends from the source
> > tree, although we don't actively test them and no longer provide split-up
> > source tarballs.
>
> Thanks for the update. Which fix should move forwards?
I think the approach using a new option flag is the way to go, though the
patch needs (at least) documentation for the new flag in options.texi.
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
2012-08-20 14:45 ` Joseph S. Myers
@ 2012-08-21 12:20 ` Simon Baldwin
2012-08-21 15:18 ` Joseph S. Myers
0 siblings, 1 reply; 10+ messages in thread
From: Simon Baldwin @ 2012-08-21 12:20 UTC (permalink / raw)
To: Joseph S. Myers, gcc-patches; +Cc: Jakub Jelinek, Michael Matz, Gerald Pfeifer
On 20 August 2012 16:45, Joseph S. Myers <joseph@codesourcery.com> wrote:
>
> On Mon, 20 Aug 2012, Simon Baldwin wrote:
>
> > > OPT_* for Fortran options only exist when the Fortran front-end is in the
> > > source tree (whether or not enabled). I think we try to avoid knowingly
> > > breaking use cases where people remove some front ends from the source
> > > tree, although we don't actively test them and no longer provide split-up
> > > source tarballs.
> >
> > Thanks for the update. Which fix should move forwards?
>
> I think the approach using a new option flag is the way to go, though the
> patch needs (at least) documentation for the new flag in options.texi.
>
Updated version appended below. Okay for 4.8 trunk?
----------
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-21 Simon Baldwin <simonb@google.com>
* dwarf2out.c (gen_producer_string): Omit command line switch if
CL_NO_DWARF_RECORD flag set.
* opts.c (print_specific_help): Add CL_NO_DWARF_RECORD handling.
* opts.h (CL_NO_DWARF_RECORD): New.
* opt-functions.awk (switch_flags): Add NoDWARFRecord.
* doc/options.texi: Document NoDWARFRecord option flag.
* doc/invoke.texi: Document --help=nodwarfrecord.
gcc/fortran/ChangeLog
2012-08-21 Simon Baldwin <simonb@google.com>
* lang.opt (-cpp=): Mark flag NoDWARFRecord.
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}.
@end table
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi (revision 190535)
+++ gcc/doc/invoke.texi (working copy)
@@ -1330,6 +1330,10 @@ sign in the same continuous piece of tex
@item @samp{separate}
Display options taking an argument that appears as a separate word
following the original option, such as: @samp{-o output-file}.
+
+@item @samp{nodwarfrecord}
+Display only those options that are marked for addition to the list of
+options omitted from @option{-grecord-gcc-switches}.
@end table
Thus for example to display all the undocumented target-specific
Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c (revision 190535)
+++ gcc/dwarf2out.c (working copy)
@@ -18101,6 +18101,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.c
===================================================================
--- gcc/opts.c (revision 190535)
+++ gcc/opts.c (working copy)
@@ -1186,7 +1186,9 @@ print_specific_help (unsigned int includ
{
if (any_flags == 0)
{
- if (include_flags & CL_UNDOCUMENTED)
+ if (include_flags & CL_NO_DWARF_RECORD)
+ description = _("The following options are not recorded by DWARF");
+ else if (include_flags & CL_UNDOCUMENTED)
description = _("The following options are not documented");
else if (include_flags & CL_SEPARATE)
description = _("The following options take separate arguments");
@@ -1292,7 +1294,7 @@ common_handle_option (struct gcc_options
/* Walk along the argument string, parsing each word in turn.
The format is:
arg = [^]{word}[,{arg}]
- word = {optimizers|target|warnings|undocumented|
+ word = {optimizers|target|warnings|undocumented|nodwarfrecord|
params|common|<language>} */
while (* a != 0)
{
@@ -1307,6 +1309,7 @@ common_handle_option (struct gcc_options
{ "target", CL_TARGET },
{ "warnings", CL_WARNING },
{ "undocumented", CL_UNDOCUMENTED },
+ { "nodwarfrecord", CL_NO_DWARF_RECORD },
{ "params", CL_PARAMS },
{ "joined", CL_JOINED },
{ "separate", CL_SEPARATE },
Index: gcc/opts.h
===================================================================
--- gcc/opts.h (revision 190535)
+++ 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 190535)
+++ 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 190535)
+++ 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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
2012-08-21 12:20 ` Simon Baldwin
@ 2012-08-21 15:18 ` Joseph S. Myers
2012-08-24 11:09 ` Simon Baldwin
0 siblings, 1 reply; 10+ messages in thread
From: Joseph S. Myers @ 2012-08-21 15:18 UTC (permalink / raw)
To: Simon Baldwin; +Cc: gcc-patches, Jakub Jelinek, Michael Matz, Gerald Pfeifer
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.)
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
2012-08-21 15:18 ` Joseph S. Myers
@ 2012-08-24 11:09 ` Simon Baldwin
2012-08-24 14:48 ` Joseph S. Myers
0 siblings, 1 reply; 10+ messages in thread
From: Simon Baldwin @ 2012-08-24 11:09 UTC (permalink / raw)
To: Joseph S. Myers; +Cc: gcc-patches, Jakub Jelinek, Michael Matz, Gerald Pfeifer
On 21 August 2012 17:18, Joseph S. Myers <joseph@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 <simonb@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 <simonb@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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Reproducible gcc builds, gfortran, and -grecord-gcc-switches
2012-08-24 11:09 ` Simon Baldwin
@ 2012-08-24 14:48 ` Joseph S. Myers
0 siblings, 0 replies; 10+ messages in thread
From: Joseph S. Myers @ 2012-08-24 14:48 UTC (permalink / raw)
To: Simon Baldwin; +Cc: gcc-patches, Jakub Jelinek, Michael Matz, Gerald Pfeifer
On Fri, 24 Aug 2012, Simon Baldwin wrote:
> gcc/ChangeLog
> 2012-08-24 Simon Baldwin <simonb@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 <simonb@google.com>
>
> * lang.opt (-cpp=): Mark flag NoDWARFRecord.
OK.
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-08-24 14:48 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CAPTY64p0=m3O6TOfPf1w1rtF944gHe_ODOsH+Ryx-tdTupVzUA@mail.gmail.com>
[not found] ` <alpine.LNX.2.00.1208160912270.2871@gerinyyl.fvgr>
[not found] ` <CAPTY64ofrdhFVrYNJcHhyrA3J7vpZ=Y6EPrdoWJEwsv3tm3xyw@mail.gmail.com>
[not found] ` <alpine.LNX.2.00.1208161634250.2706@wotan.suse.de>
2012-08-16 16:59 ` Reproducible gcc builds, gfortran, and -grecord-gcc-switches Simon Baldwin
2012-08-16 19:34 ` Jakub Jelinek
2012-08-17 9:46 ` Simon Baldwin
2012-08-17 14:56 ` Joseph S. Myers
2012-08-20 14:30 ` Simon Baldwin
2012-08-20 14:45 ` Joseph S. Myers
2012-08-21 12:20 ` Simon Baldwin
2012-08-21 15:18 ` Joseph S. Myers
2012-08-24 11:09 ` Simon Baldwin
2012-08-24 14:48 ` Joseph S. Myers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).