Re: (alpha) process_reloc_for_got confuses r_offset and r_addend

From: Chaskiel Grundman
Date: Mon Sep 05 2005 - 13:43:01 EST


On Mon, 5 Sep 2005, Jesper Juhl wrote:
> Why not post the patch you made for review as well?

In part because if the analysis is wrong, then the patch surely is.

but mostly because I didn't want to post my message with the bland subject
that the faq recommends for patches.

--- linux-2.6.12.5/arch/alpha/kernel/module.c 2005-08-14 20:20:18.000000000 -0400
+++ linux/arch/alpha/kernel/module.c 2005-09-05 12:38:43.000000000 -0400
@@ -47,7 +47,7 @@

struct got_entry {
struct got_entry *next;
- Elf64_Addr r_offset;
+ Elf64_Sxword r_addend;
int got_offset;
};

@@ -57,14 +57,14 @@
{
unsigned long r_sym = ELF64_R_SYM (rela->r_info);
unsigned long r_type = ELF64_R_TYPE (rela->r_info);
- Elf64_Addr r_offset = rela->r_offset;
+ Elf64_Sxword r_addend = rela->r_addend;
struct got_entry *g;

if (r_type != R_ALPHA_LITERAL)
return;

for (g = chains + r_sym; g ; g = g->next)
- if (g->r_offset == r_offset) {
+ if (g->r_addend == r_addend) {
if (g->got_offset == 0) {
g->got_offset = *poffset;
*poffset += 8;
@@ -74,7 +74,7 @@

g = kmalloc (sizeof (*g), GFP_KERNEL);
g->next = chains[r_sym].next;
- g->r_offset = r_offset;
+ g->r_addend = r_addend;
g->got_offset = *poffset;
*poffset += 8;
chains[r_sym].next = g;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/