524a8ef2ad
Add a hidden __stack_chk_fail_local alias to libc.so, and make sure that on targets which use __stack_chk_fail, this does not introduce a local PLT reference into libc.so.
20 lines
779 B
C
20 lines
779 B
C
/* Some compiler optimizations may transform loops into memset/memmove
|
|
calls and without proper declaration it may generate PLT calls. */
|
|
#if !defined __ASSEMBLER__ && IS_IN (libc) && defined SHARED
|
|
asm ("memmove = __GI_memmove");
|
|
asm ("memset = __GI_memset");
|
|
asm ("memcpy = __GI_memcpy");
|
|
|
|
/* Some targets do not use __stack_chk_fail_local. In libc.so,
|
|
redirect __stack_chk_fail to a hidden reference
|
|
__stack_chk_fail_local, to avoid the PLT reference.
|
|
__stack_chk_fail itself is a global symbol, exported from libc.so,
|
|
and cannot be made hidden. */
|
|
|
|
# if IS_IN (libc) && defined SHARED && \
|
|
defined STACK_PROTECTOR_LEVEL && STACK_PROTECTOR_LEVEL > 0
|
|
asm (".hidden __stack_chk_fail_local\n"
|
|
"__stack_chk_fail = __stack_chk_fail_local");
|
|
# endif
|
|
#endif
|