1 | /* Some compiler optimizations may transform loops into memset/memmove |
2 | calls and without proper declaration it may generate PLT calls. */ |
3 | #if !defined __ASSEMBLER__ && IS_IN (libc) && defined SHARED \ |
4 | && !defined LIBC_NONSHARED |
5 | asm ("memmove = __GI_memmove" ); |
6 | asm ("memset = __GI_memset" ); |
7 | asm ("memcpy = __GI_memcpy" ); |
8 | |
9 | /* Some targets do not use __stack_chk_fail_local. In libc.so, |
10 | redirect __stack_chk_fail to a hidden reference |
11 | __stack_chk_fail_local, to avoid the PLT reference. |
12 | __stack_chk_fail itself is a global symbol, exported from libc.so, |
13 | and cannot be made hidden. */ |
14 | |
15 | # if IS_IN (libc) && defined SHARED \ |
16 | && defined STACK_PROTECTOR_LEVEL && STACK_PROTECTOR_LEVEL > 0 |
17 | asm (".hidden __stack_chk_fail_local\n" |
18 | "__stack_chk_fail = __stack_chk_fail_local" ); |
19 | # endif |
20 | #endif |
21 | |