Le 12/01/2017 à 19:07, Segher Boessenkool a écrit :
On Thu, Jan 12, 2017 at 09:20:47AM -0600, Benjamin Herrenschmidt wrote:
On Thu, 2017-01-12 at 15:42 +0100, Christophe LEROY wrote:
The 4.6.3 uses __stack_chk_guard, while the 4.4.4 and 4.8.3 use
Is it dependent on the way GCC is built ? Then do we have a way to
when we compile, which method GCC will use ?
See details below for each of the 3 GCC versions.
I think it depends if you built it along with glibc (so it can produce
userspace binaries) or not.
Right. Tony's compilers are built using a (modified version of) buildall,
and buildall goes out of its way to build without libc whatsoever, even
if the configuration (powerpc64-linux, for example) expects one.
Which leads to TARGET_LIBC_PROVIDES_SSP being undefined (it would normally
be true for glibc >= 2.4), and that is all. Mystery solved. Thanks!
Is there a way to know during compilation how the compiler will behave,
in order to select the correct method ?
I have drafted a new approach in the kernel that uses -0x7008(r2)
instead of the global __stack_chk_guard, but how can I select the proper
approach during kernel compilation in line with the selected GCC ?