Messages in this thread | | | Date | Wed, 22 Sep 1999 08:41:19 -0400 (EDT) | From | "Richard B. Johnson" <> | Subject | Re: Possible GCC contamination of Linux |
| |
On Wed, 22 Sep 1999, Artur Skawina wrote:
> > > > a patch which adds -fno-builtins to the Makefile and makes the abs() work. > > > So you can compile a i386 or i486 kernel with a 'C' compiler that was > > built on a i686 machine. It took me a week to find the reason why > > a kernel, configured to run on a 486 (or even 386) would crash on > > the boot of a 486. > > > The only built-in I found used was abs(). It was the '486 killer. > > the builtin abs() was a known issue, but I assumed it was harmless. > Are you saying gcc generates 686 instructions (cmov i guess) even > when configured for a 486? I'd like to reproduce this -- which gcc > version, cflags, file? Does '-march=i486' (or ..=i386) solve this? > Do you have the offending abs dissassembly?
The machine does 'Uncompressing Linux', 'Booting...' Screen-flash crash reboot. There is no way in hell I can find the instruction(s) causing the problem(s).
As previously posted, I compiled the kernel with both the machine and architecture defines for both 386 and 486 with (of course) the .config set for a '386 with no coprocessor (math emulation).
The code generated would boot if the code was compiled with the same compiler (gcc-2.8.1) compiled on a '486. It would not boot if the complier was built on my '686.
> code generated for the builtin vs proper define (ie one which can > take args w/ side effects (the one i saw posted didn't)). >
The one posted has enough ()'s to take args with side effects. There is only one input variable.
Cheers, Dick Johnson **** FILE SYSTEM WAS MODIFIED **** Penguin : Linux version 2.3.13 on an i686 machine (400.59 BogoMips). Warning : It's hard to remain at the trailing edge of technology.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |