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.
This commit is contained in:
Ulrich Drepper 2003-12-17 08:36:34 +00:00
parent 93226feb21
commit 27a754a97b
2 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,10 @@
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.
2003-12-16 Petter Reinholdtsen <pere@hungry.com> 2003-12-16 Petter Reinholdtsen <pere@hungry.com>
* posix/regex_internal.h: Make sure the regex code compile * posix/regex_internal.h: Make sure the regex code compile

View File

@ -105,7 +105,12 @@ struct rtld_global _rtld_global =
._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER ._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER
#endif #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, static void dl_main (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
ElfW(Addr) *user_entry); ElfW(Addr) *user_entry);
@ -140,7 +145,7 @@ DL_SYSINFO_IMPLEMENTATION
/* Before ld.so is relocated we must not access variables which need /* Before ld.so is relocated we must not access variables which need
relocations. This means variables which are exported. Variables relocations. This means variables which are exported. Variables
declared as static are fine. If we can mark a variable hidden this 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 up a temporary link map for ld.so if we can mark _rtld_global as
hidden. */ hidden. */
#if defined PI_STATIC_AND_HIDDEN && defined HAVE_HIDDEN \ #if defined PI_STATIC_AND_HIDDEN && defined HAVE_HIDDEN \