| 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 | asm ( "memmove = __GI_memmove"); | 
|---|
| 5 | asm ( "memset = __GI_memset"); | 
|---|
| 6 | asm ( "memcpy = __GI_memcpy"); | 
|---|
| 7 |  | 
|---|
| 8 | /* Some targets do not use __stack_chk_fail_local.  In libc.so, | 
|---|
| 9 | redirect __stack_chk_fail to a hidden reference | 
|---|
| 10 | __stack_chk_fail_local, to avoid the PLT reference. | 
|---|
| 11 | __stack_chk_fail itself is a global symbol, exported from libc.so, | 
|---|
| 12 | and cannot be made hidden.  */ | 
|---|
| 13 |  | 
|---|
| 14 | # if IS_IN (libc) && defined SHARED \ | 
|---|
| 15 | && defined STACK_PROTECTOR_LEVEL && STACK_PROTECTOR_LEVEL > 0 | 
|---|
| 16 | asm ( ".hidden __stack_chk_fail_local\n" | 
|---|
| 17 | "__stack_chk_fail = __stack_chk_fail_local"); | 
|---|
| 18 | # endif | 
|---|
| 19 | #endif | 
|---|
| 20 |  | 
|---|