Re: (alpha) process_reloc_for_got confuses r_offset and r_addend

From: Richard Henderson
Date: Tue Sep 06 2005 - 16:10:56 EST


This patch is correct.


r~

On Mon, Sep 05, 2005 at 02:42:36PM -0400, Chaskiel Grundman wrote:
> 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/
-
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/