mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-30 10:45:40 +03:00 
			
		
		
		
	Some symbols have to be identified process-wide by their name. This is particularly important for some C++ features (e.g., class local static data and static variables in inline functions). This cannot completely be implemented with ELF functionality so far. The STB_GNU_UNIQUE binding helps by ensuring the dynamic linker will always use the same definition for all symbols with the same name and this binding.
		
			
				
	
	
		
			33 lines
		
	
	
		
			532 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			532 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <config.h>
 | |
| #include <dlfcn.h>
 | |
| #include <stdio.h>
 | |
| 
 | |
| extern int var;
 | |
| 
 | |
| static int
 | |
| do_test (void)
 | |
| {
 | |
| #ifdef HAVE_ASM_UNIQUE_OBJECT
 | |
|   var = 1;
 | |
| 
 | |
|   void *h = dlopen ("tst-unique2mod2.so", RTLD_LAZY);
 | |
|   if (h == NULL)
 | |
|     {
 | |
|       puts ("cannot load tst-unique2mod2");
 | |
|       return 1;
 | |
|     }
 | |
|   int (*f) (int *) = dlsym (h, "f");
 | |
|   if (f == NULL)
 | |
|     {
 | |
|       puts ("cannot locate f in tst-unique2mod2");
 | |
|       return 1;
 | |
|     }
 | |
|   return f (&var);
 | |
| #else
 | |
|   return 0;
 | |
| #endif
 | |
| }
 | |
| 
 | |
| #define TEST_FUNCTION do_test ()
 | |
| #include "../test-skeleton.c"
 |