This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [COMMITTED PATCH] Support static IFUNC calls irrespective ofUSE_MULTIARCH.


> This has broken the build for architectures with no ifunc support at all 
> (such as MIPS).  Anything using IREL_T needs to be conditional on 
> ELF_MACHINE_IRELA || ELF_MACHINE_IREL....

Fixed thusly.

Thanks,
Roland


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].

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
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]