mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-24 13:33:08 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			26 lines
		
	
	
		
			522 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			522 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdint.h>
 | |
| #include <stdlib.h>
 | |
| #include <tls.h>
 | |
| 
 | |
| 
 | |
| struct tls_obj
 | |
| {
 | |
|   const char *name;
 | |
|   uintptr_t addr;
 | |
|   size_t size;
 | |
|   size_t align;
 | |
| };
 | |
| extern struct tls_obj tls_registry[];
 | |
| 
 | |
| #define TLS_REGISTER(x)				\
 | |
| static void __attribute__((constructor))	\
 | |
| tls_register_##x (void)				\
 | |
| {						\
 | |
|   size_t i;					\
 | |
|   for (i = 0; tls_registry[i].name; ++i);	\
 | |
|   tls_registry[i].name = #x;			\
 | |
|   tls_registry[i].addr = (uintptr_t) &x;	\
 | |
|   tls_registry[i].size = sizeof (x);		\
 | |
|   tls_registry[i].align = __alignof__ (x);	\
 | |
| }
 |