about summary refs log tree commit diff
path: root/csu/libc-start.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-11-24 11:17:06 -0800
committerUlrich Drepper <drepper@redhat.com>2009-11-24 11:17:06 -0800
commit1c3c269b55c84c29ec1e2c70f122c5e33fef4257 (patch)
tree9f6280c1e3f3a523e40f90f6ff4f8c5c11a995ad /csu/libc-start.c
parentee5a5ba6725ee949483f043cd0cf2a1579b6b509 (diff)
downloadglibc-1c3c269b55c84c29ec1e2c70f122c5e33fef4257.tar.gz
glibc-1c3c269b55c84c29ec1e2c70f122c5e33fef4257.tar.xz
glibc-1c3c269b55c84c29ec1e2c70f122c5e33fef4257.zip
Fix startup to security-relevant statically linked binaries.
Before the change they crash on startup.  Perform IREL relocations
earlier to prevent this.
Diffstat (limited to 'csu/libc-start.c')
-rw-r--r--csu/libc-start.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/csu/libc-start.c b/csu/libc-start.c
index 80b672f88d..dc7ca55f09 100644
--- a/csu/libc-start.c
+++ b/csu/libc-start.c
@@ -24,6 +24,9 @@
 #include <bp-sym.h>
 
 extern void __libc_init_first (int argc, char **argv, char **envp);
+#ifndef SHARED
+extern void __libc_csu_irel (void);
+#endif
 
 extern int __libc_multiple_libcs;
 
@@ -134,6 +137,9 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
     }
 # endif
 
+  /* Performe IREL{,A} relocations.  */
+  __libc_csu_irel ();
+
   /* Initialize the thread library at least a bit since the libgcc
      functions are using thread functions if these are available and
      we need to setup errno.  */