!346 loongarch: Disable relaxation relocations

From: @vesta_admin 
Reviewed-by: @t_feng 
Signed-off-by: @t_feng
This commit is contained in:
openeuler-ci-bot 2023-12-28 01:54:40 +00:00 committed by Gitee
commit d8f6ba6c90
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
11 changed files with 80 additions and 19 deletions

View 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

View File

@ -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

View File

@ -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