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

Reply via email to