2004-03-05 14:27:34

by Herbert Poetzl

[permalink] [raw]
Subject: binutils 2.15.90.0.1 break ia64 kernel crosscompiling


Hi Folks!

upgraded my Cross Compiling Toolchain[1] to binutils 2.15.90.0.1,
recompiled gcc 3.3.3 (just to make sure), and now linux 2.6.3
doesn't compile for ia64 anymore ...

here is th funny part of the complete error log[2]

------------------------------------------------------------------
{standard input}: Assembler messages:
{standard input}:1268: Internal error!
Assertion failure in md_assemble at config/tc-ia64.c line 10013.
Please report this bug.
------------------------------------------------------------------

so we are now down from 6 to 5 of 20 archs which compile 2.6.3
with default config, will soon try with 2.6.4-rc*

linux-2.6.3 linux-2.4.25
config build config dep kernel modules

alpha/alpha: OK OK OK OK OK OK
arm/arm: FAILED FAILED OK OK FAILED FAILED
cris/cris: FAILED FAILED OK FAILED FAILED FAILED
hppa/parisc: OK FAILED OK OK FAILED FAILED
hppa64/parisc: OK FAILED OK OK FAILED FAILED
i386/i386: OK OK OK OK OK OK
ia64/ia64: OK FAILED OK OK FAILED FAILED
m68k/m68k: OK FAILED OK OK OK OK
mips/mips: OK FAILED OK OK FAILED FAILED
mips64/mips: OK FAILED OK OK FAILED FAILED
ppc/ppc: OK FAILED OK OK OK OK
ppc64/ppc64: OK OK OK FAILED FAILED OK
s390/s390: OK FAILED OK OK FAILED FAILED
s390x/s390: OK FAILED OK OK OK OK
sh/sh: OK FAILED OK FAILED FAILED
sh64/sh: OK FAILED OK OK FAILED FAILED
sparc/sparc: OK FAILED OK OK FAILED FAILED
sparc64/sparc64: OK OK OK OK OK OK
v850/v850: FAILED FAILED FAILED FAILED FAILED FAILED
x86_64/x86_64: OK OK OK OK OK OK


best,
Herbert

[1] http://vserver.13thfloor.at/Stuff/Cross/
[2] http://vserver.13thfloor.at/Stuff/Cross/LOGS-2.6.3-gcc3.3.3-binutils2.15.90.0.1/ia64-build.err


2004-03-05 14:53:00

by Pascal Schmidt

[permalink] [raw]
Subject: Re: binutils 2.15.90.0.1 break ia64 kernel crosscompiling

On Fri, 05 Mar 2004 15:40:09 +0100, you wrote in linux.kernel:

> upgraded my Cross Compiling Toolchain[1] to binutils 2.15.90.0.1,

Experimental binutils release...

> here is th funny part of the complete error log[2]
>
> ------------------------------------------------------------------
> {standard input}: Assembler messages:
> {standard input}:1268: Internal error!
> Assertion failure in md_assemble at config/tc-ia64.c line 10013.
> Please report this bug.
> ------------------------------------------------------------------

binutils bug. Report to them.

--
Ciao,
Pascal

2004-03-05 16:51:01

by H. J. Lu

[permalink] [raw]
Subject: Re: binutils 2.15.90.0.1 break ia64 kernel crosscompiling

I will make a new release to fix it.


H.J.
---
On Fri, Mar 05, 2004 at 03:27:25PM +0100, Herbert Poetzl wrote:
>
> Hi Folks!
>
> upgraded my Cross Compiling Toolchain[1] to binutils 2.15.90.0.1,
> recompiled gcc 3.3.3 (just to make sure), and now linux 2.6.3
> doesn't compile for ia64 anymore ...
>
> here is th funny part of the complete error log[2]
>
> ------------------------------------------------------------------
> {standard input}: Assembler messages:
> {standard input}:1268: Internal error!
> Assertion failure in md_assemble at config/tc-ia64.c line 10013.
> Please report this bug.
> ------------------------------------------------------------------
>
> so we are now down from 6 to 5 of 20 archs which compile 2.6.3
> with default config, will soon try with 2.6.4-rc*
>
> linux-2.6.3 linux-2.4.25
> config build config dep kernel modules
>
> alpha/alpha: OK OK OK OK OK OK
> arm/arm: FAILED FAILED OK OK FAILED FAILED
> cris/cris: FAILED FAILED OK FAILED FAILED FAILED
> hppa/parisc: OK FAILED OK OK FAILED FAILED
> hppa64/parisc: OK FAILED OK OK FAILED FAILED
> i386/i386: OK OK OK OK OK OK
> ia64/ia64: OK FAILED OK OK FAILED FAILED
> m68k/m68k: OK FAILED OK OK OK OK
> mips/mips: OK FAILED OK OK FAILED FAILED
> mips64/mips: OK FAILED OK OK FAILED FAILED
> ppc/ppc: OK FAILED OK OK OK OK
> ppc64/ppc64: OK OK OK FAILED FAILED OK
> s390/s390: OK FAILED OK OK FAILED FAILED
> s390x/s390: OK FAILED OK OK OK OK
> sh/sh: OK FAILED OK FAILED FAILED
> sh64/sh: OK FAILED OK OK FAILED FAILED
> sparc/sparc: OK FAILED OK OK FAILED FAILED
> sparc64/sparc64: OK OK OK OK OK OK
> v850/v850: FAILED FAILED FAILED FAILED FAILED FAILED
> x86_64/x86_64: OK OK OK OK OK OK
>
>
> best,
> Herbert
>
> [1] http://vserver.13thfloor.at/Stuff/Cross/
> [2] http://vserver.13thfloor.at/Stuff/Cross/LOGS-2.6.3-gcc3.3.3-binutils2.15.90.0.1/ia64-build.err

2004-03-05 17:09:00

by H. J. Lu

[permalink] [raw]
Subject: Re: binutils 2.15.90.0.1 break ia64 kernel crosscompiling

On Fri, Mar 05, 2004 at 03:27:25PM +0100, Herbert Poetzl wrote:
>
> Hi Folks!
>
> upgraded my Cross Compiling Toolchain[1] to binutils 2.15.90.0.1,
> recompiled gcc 3.3.3 (just to make sure), and now linux 2.6.3
> doesn't compile for ia64 anymore ...
>
> here is th funny part of the complete error log[2]
>
> ------------------------------------------------------------------
> {standard input}: Assembler messages:
> {standard input}:1268: Internal error!
> Assertion failure in md_assemble at config/tc-ia64.c line 10013.
> Please report this bug.
> ------------------------------------------------------------------
>
> so we are now down from 6 to 5 of 20 archs which compile 2.6.3
> with default config, will soon try with 2.6.4-rc*
>

I checked in this patch. Please test it as much as you can on ia64.


H.J.
----
2004-03-04 H.J. Lu <[email protected]>

* config/tc-ia64.c (md_assemble): Properly handle NULL
align_frag.
(ia64_handle_align): Don't abort if failed to add a stop bit.

--- gas/config/tc-ia64.c.align 2004-03-03 11:49:14.000000000 -0800
+++ gas/config/tc-ia64.c 2004-03-04 15:19:37.000000000 -0800
@@ -10010,9 +10010,12 @@ md_assemble (str)
while (align_frag->fr_type != rs_align_code)
{
align_frag = align_frag->fr_next;
- assert (align_frag);
+ if (!align_frag)
+ break;
}
- if (align_frag->fr_next == frag_now)
+ /* align_frag can be NULL if there are directives in
+ between. */
+ if (align_frag && align_frag->fr_next == frag_now)
align_frag->tc_frag_data = 1;
}

@@ -10872,8 +10875,16 @@ ia64_handle_align (fragp)
if (!bytes && fragp->tc_frag_data)
{
if (fragp->fr_fix < 16)
+#if 1
+ /* FIXME: It won't work with
+ .align 16
+ alloc r32=ar.pfs,1,2,4,0
+ */
+ ;
+#else
as_bad_where (fragp->fr_file, fragp->fr_line,
_("Can't add stop bit to mark end of instruction group"));
+#endif
else
/* Bundles are always in little-endian byte order. Make sure
the previous bundle has the stop bit. */