mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-31 22:10:34 +03:00 
			
		
		
		
	Extending linknamespace tests to cover libcrypt showed that crypt brings in references to snprintf, but is in XPG3 and XPG4 which don't have snprintf. This patch fixes it to use __snprintf instead, exporting __snprintf from libc.so at version GLIBC_PRIVATE and adding libc_hidden_proto / libc_hidden_def accordingly. Tested for x86_64 and x86, in conjunction with the testsuite changes to enable linknamespace testing for libdl and libcrypt. Also tested (compilation only) for powerpc to make sure there were no problem interactions with the optional-long-double handling for snprintf. [BZ #20829] * stdio-common/Versions (__snprintf): Add to version GLIBC_PRIVATE. * include/stdio.h (__snprintf): Use libc_hidden_proto. * stdio-common/snprintf.c (__snprintf): Use libc_hidden_def. * crypt/sha256-crypt.c (__sha256_crypt_r): Use __snprintf instead of snprintf. * crypt/sha512-crypt.c (__sha512_crypt_r): Likewise.
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| libc {
 | |
|   GLIBC_2.0 {
 | |
|     # global variables
 | |
|     _sys_errlist; _sys_nerr; _sys_siglist;
 | |
| 
 | |
|     # functions used in other libraries
 | |
|     __printf_fp; __vfscanf;
 | |
| 
 | |
|     # variables in normal name space
 | |
|     sys_errlist; sys_nerr; sys_sigabbrev; sys_siglist;
 | |
| 
 | |
|     # a*
 | |
|     asprintf;
 | |
| 
 | |
|     # c*
 | |
|     ctermid; cuserid;
 | |
| 
 | |
|     # d*
 | |
|     dprintf;
 | |
| 
 | |
|     # f*
 | |
|     flockfile; fprintf; fscanf; ftrylockfile; funlockfile;
 | |
| 
 | |
|     # g*
 | |
|     getline; getw;
 | |
| 
 | |
|     # p*
 | |
|     parse_printf_format; perror; printf; putw;
 | |
| 
 | |
|     # r*
 | |
|     register_printf_function; remove; rename;
 | |
| 
 | |
|     # s*
 | |
|     scanf; snprintf; sprintf; sscanf;
 | |
| 
 | |
|     # t*
 | |
|     tempnam; tmpfile; tmpnam; tmpnam_r;
 | |
| 
 | |
|     # v*
 | |
|     vfprintf; vfscanf; vprintf;
 | |
|   }
 | |
|   GLIBC_2.1 {
 | |
|     # p*
 | |
|     printf_size; printf_size_info;
 | |
| 
 | |
|     # t*
 | |
|     tmpfile; tmpfile64;
 | |
|   }
 | |
|   GLIBC_2.4 {
 | |
|     renameat;
 | |
|   }
 | |
|   GLIBC_2.7 {
 | |
|     __isoc99_scanf; __isoc99_vscanf; __isoc99_fscanf; __isoc99_vfscanf;
 | |
|     __isoc99_sscanf; __isoc99_vsscanf;
 | |
|   }
 | |
|   GLIBC_2.10 {
 | |
|     psiginfo;
 | |
|     register_printf_modifier; register_printf_type; register_printf_specifier;
 | |
|   }
 | |
|   GLIBC_PRIVATE {
 | |
|     # global variables
 | |
|     _itoa_lower_digits;
 | |
|     # Used in libcrypt.
 | |
|     __snprintf;
 | |
|   }
 | |
| }
 |