Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 592570c9 authored by Helge Deller's avatar Helge Deller
Browse files

parisc: Handle R_PARISC_PCREL32 relocations in kernel modules



Commit 0de79858 (parisc: Use generic extable search and sort routines)
changed the exception tables to use 32bit relative offsets.

This patch now adds support to the kernel module loader to handle such
R_PARISC_PCREL32 relocations for 32- and 64-bit modules.

Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 3c968887
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -660,6 +660,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs,
			}
			*loc = (*loc & ~0x3ff1ffd) | reassemble_22(val);
			break;
		case R_PARISC_PCREL32:
			/* 32-bit PC relative address */
			*loc = val - dot - 8 + addend;
			break;

		default:
			printk(KERN_ERR "module %s: Unknown relocation: %u\n",
@@ -788,6 +792,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs,
			CHECK_RELOC(val, 22);
			*loc = (*loc & ~0x3ff1ffd) | reassemble_22(val);
			break;
		case R_PARISC_PCREL32:
			/* 32-bit PC relative address */
			*loc = val - dot - 8 + addend;
			break;
		case R_PARISC_DIR64:
			/* 64-bit effective address */
			*loc64 = val + addend;