RE: Kernel compiled with gcc-4.6+ fails to boot on ia64

Luck, Tony
2014-01-22T00:58:41Z

H.J.

Would the approach below help debug an issue with why ia64 kernel is completely[*]
broken with gcc-4.7.3, but works with gcc-4.5.4?

If not - do you have a better suggestion on how to narrow the scope of the
problem.

-Tony

[*] No output to serial console at all - not even with the ia64 early console enabled.

-----Original Message-----
From: Luck, Tony
Sent: Tuesday, January 21, 2014 4:54 PM
To: 'Dennis Schridde'
Cc: Yu, Fenghua; linux-ia64@vger.kernel.org
Subject: RE: Kernel compiled with gcc-4.6+ fails to boot on ia64

>> I'd start off with using the old compiler
>> for arch/ia64/kernel/* (perhaps arch/ia64/mm/* too) and the new
>> compiler for everything else.
>
> Thanks for your suggestion. How do I do that properly?
> I think the following will not work, because changing CC will cause
> arch/ia64/kernel to be rebuild, right?
> # make -C arch/ia64/kernel CC=gcc-4.7.3
> # make CC=gcc-4.5.4

yes - you'd have to fake Kbuild/make into thinking you were using the same compiler
all the time. I don't know if there is a "proper" way to do that. I'd do it by writing
a shell script "mycc" that in pseudo-code looks like:

---------
#!/bin/bash

USECC=gcc-4.7.3
# Look to see if we have a ".c" file argument on a special list
for i
do case "$i" in
*.c)
if grep -s "^$i$" ~/special
then
USECC=gcc4.5.4
fi
;;
esac
done

$USECC "$@"
----------

Then start with:
$ find arch/ia64/kernel arch/ia64/mm -name "*.c" > ~/special
$ make CC=mycc

[Warning: I've never tried anything like this]

> And what would you suggest to add after ia64/kernel and ia64/mm? I do
> not know much about the parts of the kernel that run at this early
> stage.

Not a clue. If My guess that the problem is in those arch specific files, then
you have a list of ~64 to play with ... bisection would get you to one (if just
one is the root of the problem) in six builds.

If I'm wrong ... well the full list of files built in a typical configuration
is a couple of thousand. So eleven builds.

If the problem is in a static inline" - well none of this will help :-(

-Tony