!346 loongarch: Disable relaxation relocations
From: @vesta_admin Reviewed-by: @t_feng Signed-off-by: @t_feng
This commit is contained in:
commit
d8f6ba6c90
64
1008-loongarch-Disable-relaxation-relocations.patch
Normal file
64
1008-loongarch-Disable-relaxation-relocations.patch
Normal file
@ -0,0 +1,64 @@
|
||||
From 115c628cc44f89207858d0c79e970e43da75c772 Mon Sep 17 00:00:00 2001
|
||||
From: Yingkun Meng <mengyingkun@loongson.cn>
|
||||
Date: Tue, 5 Dec 2023 19:22:14 +0800
|
||||
Subject: [PATCH] loongarch: Disable relaxation relocations
|
||||
|
||||
commit 87247635c0d583cfbc1947107d23b40877d107b8 upstream.
|
||||
|
||||
A working GRUB cannot be built with upcoming binutils and GCC, because linker
|
||||
relaxation was added [1] causing new unsupported relocations to appear in modules.
|
||||
|
||||
So we pass -mno-relax to GCC if it is supported, to disable relaxation and make
|
||||
GRUB forward-compatible with new toolchains.
|
||||
|
||||
While similar code already exists for sparc64 in configure.ac, sparc64 sets
|
||||
LDFLAGS while LoongArch requires CFLAGS to be set. If we only set LDFLAGS on
|
||||
LoongArch, GCC will still generate relaxation relocations in the .o files, so
|
||||
the sparc64 code cannot be reused.
|
||||
|
||||
[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=56576f4a722b7398d35802ecf7d4185c27d6d69b
|
||||
|
||||
Signed-off-by: Xiaotian Wu <wuxiaotian@loongson.cn>
|
||||
Signed-off-by: Yingkun Meng <mengyingkun@loongson.cn>
|
||||
Change-Id: I09ef306dc8a0f8a59e9b7dbc53ae3fd3cc09ec55
|
||||
---
|
||||
configure.ac | 23 +++++++++++++++++++++++
|
||||
1 file changed, 23 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 0db9d7d111b8..e010bc0db465 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -908,6 +908,29 @@ if test "x$target_cpu" = xloongarch64; then
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -mno-explicit-relocs -fno-plt"
|
||||
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -mno-explicit-relocs -fno-plt"
|
||||
fi
|
||||
+
|
||||
+ AC_CACHE_CHECK([for no-relax options], grub_cv_target_cc_mno_relax, [
|
||||
+ grub_cv_target_cc_mno_relax=no
|
||||
+ for cand in "-mno-relax" "-Wa,-mno-relax"; do
|
||||
+ if test x"$grub_cv_target_cc_mno_relax" != xno ; then
|
||||
+ break
|
||||
+ fi
|
||||
+ CFLAGS="$TARGET_CFLAGS $cand -Werror"
|
||||
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
+ asm (".globl start; start:");
|
||||
+ void __main (void);
|
||||
+ void __main (void) {}
|
||||
+ int main (void);
|
||||
+ ]], [[]])], [grub_cv_target_cc_mno_relax="$cand"], [])
|
||||
+ done
|
||||
+ ])
|
||||
+ CFLAGS="$TARGET_CFLAGS"
|
||||
+
|
||||
+ if test x"$grub_cv_target_cc_mno_relax" != xno ; then
|
||||
+ TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_mno_relax"
|
||||
+ TARGET_CCASFLAGS="$TARGET_CCASFLAGS $grub_cv_target_cc_mno_relax"
|
||||
+ fi
|
||||
+
|
||||
TARGET_CFLAGS="$TARGET_CFLAGS -Wa,-mla-global-with-abs"
|
||||
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -Wa,-mla-global-with-abs"
|
||||
fi
|
||||
--
|
||||
2.33.0
|
||||
|
||||
27
grub.patches
27
grub.patches
@ -286,13 +286,9 @@ Patch0286: backport-font-Fix-an-integer-underflow-in-blit_comb.patch
|
||||
Patch0287: backport-font-Harden-grub_font_blit_glyph-and-grub_font_blit_.patch
|
||||
Patch0288: backport-font-Assign-null_font-to-glyphs-in-ascii_font_glyph.patch
|
||||
Patch0289: backport-normal-charset-Fix-an-integer-overflow-in-grub_unico.patch
|
||||
%ifarch loongarch64
|
||||
Patch0290: port-Add-LoongArch-support.patch
|
||||
%endif
|
||||
Patch0290: 1000-port-Add-LoongArch-support.patch
|
||||
Patch0291: disable-some-unsupported-filesystems.patch
|
||||
%ifarch loongarch64
|
||||
Patch0292: loongarch-Modify-the-location-where-initrd-is-loaded.patch
|
||||
%endif
|
||||
Patch0292: 1001-loongarch-Modify-the-location-where-initrd-is-loaded.patch
|
||||
Patch0293: backport-disk-diskfilter-Check-calloc-result-for-NULL.patch
|
||||
Patch0294: backport-kern-buffer-Handle-NULL-input-pointer-in-grub_buffer.patch
|
||||
Patch0295: backport-disk-diskfilter-Don-t-make-a-RAID-array-with-more-th.patch
|
||||
@ -304,16 +300,12 @@ Patch0300: backport-kern-file-Fix-error-handling-in-grub_file_open.patch
|
||||
Patch0301: backport-fs-xfs-Fix-memory-leaks-in-XFS-module.patch
|
||||
Patch0302: backport-fs-squash4-Fix-memory-leaks-in-grub_squash_iterate_d.patch
|
||||
Patch0303: backport-fs-iso9660-Fix-memory-leaks-in-grub_iso9660_susp_ite.patch
|
||||
%ifarch loongarch64
|
||||
Patch0304: loongarch-Add-EFI-frame-buffer-support.patch
|
||||
Patch0305: loongarch-Add-support-for-v4.0-interface.patch
|
||||
Patch0306: loongarch-Add-support-for-new-EFI-screen-info-GUID.patch
|
||||
%endif
|
||||
Patch0304: 1002-loongarch-Add-EFI-frame-buffer-support.patch
|
||||
Patch0305: 1003-loongarch-Add-support-for-v4.0-interface.patch
|
||||
Patch0306: 1004-loongarch-Add-support-for-new-EFI-screen-info-GUID.patch
|
||||
Patch0307: 0202-rpm-sort-add-prereqs-for-declaration-of-strchrnul.patch
|
||||
%ifarch loongarch64
|
||||
Patch0308: loongarch-Force-initrd-load-address-64KiB-alignment.patch
|
||||
Patch0309: loongarch-Implement-cache-synchronization-operation.patch
|
||||
%endif
|
||||
Patch0308: 1005-loongarch-Force-initrd-load-address-64KiB-alignment.patch
|
||||
Patch0309: 1006-loongarch-Implement-cache-synchronization-operation.patch
|
||||
Patch0310: backport-font-Check-return-value-of-grub_malloc-in-ascii_glyph_lookup.patch
|
||||
Patch0311: backport-font-Assign-null_font-to-unknown_glyph.patch
|
||||
Patch0312: backport-font-Reject-fonts-with-negative-max_char_width-or-max_char_height.patch
|
||||
@ -331,9 +323,7 @@ Patch0323: Revert-EFI-allocate-kernel-in-EFI_RUNTIME_SERVICES_C.patch
|
||||
Patch0324: backport-commands-acpi-Use-xsdt_addr-if-present.patch
|
||||
Patch0325: backport-kern-acpi-Use-xsdt_addr-if-present.patch
|
||||
Patch0326: remove-the-items-of-unsupported-filesystems-in-fs.ls.patch
|
||||
%ifarch loongarch64
|
||||
Patch0327: loongarch-Fix-the-initrd-parameter-passing.patch
|
||||
%endif
|
||||
Patch0327: 1007-loongarch-Fix-the-initrd-parameter-passing.patch
|
||||
Patch0328: backport-net-dns-Fix-removal-of-DNS-server.patch
|
||||
Patch0329: backport-net-dns-Simplify-error-handling-of-recv_hook-function.patch
|
||||
Patch0330: backport-net-dns-Fix-lookup-error-when-no-IPv6-is-returned.patch
|
||||
@ -352,3 +342,4 @@ Patch0342: backport-fs-ntfs-Fix-an-OOB-read-when-parsing-a-volume-label.patch
|
||||
Patch0343: backport-fs-ntfs-Make-code-more-readable.patch
|
||||
Patch0344: add-TPCM-support-with-ipmi-channel.patch
|
||||
Patch0345: skip-verification-when-not-loading-grub.cfg.patch
|
||||
Patch0346: 1008-loongarch-Disable-relaxation-relocations.patch
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
Name: grub2
|
||||
Epoch: 1
|
||||
Version: 2.06
|
||||
Release: 42
|
||||
Release: 43
|
||||
Summary: Bootloader with support for Linux, Multiboot and more
|
||||
License: GPLv3+
|
||||
URL: http://www.gnu.org/software/grub/
|
||||
@ -448,6 +448,12 @@ fi
|
||||
%{_datadir}/man/man*
|
||||
|
||||
%changelog
|
||||
* Mon Dec 25 2023 mengyingkun <mengyingkun@loongson.cn> - 1:2.06-43
|
||||
- Type:requirement
|
||||
- CVE:NA
|
||||
- SUG:NA
|
||||
- DESC:loongarch: Disable relaxation relocations
|
||||
|
||||
* Wed Dec 20 2023 zhangqiumiao <zhangqiumiao1@huawei.com> - 1:2.06-42
|
||||
- Type:requirement
|
||||
- CVE:NA
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user