Like gcc44 before it, gcc47 is complaining about the hidden symbol of
__stack_chk_fail_local. This patch swildner added to gcc44 will fix the
issue, but it is a bit of a hack. A true fix may end up touching libc,
rtld, and other bits. The original code is supposd to conserve a PIC
register.
Note that vendor-built GCCs on FreeBSD exhibit the same behavior and as
a consequence only the patched base compiler can be used to build certain
ports.
This hack should be fixed properly as soon as convenient.
The following files have been patched:
==============================================================
gcc/c-family/c-format.c
+gcc/config/i386/i386.c
gcc/gcc.c
gcc/ginclude/stddef.h
gcc/tree-inline.c
static tree ATTRIBUTE_UNUSED
ix86_stack_protect_fail (void)
{
+#if 0 /* Still broken -- affects FreeBSD too */
return TARGET_64BIT
? default_external_stack_protect_fail ()
: default_hidden_stack_protect_fail ();
+#else
+ return default_external_stack_protect_fail ();
+#endif
}
/* Select a format to encode pointers in exception handling data. CODE