provide __stack_chk_fail_local in libc.a
authorRich Felker <dalias@aerifal.cx>
Sat, 20 Jun 2015 03:01:07 +0000 (03:01 +0000)
committerRich Felker <dalias@aerifal.cx>
Sat, 20 Jun 2015 03:01:07 +0000 (03:01 +0000)
this symbol is needed only on archs where the PLT call ABI is klunky,
and only for position-independent code compiled with stack protector.
thus references usually only appear in shared libraries or PIE
executables, but they can also appear when linking statically if some
of the object files being linked were built as PIC/PIE.

normally libssp_nonshared.a from the compiler toolchain should provide
__stack_chk_fail_local, but reportedly it appears prior to -lc in the
link order, thus failing to satisfy references from libc itself (which
arise only if libc.a was built as PIC/PIE with stack protector
enabled).

src/env/__stack_chk_fail.c

index 47784c62383d66df4ca9a3f337b4b953c6193c3f..be0c184a635d5571471bef081a4f7d6f6e1e115d 100644 (file)
@@ -25,4 +25,8 @@ void __stack_chk_fail_local(void)
        a_crash();
 }
 
+#else
+
+weak_alias(__stack_chk_fail, __stack_chk_fail_local);
+
 #endif