Fix libc-start change for IRELless machines.

This commit is contained in:
Roland McGrath 2012-08-22 12:53:38 -07:00
parent 6aa2f685b2
commit 35a5b08bd4
2 changed files with 13 additions and 7 deletions

View file

@ -1,3 +1,8 @@
2012-08-22 Roland McGrath <roland@hack.frob.com>
* csu/libc-start.c (apply_irel): Move extern declarations inside here.
Conditionalize whole body on [IREL].
2012-08-22 Jeff Law <law@redhat.com>
[BZ #14505]

View file

@ -62,18 +62,19 @@ uintptr_t __stack_chk_guard attribute_relro;
# define IREL elf_irel
# endif
/* We use weak references for these so that we'll still work with a linker
that doesn't define them. Such a linker doesn't support IFUNC at all
and so uses won't work, but a statically-linked program that doesn't
use any IFUNC symbols won't have a problem. */
extern const IREL_T IPLT_START[] __attribute__ ((weak));
extern const IREL_T IPLT_END[] __attribute__ ((weak));
static void
apply_irel (void)
{
# ifdef IREL
/* We use weak references for these so that we'll still work with a linker
that doesn't define them. Such a linker doesn't support IFUNC at all
and so uses won't work, but a statically-linked program that doesn't
use any IFUNC symbols won't have a problem. */
extern const IREL_T IPLT_START[] __attribute__ ((weak));
extern const IREL_T IPLT_END[] __attribute__ ((weak));
for (const IREL_T *ipltent = IPLT_START; ipltent < IPLT_END; ++ipltent)
IREL (ipltent);
# endif
}
#endif