On 03/09/2025 4:13 pm, Jan Beulich wrote:
> For in-tree builds relative paths are used, whereas for out-of-tree builds
> in various situations absolute ones come into play. The extra paths can be
> long, wasting space and e.g. serial line bandwidth. They would also get in
> the way of location-independent reproducible builds. Leverage newer gcc's
> (and Clang's) ability to "remap" file names. For older gcc fall back to
> using the option affecting debug info only.
>
> Signed-off-by: Jan Beulich <jbeul...@suse.com>
> ---
> Of course we may want to consider putting this in the top-level Config.mk,
> to also affect other sub-trees (presently mainly/only affecting debug
> info, for which even gcc5 already supports -fdebug-prefix-remap=).
>
> As to a Fixes: tag, I wasn't quite sure whether to "blame" the
> introduction of out-of-tree builds.
>
> --- a/xen/Makefile
> +++ b/xen/Makefile
> @@ -448,6 +448,8 @@ LDFLAGS-$(CONFIG_CC_IS_CLANG) += -plugin
>  endif
>  
>  ifdef building_out_of_srctree
> +    CFLAGS += $(call cc-option,$(CC),-ffile-prefix-map=$(srctree)/=, \
> +                                     -fdebug-prefix-map=$(srctree)/=)
>      CFLAGS += -I$(objtree)/include
>      CFLAGS += -I$(objtree)/arch/$(SRCARCH)/include
>  endif

We do want to be taking a change like this, but it's also definitely not
limited to out-of-tree builds.  I have full paths embedded even for
in-tree builds.

To be useful, it wants to apply to everything, not just the hypervisor,
so does want to be in the top level Config.mk.

https://reproducible-builds.org/docs/build-path/ has a full list of
compiler versions. It looks like we need to use both options here until
we can increase the minimum GCC version to 8.

~Andrew

Reply via email to