2008-02-16 23:48:34

by Rob Landley

[permalink] [raw]
Subject: Compiling with 2.6.25-rc2 with binutils 2.17 fails?

Is anybody else having trouble compiling the kernel with binutils 2.17?

The build does this:
> VDSOSYM arch/x86/vdso/vdso32-syms.lds
> --- - Fri Feb 15 23:38:41 2008
> +++ arch/x86/vdso/vdso32-int80-syms.lds Fri Feb 15 23:38:41 2008
> @@ -0,0 +1,5 @@
> +VDSO32_PRELINK = 0x0;
> +VDSO32_rt_sigreturn = 0x040c;
> +VDSO32_sigreturn = 0x0400;
> +VDSO32_vsyscall = 0x0414;
> +VDSO32_vsyscall_eh_frame_size = 0x040;
> make[1]: *** [arch/x86/vdso/vdso32-syms.lds] Error 1
> make: *** [arch/x86/vdso] Error 2
> make: *** Waiting for unfinished jobs....

Still trying to track down why, but it works on a toolchain built from
binutils 2.18 and gcc 4.1.3, but not with a toolchain from binutils 2.17 and
gcc 4.1.2. And considering where it's failing...

If binutils 2.18 is the only version that now builds the kernel, could we
update Documentaiton/Changes to say that instead of 2.12?

Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.


2008-02-17 00:04:37

by Jan Engelhardt

[permalink] [raw]
Subject: Re: Compiling with 2.6.25-rc2 with binutils 2.17 fails?


On Feb 16 2008 17:27, Rob Landley wrote:
>The build does this:
>> VDSOSYM arch/x86/vdso/vdso32-syms.lds
>> --- - Fri Feb 15 23:38:41 2008
>> +++ arch/x86/vdso/vdso32-int80-syms.lds Fri Feb 15 23:38:41 2008
>> @@ -0,0 +1,5 @@
>> +VDSO32_PRELINK = 0x0;
>> +VDSO32_rt_sigreturn = 0x040c;
>> +VDSO32_sigreturn = 0x0400;
>> +VDSO32_vsyscall = 0x0414;
>> +VDSO32_vsyscall_eh_frame_size = 0x040;
>> make[1]: *** [arch/x86/vdso/vdso32-syms.lds] Error 1
>> make: *** [arch/x86/vdso] Error 2
>> make: *** Waiting for unfinished jobs....
>
>Still trying to track down why, but it works on a toolchain built from
>binutils 2.18 and gcc 4.1.3, but not with a toolchain from binutils 2.17 and
>gcc 4.1.2. And considering where it's failing...
>
>If binutils 2.18 is the only version that now builds the kernel, could we
>update Documentaiton/Changes to say that instead of 2.12?

I have, as part of opensuse, binutils 2.17.50 and gcc 4.2.1 and that
works fine.

2008-02-18 03:09:23

by Roland McGrath

[permalink] [raw]
Subject: Re: Compiling with 2.6.25-rc2 with binutils 2.17 fails?

> Still trying to track down why, but it works on a toolchain built from
> binutils 2.18 and gcc 4.1.3, but not with a toolchain from binutils 2.17 and
> gcc 4.1.2. And considering where it's failing...

I don't think the vdso magic should require so new a binutils. Please try
to figure out which of the steps is producing different results between the
two tool setups.


Thanks,
Roland

2008-02-18 10:39:53

by Rob Landley

[permalink] [raw]
Subject: Re: Compiling with 2.6.25-rc2 with binutils 2.17 fails?

On Sunday 17 February 2008 21:09:10 Roland McGrath wrote:
> > Still trying to track down why, but it works on a toolchain built from
> > binutils 2.18 and gcc 4.1.3, but not with a toolchain from binutils 2.17
> > and gcc 4.1.2. And considering where it's failing...
>
> I don't think the vdso magic should require so new a binutils. Please try
> to figure out which of the steps is producing different results between the
> two tool setups.

I'm poking at it. Something in my cross compiling setup is driving this bit
screwy:

i686-nm arch/x86/vdso/vdso32-sysenter.so.dbg |
sed -n -e 's/^00*/0/' -e 's/^\([0-9a-fA-F]*\) . \(VDSO[a-zA-Z0-9_]*\)$/ =
0x;/p' | LC_ALL=C sort > arch/x86/vdso/vdso32-sysenter-syms.lds
if LC_ALL=C sort -u arch/x86/vdso/vdso32-int80-syms.lds
arch/x86/vdso/vdso32-sysenter-syms.lds > arch/x86/vdso/.tmp_vdso32-syms.lds
&& if grep -q VDSO32_SYSENTER_RETURN arch/x86/vdso/vdso32-int80-syms.lds;
then diff -u arch/x86/vdso/.tmp_vdso32-syms.lds
arch/x86/vdso/vdso32-int80-syms.lds; else sed /VDSO32_SYSENTER_RETURN/d
arch/x86/vdso/.tmp_vdso32-syms.lds | diff -u -
arch/x86/vdso/vdso32-int80-syms.lds; fi && if grep -q VDSO32_SYSENTER_RETURN
arch/x86/vdso/vdso32-sysenter-syms.lds; then diff -u
arch/x86/vdso/.tmp_vdso32-syms.lds arch/x86/vdso/vdso32-sysenter-syms.lds;
else sed /VDSO32_SYSENTER_RETURN/d arch/x86/vdso/.tmp_vdso32-syms.lds |
diff -u - arch/x86/vdso/vdso32-sysenter-syms.lds; fi && : ; then mv -f
arch/x86/vdso/.tmp_vdso32-syms.lds arch/x86/vdso/vdso32-syms.lds; else rm -f
arch/x86/vdso/.tmp_vdso32-syms.lds; exit 1; fi
--- - Sun Feb 17 20:24:03 2008
+++ arch/x86/vdso/vdso32-int80-syms.lds Sun Feb 17 20:24:03 2008
@@ -0,0 +1,5 @@
+VDSO32_PRELINK = 0x0;
+VDSO32_rt_sigreturn = 0x040c;
+VDSO32_sigreturn = 0x0400;
+VDSO32_vsyscall = 0x0414;
+VDSO32_vsyscall_eh_frame_size = 0x040;
make[1]: *** [arch/x86/vdso/vdso32-syms.lds] Error 1
make: *** [arch/x86/vdso] Error 2

If binutils is involved, it's due to i686-nm...

I'm still trying to puzzle out the "if thing && thing &&:; then" syntax above.
Never encountered that one before... A colon? I'll try to bang on it some
more tomorrow, it's gone 4am on me...

> Thanks,
> Roland

Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.

2008-02-18 18:40:57

by Roland McGrath

[permalink] [raw]
Subject: Re: Compiling with 2.6.25-rc2 with binutils 2.17 fails?

> I'm poking at it. Something in my cross compiling setup is driving this bit
> screwy:
>
> i686-nm arch/x86/vdso/vdso32-sysenter.so.dbg |

Show me the output of just this.

> sed -n -e 's/^00*/0/' -e 's/^\([0-9a-fA-F]*\) . \(VDSO[a-zA-Z0-9_]*\)$/ =
> 0x;/p' | LC_ALL=C sort > arch/x86/vdso/vdso32-sysenter-syms.lds

Also show me the vdso32-sysenter-syms.lds file.


Thanks,
Roland

2008-02-18 21:53:19

by Rob Landley

[permalink] [raw]
Subject: Re: Compiling with 2.6.25-rc2 with binutils 2.17 fails?

On Monday 18 February 2008 12:40:37 Roland McGrath wrote:
> > I'm poking at it. Something in my cross compiling setup is driving this
> > bit screwy:
> >
> > i686-nm arch/x86/vdso/vdso32-sysenter.so.dbg |
>
> Show me the output of just this.

Attached.

> > sed -n -e 's/^00*/0/' -e 's/^\([0-9a-fA-F]*\) . \(VDSO[a-zA-Z0-9_]*\)$/ =
> > 0x;/p' | LC_ALL=C sort > arch/x86/vdso/vdso32-sysenter-syms.lds
>
> Also show me the vdso32-sysenter-syms.lds file.

Attached.

Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.


Attachments:
(No filename) (564.00 B)
nm-out.txt (449.00 B)
vdso32-sysenter-syms.lds (177.00 B)
Download all attachments

2008-02-18 22:26:56

by Roland McGrath

[permalink] [raw]
Subject: Re: Compiling with 2.6.25-rc2 with binutils 2.17 fails?

> > > sed -n -e 's/^00*/0/' -e 's/^\([0-9a-fA-F]*\) . \(VDSO[a-zA-Z0-9_]*\)$/ =
> > > 0x;/p' | LC_ALL=C sort > arch/x86/vdso/vdso32-sysenter-syms.lds
> >
> > Also show me the vdso32-sysenter-syms.lds file.
>
> Attached.

The contents of this file are fine. If all the vdso32-*-syms.lds files
look sane, then your problem is just with the shell commands (cmd_vdso32sym)
that compare them.


Thanks,
Roland