• Masahiro Yamada's avatar
    kbuild: change tool coverage variables to take the path relative to $(obj) · bf48d9b7
    Masahiro Yamada authored
    Commit 54b8ae66 ("kbuild: change *FLAGS_<basetarget>.o to take the
    path relative to $(obj)") changed the syntax of per-file compiler flags.
    
    The situation is the same for the following variables:
    
      OBJECT_FILES_NON_STANDARD_<basetarget>.o
      GCOV_PROFILE_<basetarget>.o
      KASAN_SANITIZE_<basetarget>.o
      KMSAN_SANITIZE_<basetarget>.o
      KMSAN_ENABLE_CHECKS_<basetarget>.o
      UBSAN_SANITIZE_<basetarget>.o
      KCOV_INSTRUMENT_<basetarget>.o
      KCSAN_SANITIZE_<basetarget>.o
      KCSAN_INSTRUMENT_BARRIERS_<basetarget>.o
    
    The <basetarget> is the filename of the target with its directory and
    suffix stripped.
    
    This syntax comes into a trouble when two files with the same basename
    appear in one Makefile, for example:
    
      obj-y += dir1/foo.o
      obj-y += dir2/foo.o
      OBJECT_FILES_NON_STANDARD_foo.o := y
    
    OBJECT_FILES_NON_STANDARD_foo.o is applied to both dir1/foo.o and
    dir2/foo.o. This syntax is not flexbile enough to handle cases where
    one of them is a standard object, but the other is not.
    
    It is more sensible to use the relative path to the Makefile, like this:
    
      obj-y += dir1/foo.o
      OBJECT_FILES_NON_STANDARD_dir1/foo.o := y
      obj-y += dir2/foo.o
      OBJECT_FILES_NON_STANDARD_dir2/foo.o := y
    
    To maintain the current behavior, I made adjustments to the following two
    Makefiles:
    
     - arch/x86/entry/vdso/Makefile, which compiles vclock_gettime.o, vgetcpu.o,
       and their vdso32 variants.
    
     - arch/x86/kvm/Makefile, which compiles vmx/vmenter.o and svm/vmenter.o
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
    Acked-by: default avatarSean Christopherson <seanjc@google.com>
    bf48d9b7
Makefile 1.52 KB