mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-30 10:45:40 +03:00 
			
		
		
		
	Among other localplt test failures when building with -Os, there are libc.so PLT references for argz_next and __argz_next. This is a simple case of functions that are inlined for -O2 but not for -Os; this patch adds libc_hidden_proto / libc_hidden_def for them to avoid localplt failures even when not inlined. Tested for x86_64 (both that it removes these particular localplt failures for -Os - but other such failures remain so the bug can't yet be closed - and that the testsuite continues to pass without -Os). [BZ #15105] * include/argz.h (argz_next): Use libc_hidden_proto. (__argz_next): Likewise. * string-argz-next.c (__argz_next): Use libc_hidden_def. (argz_next): Use libc_hidden_weak.
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ARGZ_H
 | |
| 
 | |
| #include <string/argz.h>
 | |
| 
 | |
| # ifndef _ISOMAC
 | |
| 
 | |
| extern error_t __argz_create_sep (const char *__restrict __string,
 | |
| 				  int __sep, char **__restrict __argz,
 | |
| 				  size_t *__restrict __len)
 | |
|      __THROW attribute_hidden;
 | |
| extern error_t __argz_append (char **__restrict __argz,
 | |
| 			      size_t *__restrict __argz_len,
 | |
| 			      const char *__restrict __buf, size_t __buf_len)
 | |
|      __THROW attribute_hidden;
 | |
| extern error_t __argz_add (char **__restrict __argz,
 | |
| 			   size_t *__restrict __argz_len,
 | |
| 			   const char *__restrict __str)
 | |
|      __THROW attribute_hidden;
 | |
| extern error_t __argz_add_sep (char **__restrict __argz,
 | |
| 			       size_t *__restrict __argz_len,
 | |
| 			       const char *__restrict __string, int __delim)
 | |
|      __THROW attribute_hidden;
 | |
| extern void __argz_delete (char **__restrict __argz,
 | |
| 			   size_t *__restrict __argz_len,
 | |
| 			   char *__restrict __entry)
 | |
|      __THROW attribute_hidden;
 | |
| extern error_t __argz_insert (char **__restrict __argz,
 | |
| 			      size_t *__restrict __argz_len,
 | |
| 			      char *__restrict __before,
 | |
| 			      const char *__restrict __entry)
 | |
|      __THROW attribute_hidden;
 | |
| extern error_t __argz_replace (char **__restrict __argz,
 | |
| 			       size_t *__restrict __argz_len,
 | |
| 			       const char *__restrict __str,
 | |
| 			       const char *__restrict __with,
 | |
| 			       unsigned int *__restrict __replace_count)
 | |
|      attribute_hidden;
 | |
| 
 | |
| libc_hidden_proto (argz_delete)
 | |
| libc_hidden_proto (__argz_count)
 | |
| libc_hidden_proto (__argz_stringify)
 | |
| libc_hidden_proto (argz_next)
 | |
| libc_hidden_proto (__argz_next)
 | |
| 
 | |
| # endif /* !_ISOMAC */
 | |
| #endif
 |