arch/arm/boot/compressed/Makefile | 3 +++ 1 file changed, 3 insertions(+)
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(+)
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 \
--
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. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
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 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. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
© 2016 - 2026 Red Hat, Inc.