Message ID | 20250124082030.764417-1-liuyuntao12@huawei.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [-next] arm32/boot/compressed: Force hidden visibility for all symbol references | expand |
On Fri, 24 Jan 2025 at 09:31, Yuntao Liu <liuyuntao12@huawei.com> wrote: > > Eliminate all GOT entries in the decompressor binary, by forcing hidden > visibility for all symbol references, which informs the compiler that > such references will be resolved at link time without the need for > allocating GOT entries. > > Include linux/hidden.h in Makefile, like x86, for the > hidden visibility attribute. > > Signed-off-by: Yuntao Liu <liuyuntao12@huawei.com> Doesn't this break appended DTB? > --- > arch/arm/boot/compressed/Makefile | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile > index 945b5975fce2..d8a17760ad29 100644 > --- a/arch/arm/boot/compressed/Makefile > +++ b/arch/arm/boot/compressed/Makefile > @@ -93,6 +93,9 @@ targets := vmlinux vmlinux.lds piggy_data piggy.o \ > head.o $(OBJS) > > KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING > +ifneq ($(CONFIG_LD_IS_LLD),y) > +KBUILD_CFLAGS += -include $(srctree)/include/linux/hidden.h > +endif > Why not for LLD? > ccflags-y := -fpic $(call cc-option,-mno-single-pic-base,) -fno-builtin \ > -I$(srctree)/scripts/dtc/libfdt -fno-stack-protector \ > -- > 2.34.1 >
On Fri, Jan 24, 2025 at 08:20:30AM +0000, Yuntao Liu wrote: > Eliminate all GOT entries in the decompressor binary, by forcing hidden > visibility for all symbol references, which informs the compiler that > such references will be resolved at link time without the need for > allocating GOT entries. One question. Why. I don't think this is desirable. We don't want the linker to fully resolve references at link time - we specifically want a GOT so that at run time the decompressor can resolve the references irrespective of where the decompressor is loaded - in other words, allowing the decompressor to be loaded anywhere in memory. We do not link the decompressor for any specific address, and thus the only way the decompressor can work is by fixing up the GOT. Unless you can demonstrate that the GOT is no longer required, then based on your commit description... hard NAK.
On Fri, Jan 24, 2025 at 03:00:10PM +0100, Ard Biesheuvel wrote: > On Fri, 24 Jan 2025 at 09:31, Yuntao Liu <liuyuntao12@huawei.com> wrote: > > > > Eliminate all GOT entries in the decompressor binary, by forcing hidden > > visibility for all symbol references, which informs the compiler that > > such references will be resolved at link time without the need for > > allocating GOT entries. > > > > Include linux/hidden.h in Makefile, like x86, for the > > hidden visibility attribute. > > > > Signed-off-by: Yuntao Liu <liuyuntao12@huawei.com> > > Doesn't this break appended DTB? Yes. It also breaks ZBOOT_ROM=y as well.
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index 945b5975fce2..d8a17760ad29 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -93,6 +93,9 @@ targets := vmlinux vmlinux.lds piggy_data piggy.o \ head.o $(OBJS) KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING +ifneq ($(CONFIG_LD_IS_LLD),y) +KBUILD_CFLAGS += -include $(srctree)/include/linux/hidden.h +endif ccflags-y := -fpic $(call cc-option,-mno-single-pic-base,) -fno-builtin \ -I$(srctree)/scripts/dtc/libfdt -fno-stack-protector \
Eliminate all GOT entries in the decompressor binary, by forcing hidden visibility for all symbol references, which informs the compiler that such references will be resolved at link time without the need for allocating GOT entries. Include linux/hidden.h in Makefile, like x86, for the hidden visibility attribute. Signed-off-by: Yuntao Liu <liuyuntao12@huawei.com> --- arch/arm/boot/compressed/Makefile | 3 +++ 1 file changed, 3 insertions(+)