Is this patch used to check if ld supports --no-relax option?
It need to pass -mno-relax option to as or gcc to disable binutils
generate relaxation relocations.
在 2023/6/13 上午10:37, Xiaotian Wu 写道:
New patch is ready:
https://github.com/loongarch64/grub/commits/dev-master
I need your help to confirm that binutils-2.40 and binutils-dev code
have the same behavior when using compile options, thanks.
在 2023-06-12星期一的 06:35 +0800,Xi Ruoyao via Grub-devel写道:
On Wed, 2023-06-07 at 15:34 +0800, Xiaotian Wu wrote:
Because the binutils of the loongarch architecture adds relaxation
support [1], the next version of binutils will not be able to build
grub.
So we added the R_LARCH_B16, R_LARCH_B21 and R_LARCH_RELAX
relocations
to enhance grub compatibility.
Wouldn't it be easier to just pass -mno-relax to the toolchain when
we
build GRUB? I don't think it makes too much sense to perform
relaxation
on a boot loader. The boot loader is generally the coldest code
paths
in a system, so relaxing it won't give any real benefit (well, if you
reboot a system 100 times you may finally save one second), but
increases the maintenance burden.
Consider a new relaxation pattern is added after we release GRUB
2.12.
Then if we simply pass -mno-relax, GRUB 2.12 will continue to work.
But
if we try to "support" relaxation this way, every distro will have to
patch GRUB 2.12 when the toolchain is updated.
[1]:
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=56576f4a722b7398d35802ecf7d4185c27d6d69b
v1->v2:
- split patch
- drop cast code
Xiaotian Wu (5):
Use the correct format specifier for formatted output
loongarch: Optimize code using pc variable
loongarch: Rename function names
loongarch: Add ELF relocation types documentation and comments
loongarch: Add relaxation support
grub-core/kern/arm64/dl_helper.c | 4 +-
grub-core/kern/loongarch64/dl.c | 21 +++++++-
grub-core/kern/loongarch64/dl_helper.c | 72
++++++++++++++++++++++++-
-
include/grub/elf.h | 3 ++
include/grub/loongarch64/reloc.h | 6 ++-
util/grub-mkimagexx.c | 28 ++++++++--
util/grub-module-verifier.c | 3 ++
7 files changed, 124 insertions(+), 13 deletions(-)
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel