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(-) > -- Xi Ruoyao <xry...@xry111.site> School of Aerospace Science and Technology, Xidian University _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel