Message ID | 20201118220731.925424-16-samitolvanen@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for Clang LTO | expand |
Hey Sami, On Wed, Nov 18, 2020 at 02:07:29PM -0800, Sami Tolvanen wrote: > We use objcopy to manipulate ELF binaries for the nVHE code, > which fails with LTO as the compiler produces LLVM bitcode > instead. Disable LTO for this code to allow objcopy to be used. We now partially link the nVHE code (generating machine code) before objcopy, so I think you should be able to drop this patch now. Tried building your branch without it, ran a couple of unit tests and all seems fine. David
On Mon, Nov 23, 2020 at 2:21 AM David Brazdil <dbrazdil@google.com> wrote: > > Hey Sami, > > On Wed, Nov 18, 2020 at 02:07:29PM -0800, Sami Tolvanen wrote: > > We use objcopy to manipulate ELF binaries for the nVHE code, > > which fails with LTO as the compiler produces LLVM bitcode > > instead. Disable LTO for this code to allow objcopy to be used. > > We now partially link the nVHE code (generating machine code) before objcopy, > so I think you should be able to drop this patch now. Tried building your > branch without it, ran a couple of unit tests and all seems fine. Great, thanks for testing this, David! I'll drop this patch from v8. Sami
diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile b/arch/arm64/kvm/hyp/nvhe/Makefile index ddde15fe85f2..4ceed7682287 100644 --- a/arch/arm64/kvm/hyp/nvhe/Makefile +++ b/arch/arm64/kvm/hyp/nvhe/Makefile @@ -51,9 +51,9 @@ $(obj)/kvm_nvhe.o: $(obj)/kvm_nvhe.tmp.o FORCE quiet_cmd_hypcopy = HYPCOPY $@ cmd_hypcopy = $(OBJCOPY) --prefix-symbols=__kvm_nvhe_ $< $@ -# Remove ftrace and Shadow Call Stack CFLAGS. +# Remove ftrace, LTO, and Shadow Call Stack CFLAGS. # This is equivalent to the 'notrace' and '__noscs' annotations. -KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS), $(KBUILD_CFLAGS)) +KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_LTO) $(CC_FLAGS_SCS), $(KBUILD_CFLAGS)) # KVM nVHE code is run at a different exception code with a different map, so # compiler instrumentation that inserts callbacks or checks into the code may