modpost: Ignore relaxation and alignment marker relocs on LoongArch
authorWANG Xuerui <git@xen0n.name>
Wed, 17 Jan 2024 04:42:59 +0000 (12:42 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Wed, 17 Jan 2024 04:42:59 +0000 (12:42 +0800)
commit2772ae4d66d17c6a8b4c167ddb660fc8d7972da5
tree0fc145c97b716eb12a12e859041717570a1e4475
parent0dd3ee31125508cd67f7e7172247f05b7fd1753a
modpost: Ignore relaxation and alignment marker relocs on LoongArch

With recent trunk versions of binutils and gcc, alignment directives are
represented with R_LARCH_ALIGN relocs on LoongArch, which is necessary
for the linker to maintain alignment requirements during its relaxation
passes. And even though the kernel is built with relaxation disabled, so
far a small number of R_LARCH_RELAX marker relocs are still emitted as
part of la.* pseudo instructions in assembly. These two kinds of relocs
do not refer to symbols, which can trip up modpost's section mismatch
checks, because the r_offset of said relocs can be zero or any other
meaningless value, eventually leading to a `from == NULL` condition in
default_mismatch_handler and SIGSEGV.

As the two kinds of relocs are not concerned with symbols, just ignore
them for section mismatch check purposes.

Signed-off-by: WANG Xuerui <git@xen0n.name>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
scripts/mod/modpost.c