From 35a5b08bd4a5fc34d171480f32b9a235a94ff692 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Wed, 22 Aug 2012 12:53:38 -0700 Subject: [PATCH] Fix libc-start change for IRELless machines. --- ChangeLog | 5 +++++ csu/libc-start.c | 15 ++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5c2aea1..fbaadca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-08-22 Roland McGrath + + * csu/libc-start.c (apply_irel): Move extern declarations inside here. + Conditionalize whole body on [IREL]. + 2012-08-22 Jeff Law [BZ #14505] diff --git a/csu/libc-start.c b/csu/libc-start.c index 7e541d4..e335b64 100644 --- a/csu/libc-start.c +++ b/csu/libc-start.c @@ -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 -- 2.7.4