Thread (113 messages) 113 messages, 6 authors, 2020-07-31

Re: [PATCH v4 0/7] x86/boot: Remove runtime relocations from compressed kernel

From: Sedat Dilek <hidden>
Date: 2020-07-14 19:53:37

On Tue, Jul 14, 2020 at 9:29 PM Arvind Sankar [off-list ref] wrote:
On Tue, Jul 14, 2020 at 08:30:14PM +0200, Sedat Dilek wrote:
quoted
quoted
I did a full new build...

...and it fails with ld.lld-11 as linker:

ld.lld-11 -m elf_x86_64 -pie  --no-dynamic-linker -r -o
arch/x86/boot/compressed/.tmp_misc.o arch/x86/boot/compressed/misc.o
-T arch/x86/boot/compressed/.tmp_misc.ver; mv -f
arch/x86/boot/compressed/.tmp_misc.o arch/x86/boot/compressed/misc.o;
rm -f arch/x86/boot/compressed/.tmp_misc.ver; fi
*** ld.lld-11: error: -r and -pie may not be used together ***
make[5]: *** [scripts/Makefile.build:281:
arch/x86/boot/compressed/misc.o] Error 1

It's annoying to fail on the last minutes of a build.
Sorry for being very honest.
I applied this diff...

$ git diff arch/x86/boot/compressed/Makefile
diff --git a/arch/x86/boot/compressed/Makefile
b/arch/x86/boot/compressed/Makefile
index 789d5d14d8b0..9ba52a656838 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -51,7 +51,10 @@ UBSAN_SANITIZE :=n
 KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)
 # Compressed kernel should be built as PIE since it may be loaded at any
 # address by the bootloader.
+# LLD linker does not allow -r and -pie options to be used together.
+ifndef CONFIG_LD_IS_LLD
 KBUILD_LDFLAGS += -pie $(call ld-option, --no-dynamic-linker)
+endif
 LDFLAGS_vmlinux := -T

 hostprogs      := mkpiggy
...and was able to build, assemble, link arch/x86/boot/compressed/*.

- Sedat -
Thanks for the test.

Can you share your .config? The error messages look like they're coming
from running modversions on misc.o, which is unexpected as it shouldn't
have any exported symbols, and it doesn't in my builds.

In any case, I think the right fix here would be to add -pie and
--no-dynamic-linker to LDFLAGS_vmlinux instead of KBUILD_LDFLAGS.
Hmm, you might be right with moving to LDFLAGS_vmlinux.

Attached are my linux-config and dmesg-output.

- Sedat -

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help