Re: RFC: Should -fplugin and -fplugin-arg options be excluded from DW_AT_producer recording?

Richard Biener <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.devel
Message-ID <CAFiYyc03wuxRL=CuTr7jSNkMjWiqKaBLikdcjGfKzP2=nvQiCA@mail.gmail.com>
On Wed, Aug 12, 2026 at 12:40 PM Jaihind Yadav
<[email protected]> wrote:
>
> Hi,
>
>
>
> While investigating a build-path leakage issue, I noticed that
>
> -fplugin=<path> and -fplugin-arg-* options are currently recorded in
>
> DW_AT_producer when -grecord-gcc-switches is enabled.
>
>
>
> As a result, an absolute plugin path may become embedded in debug
>
> metadata.
>
>
>
> For example:
>
>
>
> gcc -g -grecord-gcc-switches \
>
> -fplugin=/path/to/plugin.so \
>
> -c hello.c
>
>
>
> produces an object file whose DW_AT_producer contains:
>
>
>
> GNU C23 ... -g -fplugin=/path/to/plugin.so
>
>
>
> In my case, the recorded path was an absolute build-system path to a
>
> GCC plugin:
>
>
>
> -fplugin=/local/.../scripts/gcc-plugins/stackleak_plugin.so
>
>
>
> This introduces host-specific path information into the generated
>
> artifact and may negatively affect reproducibility.
>
>
>
> I noticed that GCC already has the NoDWARFRecord mechanism for options
>
> that should not be recorded in the producer string. Looking through the
>
> history, it appears that this mechanism was introduced partly to address
>
> reproducibility concerns involving path-containing options, and there
>
> are also examples where specific options are intentionally excluded from
>
> producer-string recording.
>
>
>
> As an experiment, I modified:
>
>
>
> gcc/common.opt
>
>
>
> and marked:
>
>
>
> -fplugin=
>
> -fplugin-arg-*
>
>
>
> with NoDWARFRecord.
>
>
>
> With this change:
>
>
>
> Before:
>
> DW_AT_producer:
>
> GNU C23 ... -g \
>
> -fplugin=/local/.../stackleak_plugin.so
>
>
>
> After:
>
> DW_AT_producer:
>
> GNU C23 ... -g
>
>
>
> The plugin is still loaded correctly, plugin arguments are still passed,
>
> and generated code/debug information remain unchanged. The only observed
>
> difference is that plugin-related command-line options are no longer
>
> recorded in DW_AT_producer.
>
>
>
> The tradeoff appears to be:
>
>
>
> Benefits:
>
> - Avoids recording host-specific absolute plugin paths.
>
> - Improves reproducibility of producer strings.
>
> - Reduces leakage of local build environment details.
>
>
>
> Downsides:
>
> - Reduces provenance information available from DW_AT_producer.
>
> - Makes it harder to determine from the binary alone which GCC plugin
>
> (and plugin arguments) were used during compilation.
>
>
>
> Before preparing a formal patch submission, I would like feedback on the
>
> policy aspect:
>
>
>
> Should -fplugin and -fplugin-arg-* be treated similarly to other
>
> path-sensitive options and be excluded from producer-string
>
> recording?

No, they should not be excluded as they are clearly affecting
the compilation.  Is there not a standard plugin search path
so the build systems can use -fplugin=<name>.so without path?

>
>
>
> or
>
>
>
> Is preserving plugin provenance in DW_AT_producer considered more
>
> valuable than avoiding path leakage and reproducibility issues?
>
>
>
> Comments and guidance would be appreciated.
>
>
>
> Thanks,
>
> Jaihind Yadav
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.