• Bruce Ashfield's avatar
    arch/x86/boot: Use prefix map to avoid embedded paths · 9e2276fa
    Bruce Ashfield authored
    It was observed that the kernel embeds the absolute build path in the
    x86 boot image when the __FILE__ macro is expanded.
    
    > From https://bugzilla.yoctoproject.org/show_bug.cgi?id=13458:
    
      If you turn on the buildpaths QA test, or try a reproducible build, you
      discover that the kernel image contains build paths.
    
      $ strings bzImage-5.0.19-yocto-standard |grep tmp/
      out of pgt_buf in
      /data/poky-tmp/reproducible/tmp/work-shared/qemux86-64/kernel-source/arch/x86/boot/compressed/kaslr_64.c!?
    
      But what's this in the top-level Makefile:
    
      $ git grep prefix-map
      Makefile:KBUILD_CFLAGS  += $(call
      cc-option,-fmacro-prefix-map=$(srctree)/=)
    
      So the __FILE__ shouldn't be using the full path.  However
      arch/x86/boot/compressed/Makefile has this:
    
      KBUILD_CFLAGS := -m$(BITS) -O2
    
      So that clears KBUILD_FLAGS, removing the -fmacro-prefix-map option.
    
    Use -fmacro-prefix-map to have relative paths in the boot image too.
    
     [ bp: Massage commit message and put the KBUILD_CFLAGS addition in
       ..boot/Makefile after the KBUILD_AFLAGS assignment because gas
       doesn't support -fmacro-prefix-map. ]
    Signed-off-by: default avatarBruce Ashfield <bruce.ashfield@gmail.com>
    Signed-off-by: default avatarRoss Burton <ross.burton@intel.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: George Rimar <grimar@accesssoftek.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Nathan Chancellor <natechancellor@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20190926093226.8568-1-ross.burton@intel.com
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=204333
    9e2276fa
Makefile 5.31 KB