Support for this construct was added in 2.22 only. Avoid the need to
introduce logic to probe for linker script capabilities by (ab)using the
probe for a command line option having appeared at about the same time.
Note that this remains x86-specific because Arm is unaffected, by
requiring GNU ld 2.24 or newer.
Fixes: 4b7fd8153ddf ("x86: fold sections in final binaries")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v3: Rebase over "kconfig: detect LD implementation".
v2: Always define HAVE_LD_SORT_BY_INIT_PRIORITY when using LLVM ld.
--- a/xen/arch/x86/arch.mk
+++ b/xen/arch/x86/arch.mk
@@ -73,6 +73,16 @@ ifeq ($(CONFIG_UBSAN),y)
$(call cc-option-add,CFLAGS_UBSAN,CC,-fno-sanitize=alignment)
endif
+ifeq ($(CONFIG_LD_IS_GNU),y)
+# While not much better than going by raw GNU ld version, utilize that the
+# feature we're after has appeared in the same release as the
+# --print-output-format command line option.
+AFLAGS-$(call ld-option,--print-output-format) += -DHAVE_LD_SORT_BY_INIT_PRIORITY
+else
+# Assume all versions of LLD support this.
+AFLAGS += -DHAVE_LD_SORT_BY_INIT_PRIORITY
+endif
+
ifneq ($(CONFIG_PV_SHIM_EXCLUSIVE),y)
efi-check := arch/x86/efi/check
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -36,6 +36,10 @@ ENTRY(start_pa)
# define SECTION_ALIGN PAGE_SIZE
#endif
+#ifndef HAVE_LD_SORT_BY_INIT_PRIORITY
+# define SORT_BY_INIT_PRIORITY SORT
+#endif
+
OUTPUT_FORMAT(FORMAT, FORMAT, FORMAT)
OUTPUT_ARCH(i386:x86-64)
On Mon, May 02, 2022 at 09:09:46AM +0200, Jan Beulich wrote: > Support for this construct was added in 2.22 only. Avoid the need to > introduce logic to probe for linker script capabilities by (ab)using the > probe for a command line option having appeared at about the same time. > > Note that this remains x86-specific because Arm is unaffected, by > requiring GNU ld 2.24 or newer. > > Fixes: 4b7fd8153ddf ("x86: fold sections in final binaries") > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com> Thanks, Roger.
© 2016 - 2024 Red Hat, Inc.