mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	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
 |