[PATCH] Handle R_ALPHA_REFLONG relocation on Alpha (2.6.0-test11)

From: Nathan Poznick
Date: Fri Dec 12 2003 - 19:40:11 EST



First off, I'm not positive that this patch is correct or not, but I'd
like to pick the brains of people in the know, to find if I'm
approaching this in the right way.

I've been unable to use modules on my Alpha with 2.6.0-test*. modprobe
(from module-init-tools 0.9.15-pre3) would claim an invalid module
format, and the kernel would tell me "Unknown relocation: 1" Relocation
1 on Alpha is R_ALPHA_REFLONG, and sure enough, readelf -r on one of the
modules showed many, many uses of it. From looking at
arch/alpha/kernel/module.c, it appeared that while R_ALPHA_REFQUAD was
handled, R_ALPHA_REFLONG was not. R_ALPHA_REFQUAD's handling looked
simple enough, so I made the change which is inlined below.

Is this the proper way to handle this? After making this change, I've
been able to use modules without any problems.


--- linux-2.6.0-test11/arch/alpha/kernel/module.c 2003-12-12 18:19:27.000000000 -0600
+++ linux-2.6.0-test11.new/arch/alpha/kernel/module.c 2003-12-12 18:32:51.000000000 -0600
@@ -198,6 +198,9 @@
switch (r_type) {
case R_ALPHA_NONE:
break;
+ case R_ALPHA_REFLONG:
+ *(u32 *)location = value;
+ break;
case R_ALPHA_REFQUAD:
/* BUG() can produce misaligned relocations. */
((u32 *)location)[0] = value;



--
Nathan Poznick <kraken@xxxxxxxxxxxxxxx>

"So many times you've given me comfort and forgetfulness." --Frank
Herbert, Dune

Attachment: signature.asc
Description: Digital signature