diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-12-17 08:36:34 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-12-17 08:36:34 +0000 |
commit | 27a754a97be9b501d233c85a2c6d9baa03e5304d (patch) | |
tree | 3f2eb9ec35cf45de29da743ffc1c8085966199be /elf | |
parent | 93226feb21300d173d293a25f10e83d7426c9f6f (diff) | |
download | glibc-27a754a97be9b501d233c85a2c6d9baa03e5304d.zip glibc-27a754a97be9b501d233c85a2c6d9baa03e5304d.tar.gz glibc-27a754a97be9b501d233c85a2c6d9baa03e5304d.tar.bz2 |
Update.
2003-12-17 Ulrich Drepper <drepper@redhat.com>
* elf/rtld.c: Don't use strong_alias to define _rtld_local. This
removes the visibility attributes which might be defined earlier
for some gcc versions. Instead spell out what strong_alias does
plus the visibility.
Diffstat (limited to 'elf')
-rw-r--r-- | elf/rtld.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -105,7 +105,12 @@ struct rtld_global _rtld_global = ._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER #endif }; -strong_alias (_rtld_global, _rtld_local); +/* If we would use strong_alias here the compiler would see a + non-hidden definition. This would undo the effect of the previous + declaration. So spell out was strong_alias does plus add the + visibility attribute. */ +extern struct rtld_global _rtld_local + __attribute__ ((alias ("_rtld_global"), visibility ("hidden"))); static void dl_main (const ElfW(Phdr) *phdr, ElfW(Word) phnum, ElfW(Addr) *user_entry); @@ -140,7 +145,7 @@ DL_SYSINFO_IMPLEMENTATION /* Before ld.so is relocated we must not access variables which need relocations. This means variables which are exported. Variables declared as static are fine. If we can mark a variable hidden this - is fine, too. The latter is impotant here. We can avoid setting + is fine, too. The latter is important here. We can avoid setting up a temporary link map for ld.so if we can mark _rtld_global as hidden. */ #if defined PI_STATIC_AND_HIDDEN && defined HAVE_HIDDEN \ |