mirror of git://sourceware.org/git/glibc.git
				
				
				
			
		
			
				
	
	
		
			40 lines
		
	
	
		
			530 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			530 B
		
	
	
	
		
			C
		
	
	
	
#include <stdio.h>
 | 
						|
 | 
						|
#include <tls.h>
 | 
						|
 | 
						|
#include "tls-macros.h"
 | 
						|
 | 
						|
extern int in_dso (int n, int *caller_foop);
 | 
						|
 | 
						|
COMMON_INT_DEF(comm_n);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
int
 | 
						|
in_dso2 (void)
 | 
						|
{
 | 
						|
  int *foop;
 | 
						|
  int result = 0;
 | 
						|
  static int n;
 | 
						|
  int *np;
 | 
						|
 | 
						|
  puts ("foo");			/* Make sure PLT is used before macros.  */
 | 
						|
  asm ("" ::: "memory");
 | 
						|
 | 
						|
  foop = TLS_GD (foo);
 | 
						|
  np = TLS_GD (comm_n);
 | 
						|
 | 
						|
  if (n != *np)
 | 
						|
    {
 | 
						|
      printf ("n = %d != comm_n = %d\n", n, *np);
 | 
						|
      result = 1;
 | 
						|
    }
 | 
						|
 | 
						|
  result |= in_dso (*foop = 42 + n++, foop);
 | 
						|
 | 
						|
  *foop = 16;
 | 
						|
 | 
						|
  return result;
 | 
						|
}
 |