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