aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Cree <mcree@orcon.net.nz>2017-06-23 21:37:02 -0400
committerMatt Turner <mattst88@gmail.com>2017-08-29 15:01:52 -0400
commit4f61e0781b701f5eb4f0e186d361c4104659001e (patch)
treeb5853021e64b291a156c8599aa54ffb6c0796118
parent4606f68faff1b16734f9379937fc49ae289d4c6e (diff)
alpha: support R_ALPHA_REFLONG relocations for module loading
Since commit 71810db27c1c853b33 (modversions: treat symbol CRCs as 32 bit quantities) R_ALPHA_REFLONG relocations can be required to load modules. This implements it. Tested-by: Bob Tracy <rct@gherkin.frus.com> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Michael Cree <mcree@orcon.net.nz> Signed-off-by: Matt Turner <mattst88@gmail.com>
-rw-r--r--arch/alpha/kernel/module.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/alpha/kernel/module.c b/arch/alpha/kernel/module.c
index 936bc8f89a67..47632fa8c24e 100644
--- a/arch/alpha/kernel/module.c
+++ b/arch/alpha/kernel/module.c
@@ -181,6 +181,9 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab,
181 switch (r_type) { 181 switch (r_type) {
182 case R_ALPHA_NONE: 182 case R_ALPHA_NONE:
183 break; 183 break;
184 case R_ALPHA_REFLONG:
185 *(u32 *)location = value;
186 break;
184 case R_ALPHA_REFQUAD: 187 case R_ALPHA_REFQUAD:
185 /* BUG() can produce misaligned relocations. */ 188 /* BUG() can produce misaligned relocations. */
186 ((u32 *)location)[0] = value; 189 ((u32 *)location)[0] = value;