Because binutils2.42 corrects the implementation of ".align [abs-expr,[abs-expr[,abs-expr]]]". The macro ASM_OUTPUT_ALIGN_WITH_NOP in GCC uses this assembler directive, and an error occurs. See link below for detailed description. https://gcc.gnu.org/pipermail/gcc-patches/2024-February/645067.html
In order to solve the above problems, do the following operations: 1. Delete macro definition ASM_OUTPUT_ALIGN_WITH_NOP. (cherry pick r14-4674) 2. Check whether binutils supports the relax function. (cherry pick r14-4160) 3. Disable relaxation if the assembler don't support conditional branch relaxation. (cherry pick r14-5434) PR112299 is also fixed here. Lulu Cheng (2): LoongArch: Delete macro definition ASM_OUTPUT_ALIGN_WITH_NOP. LoongArch: Check whether binutils supports the relax function. If supported, explicit relocs are turned off by default. Xi Ruoyao (2): LoongArch: Disable relaxation if the assembler don't support conditional branch relaxation [PR112330] LoongArch: Define HAVE_AS_TLS to 0 if it's undefined [PR112299] gcc/config.in | 18 +++++ gcc/config/loongarch/genopts/loongarch.opt.in | 9 +++ gcc/config/loongarch/gnu-user.h | 4 +- gcc/config/loongarch/loongarch-opts.h | 12 ++++ gcc/config/loongarch/loongarch.h | 22 +++++-- gcc/config/loongarch/loongarch.opt | 9 +++ gcc/configure | 66 +++++++++++++++++++ gcc/configure.ac | 14 ++++ gcc/doc/invoke.texi | 24 ++++++- 9 files changed, 169 insertions(+), 9 deletions(-) -- 2.39.3