mirror of
				https://git.tukaani.org/xz.git
				synced 2025-10-31 05:22:55 +00:00 
			
		
		
		
	Add ifunc check to configure.ac
configure.ac will now verify if __attribute__((__ifunc__())) can be used in the build system. If so, HAVE_FUNC_ATTRIBUTE_IFUNC will be defined to 1.
This commit is contained in:
		
							parent
							
								
									dbb3a536ed
								
							
						
					
					
						commit
						23b5c36fb7
					
				
							
								
								
									
										28
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								configure.ac
									
									
									
									
									
								
							| @ -859,8 +859,36 @@ AC_COMPILE_IFELSE([ | ||||
| ], [ | ||||
| 	AC_MSG_RESULT([no]) | ||||
| ]) | ||||
| 
 | ||||
| CFLAGS="$OLD_CFLAGS" | ||||
| 
 | ||||
| # __attribute__((__ifunc__())) can be used for one-time initializations, | ||||
| # similar to __attribute__((__constructor__)). | ||||
| AC_ARG_ENABLE([ifunc], [AS_HELP_STRING([--disable-ifunc], | ||||
| 		[do not use __attribute__((__ifunc__()))])], | ||||
| 	[], [enable_ifunc=yes]) | ||||
| 
 | ||||
| if test "x$enable_ifunc" = xyes ; then | ||||
| 	OLD_CFLAGS="$CFLAGS" | ||||
| 	CFLAGS="$CFLAGS -Werror" | ||||
| 	AC_MSG_CHECKING([if __attribute__((__ifunc__())) can be used]) | ||||
| 	AC_COMPILE_IFELSE([ | ||||
| 		static void func(void) { return; } | ||||
| 		static void (*resolve_func (void)) (void) { return func; } | ||||
| 		void func_ifunc (void) | ||||
| 				__attribute__ ((__ifunc__ ("resolve_func"))); | ||||
| 	], [ | ||||
| 		AC_DEFINE([HAVE_FUNC_ATTRIBUTE_IFUNC], [1], | ||||
| 			[Define to 1 if __attribute__((__ifunc__())) | ||||
| 			is supported for functions.]) | ||||
| 		AC_MSG_RESULT([yes]) | ||||
| 	], [ | ||||
| 		AC_MSG_RESULT([no]) | ||||
| 	]) | ||||
| 
 | ||||
| 	CFLAGS="$OLD_CFLAGS" | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
| ############################################################################### | ||||
| # Checks for library functions. | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user