mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-30 10:45:40 +03:00 
			
		
		
		
	The 2008 edition of POSIX removed h_errno, but some functions still bring in references to the h_errno external symbol. As this symbol is not a part of the public ABI (only __h_errno_location is), this patch fixes this by renaming the GLIBC_PRIVATE TLS symbol to __h_errno. Tested for x86_64 and x86 (testsuite, and comparison of installed shared libraries). Disassembly of all shared libraries using h_errno changes because of the renaming (and changes to associated TLS / GOT offsets in some cases); disassembly of libpthread on x86_64 changes more substantially because the enlargement of .dynsym affects subsequent addresses. [BZ #18520] * inet/herrno.c (h_errno): Rename to __h_errno. (__libc_h_errno): Define as alias of __h_errno not h_errno. * include/netdb.h [IS_IN_LIB && !IS_IN (libc)] (h_errno): Define to __h_errno instead of h_errno. * nptl/herrno.c (h_errno): Rename to __h_errno. (__h_errno_location): Refer to __h_errno not h_errno. * resolv/Versions (h_errno): Rename to __h_errno. * conform/Makefile (test-xfail-XOPEN2K8/grp.h/linknamespace): Remove variable. (test-xfail-XOPEN2K8/pwd.h/linknamespace): Likewise.
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| libc {
 | |
|   GLIBC_2.0 {
 | |
|     _res;
 | |
| 
 | |
|     # helper functions
 | |
|     __h_errno_location;
 | |
| 
 | |
|     # functions used in other libraries
 | |
|     __res_randomid;
 | |
| 
 | |
|     # variables in normal name space
 | |
|     h_errlist; h_nerr;
 | |
| 
 | |
|     # h*
 | |
|     herror; hstrerror;
 | |
| 
 | |
|     # r*
 | |
|     res_init;
 | |
|   }
 | |
|   GLIBC_2.2 {
 | |
|     # r*
 | |
|     __res_state; __res_init; __res_nclose; __res_ninit; _res_hconf;
 | |
|   }
 | |
|   GLIBC_PRIVATE {
 | |
|     __gai_sigqueue;
 | |
| 
 | |
|     __h_errno; __resp;
 | |
| 
 | |
|     __res_maybe_init; __res_iclose;
 | |
|   }
 | |
| }
 | |
| 
 | |
| libresolv {
 | |
|   GLIBC_2.0 {
 | |
|     _gethtbyaddr; _gethtbyname; _gethtbyname2; _gethtent; _getlong;
 | |
|     _getshort; _res_opcodes; _res_resultcodes; _sethtent; dn_expand;
 | |
|     inet_net_ntop; inet_net_pton; inet_neta; res_gethostbyaddr;
 | |
|     res_gethostbyname; res_gethostbyname2; res_mkquery; res_query;
 | |
|     res_querydomain; res_search; res_send_setqhook; res_send_setrhook;
 | |
|     # Variables
 | |
|     __p_class_syms; __p_type_syms;
 | |
|     # Private routines shared between libc/net, named, nslookup and others.
 | |
|     __b64_ntop; __b64_pton;
 | |
|     __dn_comp;  __dn_count_labels; __dn_skipname;
 | |
|     __fp_nquery; __fp_query; __fp_resstat; __hostalias;
 | |
|     __loc_aton; __loc_ntoa;
 | |
|     __p_cdname; __p_cdnname; __p_class; __p_fqname; __p_fqnname; __p_option;
 | |
|     __p_query; __p_rr; __p_secstodate; __p_time; __p_type;
 | |
|     __putlong; __putshort;
 | |
|     __res_close; __res_dnok; __res_hnok; __res_isourserver; __res_mailok;
 | |
|     __res_nameinquery; __res_ownok; __res_queriesmatch;
 | |
|     __res_send;
 | |
|     __sym_ntop; __sym_ntos; __sym_ston;
 | |
|   }
 | |
|   GLIBC_2.2 {
 | |
|     __dn_expand;
 | |
|     __res_hostalias; __res_mkquery; __res_nmkquery; __res_nquery;
 | |
|     __res_nquerydomain; __res_nsearch; __res_nsend; __res_query;
 | |
|     __res_querydomain; __res_search;
 | |
|   }
 | |
|   GLIBC_2.3.2 {
 | |
|     __p_rcode;
 | |
|   }
 | |
|   GLIBC_2.9 {
 | |
|     ns_msg_getflag;
 | |
|     ns_get16; ns_get32; ns_put16; ns_put32;
 | |
|     ns_initparse; ns_skiprr; ns_parserr;
 | |
|     ns_sprintrr; ns_sprintrrf;
 | |
|     ns_format_ttl; ns_parse_ttl;
 | |
|     ns_datetosecs;
 | |
|     ns_name_ntol; ns_name_ntop; ns_name_pton;
 | |
|     ns_name_unpack; ns_name_pack;
 | |
|     ns_name_uncompress; ns_name_compress;
 | |
|     ns_name_skip; ns_name_rollback;
 | |
|     ns_samedomain; ns_subdomain; ns_makecanon; ns_samename;
 | |
|   }
 | |
|   GLIBC_PRIVATE {
 | |
|     # Needed in libnss_dns.
 | |
|     __ns_name_unpack; __ns_name_ntop;
 | |
|     __ns_get16; __ns_get32;
 | |
|     __libc_res_nquery; __libc_res_nsearch;
 | |
|   }
 | |
| }
 | |
| 
 | |
| libnss_dns {
 | |
|   GLIBC_PRIVATE {
 | |
|     _nss_dns_gethostbyaddr_r; _nss_dns_gethostbyname2_r;
 | |
|     _nss_dns_gethostbyname3_r;
 | |
|     _nss_dns_gethostbyname_r; _nss_dns_getnetbyaddr_r;
 | |
|     _nss_dns_getnetbyname_r; _nss_dns_getcanonname_r;
 | |
|     _nss_dns_gethostbyaddr2_r;
 | |
|     _nss_dns_gethostbyname4_r;
 | |
|   }
 | |
| }
 | |
| 
 | |
| libanl {
 | |
|   GLIBC_2.2.3 {
 | |
|     gai_cancel; gai_error; gai_suspend; getaddrinfo_a;
 | |
|   }
 | |
| }
 |