|
From: | Mikulas Patocka |
Subject: | Re: heap corruption in du |
Date: | Mon, 24 Oct 2005 16:01:09 +0200 (CEST) |
On Mon, 24 Oct 2005, Paul Eggert wrote:
Mikulas Patocka <address@hidden> writes:The compilation gets a bit further with the patch, but it still doesn't work --- this time it is problem of intel compiler --- it can't extract its intercode from *.a files.The Intel compiler mishandles static libraries? That sounds like a real compatiblity issue all right.
That's lame. Intel C version 8 had switch -ipo-obj that causes it to generate both intercode and legacy machinecode into *.o files --- with this switch, coreutils can be compiled (however it's a bit suboptimal, because it uses machinecode from *.a files, not intercode). Intel C 9 removed "-ipo-obj" switch, making it impossible to use Inter-procedural optimizations in projects that pack object files into "*.a"
You can modify libtool so that when it is creating static library and compiler is "icc" or "icpc" (or "some/path/icc" or "some/path/icpc"), it passes it -no-ipo switch. (dynamic libraries work fine with -ipo).But coreutils does not use libtool, no? So this wouldn't fix the problem.
I see.If you want to solve it in some way (detect intel compiler and pass it -no-ipo when creating object files that will be packed into "*.a"), you can, if you don't want, you don't have to.
Perhaps this issue would need to be taken up with the libtool folks, but that should go to bug-libtool.
Mikulas
[Prev in Thread] | Current Thread | [Next in Thread] |