Odp: Re: AlphaCore 2.0 vs. AlphaServer 4100

Michal Jaegermann michal at ellpspace.math.ualberta.ca
Fri Mar 24 23:46:28 UTC 2006


On Fri, Mar 24, 2006 at 06:27:24PM -0500, Jay Estabrook wrote:
> On Fri, Mar 24, 2006 at 04:19:39PM -0700, Michal Jaegermann wrote:
> 
> > Another old change which could be relevant was also for kernel/module.c
> > but if you see there the following comment:
> > 
> >      /* Skip relocations on non-allocated (ie. debug) sections */
> 
> This one is NOT in there.

In that case here is an attached a _really_ old posting from Rusty
Russell.  I cannot tell now if still applicable.

   Michal
-------------- next part --------------
Date: Tue, 30 Dec 2003 14:57:36 +1100
From: Rusty Russell <rusty at rustcorp.com.au>
To: Richard Henderson <rth at twiddle.net>
Cc: linux-kernel at vger.kernel.org, Nathan Poznick <kraken at drunkmonkey.org>
Subject: Re: [PATCH] Handle R_ALPHA_REFLONG relocation on Alpha
 (2.6.0-test11)
Message-Id: <20031230145736.4ce0ff59.rusty at rustcorp.com.au>
In-Reply-To: <20031218010203.GA13385 at twiddle.net>
References: <20031213003841.GA5213 at wang-fu.org>
	<20031217121010.GA11062 at twiddle.net>
	<20031217193124.GA4837 at wang-fu.org>
	<20031218010203.GA13385 at twiddle.net>
X-Mailer: Sylpheed version 0.9.7 (GTK+ 1.2.10; i386-pc-linux-gnu)
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender: linux-kernel-owner at vger.kernel.org
Precedence: bulk
Status: RO
Content-Length: 2494
Lines: 54

On Wed, 17 Dec 2003 17:02:03 -0800
Richard Henderson <rth at twiddle.net> wrote:

> On Wed, Dec 17, 2003 at 01:31:24PM -0600, Nathan Poznick wrote:
> > my next question is if this is a known/intended side effect -- enabling
> > CONFIG_DEBUG_INFO means that modules cannot be used?
> 
> No.  This means there's a bug in the generic bits of the module
> loaders, that they're not discarding debugging sections.

Ah, my bad.  We suck in the whole module, then copy SHF_ALLOC sections,
then apply relocations.  We don't skip relocations on sections which
haven't been copied.

This patch works for me: Nathan, does it solve your problem?
Rusty.
-- 
   there are those who do and those who hang on and you don't see too
   many doers quoting their contemporaries.  -- Larry McVoy

Name: Don't Apply Relocations To Sections We Haven't Copied
Author: Rusty Russell
Status: Tested on 2.6.0-bk1

D: The module code applies every relocation section given.  Obviously, if
D: the section has not been copied into the module, there's no point.
D: In particular, Alpha has relocs which are only used on debug sections,
D: so they don't load with CONFIG_DEBUG_INFO enabled.

diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .2481-linux-2.6.0-bk1/kernel/module.c .2481-linux-2.6.0-bk1.updated/kernel/module.c
--- .2481-linux-2.6.0-bk1/kernel/module.c	2003-11-24 15:42:33.000000000 +1100
+++ .2481-linux-2.6.0-bk1.updated/kernel/module.c	2003-12-30 14:08:40.000000000 +1100
@@ -1618,9 +1618,13 @@ static struct module *load_module(void _
 	/* Now do relocations. */
 	for (i = 1; i < hdr->e_shnum; i++) {
 		const char *strtab = (char *)sechdrs[strindex].sh_addr;
-		if (sechdrs[i].sh_type == SHT_REL)
-			err = apply_relocate(sechdrs, strtab, symindex, i,mod);
-		else if (sechdrs[i].sh_type == SHT_RELA)
+
+		/* Skip relocations on non-allocated (ie. debug) sections */
+		if (sechdrs[i].sh_type == SHT_REL
+		    && (sechdrs[sechdrs[i].sh_info].sh_flags & SHF_ALLOC))
+			err = apply_relocate(sechdrs, strtab, symindex,i, mod);
+		else if (sechdrs[i].sh_type == SHT_RELA
+			 && (sechdrs[sechdrs[i].sh_info].sh_flags & SHF_ALLOC))
 			err = apply_relocate_add(sechdrs, strtab, symindex, i,
 						 mod);
 		if (err < 0)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



More information about the axp-list mailing list