]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
openrisc: Add R_OR1K_32_PCREL relocation type module support
authorchenmiao <chenmiao.ku@gmail.com>
Fri, 5 Sep 2025 18:12:56 +0000 (18:12 +0000)
committerStafford Horne <shorne@gmail.com>
Thu, 11 Sep 2025 10:27:59 +0000 (11:27 +0100)
To ensure the proper functioning of the jump_label test module, this patch
adds support for the R_OR1K_32_PCREL relocation type for any modules. The
implementation calculates the PC-relative offset by subtracting the
instruction location from the target value and stores the result at the
specified location.

Signed-off-by: chenmiao <chenmiao.ku@gmail.com>
Signed-off-by: Stafford Horne <shorne@gmail.com>
arch/openrisc/kernel/module.c

index c9ff4c4a0b29ba01ffd75515ab60d890eede1d7a..4ac4fbaa827c1a4546a0588127587ab2ee522925 100644 (file)
@@ -55,6 +55,10 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
                        value |= *location & 0xfc000000;
                        *location = value;
                        break;
+               case R_OR1K_32_PCREL:
+                       value -= (uint32_t)location;
+                       *location = value;
+                       break;
                case R_OR1K_AHI16:
                        /* Adjust the operand to match with a signed LO16.  */
                        value += 0x8000;