mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-31 22:10:34 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			35 lines
		
	
	
		
			533 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			533 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| 
 | |
| #include "tls-macros.h"
 | |
| 
 | |
| 
 | |
| COMMON_INT_DEF(foo);
 | |
| 
 | |
| 
 | |
| int
 | |
| in_dso (int n, int *caller_foop)
 | |
| {
 | |
|   int *foop;
 | |
|   int result = 0;
 | |
| 
 | |
|   puts ("foo");			/* Make sure PLT is used before macros.  */
 | |
|   asm ("" ::: "memory");
 | |
| 
 | |
|   foop = TLS_GD (foo);
 | |
| 
 | |
|   if (caller_foop != NULL && foop != caller_foop)
 | |
|     {
 | |
|       printf ("callers address of foo differs: %p vs %p\n", caller_foop, foop);
 | |
|       result = 1;
 | |
|     }
 | |
|   else if (*foop != n)
 | |
|     {
 | |
|       printf ("foo != %d\n", n);
 | |
|       result = 1;
 | |
|     }
 | |
| 
 | |
|   *foop = 16;
 | |
| 
 | |
|   return result;
 | |
| }
 |