* 2.6.8-rc2-mm1 link errors
@ 2004-07-28 23:27 Dave Hansen
2004-07-28 23:49 ` Andrew Morton
0 siblings, 1 reply; 7+ messages in thread
From: Dave Hansen @ 2004-07-28 23:27 UTC (permalink / raw)
To: Linux Kernel Mailing List; +Cc: Andrew Morton
I'm getting some odd link errors from -rc2-mm1 that don't happen in
-rc1-mm1, or plain -rc2:
LD .tmp_vmlinux1
ldchk: .tmp_vmlinux1: final image has undefined symbols:
<bunch of blank lines>
make: *** [.tmp_vmlinux1] Error 1
Any ideas?
Linux elm3b82 2.6.0-test4-autokern1 #1 SMP Mon Sep 8 08:12:06 PDT 2003
i686 GNU/Linux
Gnu C 2.95.4
Gnu make 3.80
binutils 2.14.90.0.7
util-linux 2.12
mount 2.12
module-init-tools 3.1-pre5
e2fsprogs 1.35
PPP 2.4.2
Linux C Library 2.3.2
Dynamic linker (ldd) 2.3.2
Procps 3.2.1
Net-tools 1.60
Console-tools 0.2.3
Sh-utils 5.2.1
-- Dave
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.6.8-rc2-mm1 link errors
2004-07-28 23:27 2.6.8-rc2-mm1 link errors Dave Hansen
@ 2004-07-28 23:49 ` Andrew Morton
2004-07-29 0:00 ` Dave Hansen
2004-07-29 2:06 ` Dave Hansen
0 siblings, 2 replies; 7+ messages in thread
From: Andrew Morton @ 2004-07-28 23:49 UTC (permalink / raw)
To: Dave Hansen; +Cc: linux-kernel
Dave Hansen <haveblue@us.ibm.com> wrote:
>
> I'm getting some odd link errors from -rc2-mm1 that don't happen in
> -rc1-mm1, or plain -rc2:
>
> LD .tmp_vmlinux1
> ldchk: .tmp_vmlinux1: final image has undefined symbols:
>
>
> <bunch of blank lines>
>
>
> make: *** [.tmp_vmlinux1] Error 1
>
> Any ideas?
Nope. Could you take a look at the code in the top-level
Makefile which is doing this, work out why it broke?
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.6.8-rc2-mm1 link errors
2004-07-28 23:49 ` Andrew Morton
@ 2004-07-29 0:00 ` Dave Hansen
2004-07-29 2:06 ` Dave Hansen
1 sibling, 0 replies; 7+ messages in thread
From: Dave Hansen @ 2004-07-29 0:00 UTC (permalink / raw)
To: Andrew Morton; +Cc: Linux Kernel Mailing List, Russell King
On Wed, 2004-07-28 at 16:49, Andrew Morton wrote:
> Dave Hansen <haveblue@us.ibm.com> wrote:
> >
> > I'm getting some odd link errors from -rc2-mm1 that don't happen in
> > -rc1-mm1, or plain -rc2:
> >
> > LD .tmp_vmlinux1
> > ldchk: .tmp_vmlinux1: final image has undefined symbols:
> >
> >
> > <bunch of blank lines>
> >
> >
> > make: *** [.tmp_vmlinux1] Error 1
> >
> > Any ideas?
>
> Nope. Could you take a look at the code in the top-level
> Makefile which is doing this, work out why it broke?
Well, it's this patch. cc'ing Russell...
I'd tend to think it's a false-positive, not a real problem that's just
being detected now. Is the sed part of the patch borked?
-----
From: Russell King <rmk+lkml@arm.linux.org.uk>
The only issue with this is that, when a problem is detected, the
reported symbols will also include the Sparc64 register symbols.
Signed-off-by: Andrew Morton <akpm@osdl.org>
---
25-akpm/Makefile | 8 ++++++++
1 files changed, 8 insertions(+)
diff -puN Makefile~handle-undefined-symbols Makefile
--- 25/Makefile~handle-undefined-symbols 2004-07-26 23:24:30.552753872 -0700
+++ 25-akpm/Makefile 2004-07-26 23:24:30.556753264 -0700
@@ -525,6 +525,8 @@ endef
# set -e makes the rule exit immediately on error
+# Note: Ensure that there are no undefined symbols in the final
+# linked image. Not doing this can lead to silent link failures.
define rule_vmlinux__
+set -e; \
$(if $(filter .tmp_kallsyms%,$^),, \
@@ -536,6 +538,12 @@ define rule_vmlinux__
$(if $($(quiet)cmd_vmlinux__), \
echo ' $($(quiet)cmd_vmlinux__)' &&) \
$(cmd_vmlinux__); \
+ if $(OBJDUMP) --syms $@ | egrep -q '^([^R]|R[^E]|RE[^G])[^w]*\*UND\*'; then \
+ echo 'ldchk: $@: final image has undefined symbols:'; \
+ $(NM) $@ | sed 's/^ *U \(.*\)/ \1/p;d'; \
+ $(RM) -f $@; \
+ exit 1; \
+ fi; \
echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd
endef
_
-- Dave
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.6.8-rc2-mm1 link errors
2004-07-28 23:49 ` Andrew Morton
2004-07-29 0:00 ` Dave Hansen
@ 2004-07-29 2:06 ` Dave Hansen
2004-07-29 2:12 ` Matt Mackall
2004-07-29 21:07 ` Adrian Bunk
1 sibling, 2 replies; 7+ messages in thread
From: Dave Hansen @ 2004-07-29 2:06 UTC (permalink / raw)
To: Andrew Morton; +Cc: Linux Kernel Mailing List, Matt Mackall
[-- Attachment #1: Type: text/plain, Size: 1452 bytes --]
On Wed, 2004-07-28 at 16:49, Andrew Morton wrote:
> Nope. Could you take a look at the code in the top-level
> Makefile which is doing this, work out why it broke?
It seems to come down to this warning:
arch/i386/kernel/irq.c
{standard input}: Assembler messages:
{standard input}:3565: Warning: setting incorrect section type for
.bss.page_aligned
Which comes from this code in the 4k stacks code:
static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
Removing the __section__() fixes it, as does moving to gcc 3.2 or 3.3,
but gcc 2.95 and 3.0 still exhibit the problem. It seems the 4k stack
developers like newer compilers than I do :)
The gcc 2.95 section declaration looks like this:
.section .bss.page_aligned,"aw",@progbits
while the 3.1 section looks like this:
.section .bss.page_aligned,"aw",@nobits
It's definitely a bug that's been fixed:
http://sources.redhat.com/ml/binutils/2002-10/msg00507.html
I've been told that I can fix it with a carefully crafted assembly file
and maybe a change to the linker script, but all that it buys us is a
little space in the uncompressed kernel image. Plus, the warning will
still be there at compile-time.
I say, put them back in plain old BSS. Patch attached.
-- Dave
[-- Attachment #2: irqstacks-nosection-2.6.8-rc2-mm1-0.patch --]
[-- Type: text/x-patch, Size: 1018 bytes --]
diff -rup linux-2.6.8-rc2-mm1/arch/i386/kernel/irq.c linux-2.6.8-rc2-mm1-irqstackbss/arch/i386/kernel/irq.c
--- linux-2.6.8-rc2-mm1/arch/i386/kernel/irq.c 2004-07-28 18:10:40.000000000 -0700
+++ linux-2.6.8-rc2-mm1-irqstackbss/arch/i386/kernel/irq.c 2004-07-28 18:52:41.000000000 -0700
@@ -1118,8 +1118,12 @@ void init_irq_proc (void)
#ifdef CONFIG_4KSTACKS
-static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
-static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
+/*
+ * These should really be __section__(".bss.page_aligned") as well, but
+ * gcc's 3.0 and earlier don't handle that correctly.
+ */
+static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE)));
+static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE)));
/*
* allocate per-cpu stacks for hardirq and for softirq processing
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.6.8-rc2-mm1 link errors
2004-07-29 2:06 ` Dave Hansen
@ 2004-07-29 2:12 ` Matt Mackall
2004-07-29 2:25 ` Dave Hansen
2004-07-29 21:07 ` Adrian Bunk
1 sibling, 1 reply; 7+ messages in thread
From: Matt Mackall @ 2004-07-29 2:12 UTC (permalink / raw)
To: Dave Hansen; +Cc: Andrew Morton, Linux Kernel Mailing List
On Wed, Jul 28, 2004 at 07:06:13PM -0700, Dave Hansen wrote:
> On Wed, 2004-07-28 at 16:49, Andrew Morton wrote:
> > Nope. Could you take a look at the code in the top-level
> > Makefile which is doing this, work out why it broke?
>
> It seems to come down to this warning:
>
> arch/i386/kernel/irq.c
> {standard input}: Assembler messages:
> {standard input}:3565: Warning: setting incorrect section type for
> .bss.page_aligned
>
> Which comes from this code in the 4k stacks code:
>
> static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
> static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
>
> Removing the __section__() fixes it, as does moving to gcc 3.2 or 3.3,
> but gcc 2.95 and 3.0 still exhibit the problem. It seems the 4k stack
> developers like newer compilers than I do :)
>
> The gcc 2.95 section declaration looks like this:
> .section .bss.page_aligned,"aw",@progbits
> while the 3.1 section looks like this:
> .section .bss.page_aligned,"aw",@nobits
>
> It's definitely a bug that's been fixed:
> http://sources.redhat.com/ml/binutils/2002-10/msg00507.html
>
> I've been told that I can fix it with a carefully crafted assembly file
> and maybe a change to the linker script, but all that it buys us is a
> little space in the uncompressed kernel image. Plus, the warning will
> still be there at compile-time.
>
> I say, put them back in plain old BSS. Patch attached.
Frankly, I'd rather have the warning if it isn't breaking anything.
Or how about I throw some version conditional magic at it?
--
Mathematics is the supreme nostalgia of our time.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.6.8-rc2-mm1 link errors
2004-07-29 2:12 ` Matt Mackall
@ 2004-07-29 2:25 ` Dave Hansen
0 siblings, 0 replies; 7+ messages in thread
From: Dave Hansen @ 2004-07-29 2:25 UTC (permalink / raw)
To: Matt Mackall; +Cc: Andrew Morton, Linux Kernel Mailing List
On Wed, 2004-07-28 at 19:12, Matt Mackall wrote:
> On Wed, Jul 28, 2004 at 07:06:13PM -0700, Dave Hansen wrote:
> > I say, put them back in plain old BSS. Patch attached.
>
> Frankly, I'd rather have the warning if it isn't breaking anything.
I just worry that the warning is indicative of something more insidious
than triggering an error from a symbol checker script.
> Or how about I throw some version conditional magic at it?
I thought about including something in compiler-gcc*, but those files
are still pretty simple at this point, and I hate to add more gunk to
them. It doesn't seem quite worth it to me. But, if that's the way to
go, I can code it up.
-- Dave
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.6.8-rc2-mm1 link errors
2004-07-29 2:06 ` Dave Hansen
2004-07-29 2:12 ` Matt Mackall
@ 2004-07-29 21:07 ` Adrian Bunk
1 sibling, 0 replies; 7+ messages in thread
From: Adrian Bunk @ 2004-07-29 21:07 UTC (permalink / raw)
To: Dave Hansen; +Cc: Andrew Morton, Linux Kernel Mailing List, Matt Mackall
On Wed, Jul 28, 2004 at 07:06:13PM -0700, Dave Hansen wrote:
> On Wed, 2004-07-28 at 16:49, Andrew Morton wrote:
> > Nope. Could you take a look at the code in the top-level
> > Makefile which is doing this, work out why it broke?
>
> It seems to come down to this warning:
>
> arch/i386/kernel/irq.c
> {standard input}: Assembler messages:
> {standard input}:3565: Warning: setting incorrect section type for
> .bss.page_aligned
>
> Which comes from this code in the 4k stacks code:
>
> static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
> static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
>
> Removing the __section__() fixes it, as does moving to gcc 3.2 or 3.3,
> but gcc 2.95 and 3.0 still exhibit the problem. It seems the 4k stack
> developers like newer compilers than I do :)
>
> The gcc 2.95 section declaration looks like this:
> .section .bss.page_aligned,"aw",@progbits
> while the 3.1 section looks like this:
> .section .bss.page_aligned,"aw",@nobits
>
> It's definitely a bug that's been fixed:
> http://sources.redhat.com/ml/binutils/2002-10/msg00507.html
>
> I've been told that I can fix it with a carefully crafted assembly file
> and maybe a change to the linker script, but all that it buys us is a
> little space in the uncompressed kernel image. Plus, the warning will
> still be there at compile-time.
>
> I say, put them back in plain old BSS. Patch attached.
Thanks, your patch solves a problem with gcc 2.95 in my modular test
.comnfig I didn't have time to debug.
> -- Dave
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2004-07-29 21:13 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-28 23:27 2.6.8-rc2-mm1 link errors Dave Hansen
2004-07-28 23:49 ` Andrew Morton
2004-07-29 0:00 ` Dave Hansen
2004-07-29 2:06 ` Dave Hansen
2004-07-29 2:12 ` Matt Mackall
2004-07-29 2:25 ` Dave Hansen
2004-07-29 21:07 ` Adrian Bunk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox