在 2023-06-13星期二的 11:25 +0800,mengqinggang写道: > 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. >
Check "-mno-relax" and "-Wl,--no-relax" in order, if "-mno-relax" is valid, then LDFLAGS="$LDFLAGS -mno-relax"; if "-Wl,--no-relax" is valid, then LDFLAGS="$LDFLAGS -Wl,--no-relax", otherwise report an error. The full code is here: https://github.com/loongarch64/grub/blob/dev-master/configure.ac#L976-L1000 Using binutils 2.40, the LDFLAGS value displayed in the Makefile is as follows, without "-mno-relax" in it: TARGET_LDFLAGS = "-Wl,--no-relax -no-pie -Wl,--build-id=none" > 在 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(-) > > > > > -- Best Regards Xiaotian Wu _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel