[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#397139: ftbfs alpha + ia64

Steve Langasek <vorlon@debian.org> writes:

> On Sun, Nov 05, 2006 at 01:56:28PM +0100, maximilian attems wrote:
>> {standard input}:372: Error: macro requires $at register while noat in effect
>> make[5]: *** [arch/alpha/kernel/core_cia.o] Error 1
>> make[4]: *** [arch/alpha/kernel] Error 2
> Taking a look at the assembler output for core_cia, this is due to use of
> the ldbu, ldwu, stb, and stw instructions in asm-alpha/compiler.h, which are
> instructions specific to ev56 and above.  They are also guarded in the
> source by an #if !defined(__alpha_bwx__).  It looks like the difference is
> in the assembler between gcc-4.0 and gcc-4.1; specifically, gcc-4.1 emits a
> '.arch ev5' directive, where gcc-4.0 does not.

I made a patch against gcc to suppress gcc outputting .arch directives
that don't do anything useful except triggering this error, and it
went in in 4.1.1ds2-17. Unfortunately, I thought an .ev4 directive
would be the problem, while it seems to be .ev5. This updated patch
instead of alpha-no-ev4-directive.patch should help:

--- gcc/config/alpha/alpha.c.orig	2006-11-06 09:59:12.000000000 +0100
+++ gcc/config/alpha/alpha.c	2006-11-06 09:59:06.000000000 +0100
@@ -9353,7 +9353,7 @@
     fputs ("\t.set nomacro\n", asm_out_file);
-      const char *arch;
+      const char *arch = NULL;
       if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX)
 	arch = "ev6";
@@ -9361,12 +9361,9 @@
 	arch = "pca56";
       else if (TARGET_BWX)
 	arch = "ev56";
-      else if (alpha_cpu == PROCESSOR_EV5)
-	arch = "ev5";
-      else
-	arch = "ev4";
-      fprintf (asm_out_file, "\t.arch %s\n", arch);
+      if (arch)
+        fprintf (asm_out_file, "\t.arch %s\n", arch);

> Since the errors from the assembler really indicate that these instructions
> are not supported by the ev5 (gcc-4.0 has the same problem assembling the
> gcc-4.1 output as gcc-4.1 itself does, due to the .arch ev5 declaration),
> and this kernel code hasn't changed recently that I see, it seems to be the
> case that ev5 processors are already unsupported by the current kernel in
> etch.  Given that no one has complained about this to date (at least that
> I'm aware of), is it time to explicitly bump the baseline on alpha to ev56
> for etch?

I'm not opposed to this, in fact I was planning to suggest this for
etch+1. However, this particular problem should be reasonably easy to
fix, so if anybody speaks up for ev5, we should give it a try...


Reply to: