mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 15:20:10 +00:00
415ac3df9b
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.
21 lines
351 B
C
21 lines
351 B
C
#include <config.h>
|
|
|
|
#ifdef HAVE_ASM_UNIQUE_OBJECT
|
|
# define S(s) _S (s)
|
|
# define _S(s) #s
|
|
|
|
asm (".data;"
|
|
S (ASM_GLOBAL_DIRECTIVE) " var\n"
|
|
".type var, " S (ASM_TYPE_DIRECTIVE_PREFIX) "gnu_unique_object\n"
|
|
".size var, 4\n"
|
|
"var:.zero 4\n"
|
|
".previous");
|
|
extern int var;
|
|
|
|
int
|
|
f (int *p)
|
|
{
|
|
return &var != p || *p != 1;
|
|
}
|
|
#endif
|