diff options
author | Ulrich Drepper <drepper@redhat.com> | 2009-11-24 11:17:06 -0800 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-11-24 11:17:06 -0800 |
commit | 1c3c269b55c84c29ec1e2c70f122c5e33fef4257 (patch) | |
tree | 9f6280c1e3f3a523e40f90f6ff4f8c5c11a995ad /csu/libc-start.c | |
parent | ee5a5ba6725ee949483f043cd0cf2a1579b6b509 (diff) | |
download | glibc-1c3c269b55c84c29ec1e2c70f122c5e33fef4257.zip glibc-1c3c269b55c84c29ec1e2c70f122c5e33fef4257.tar.gz glibc-1c3c269b55c84c29ec1e2c70f122c5e33fef4257.tar.bz2 |
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.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/csu/libc-start.c b/csu/libc-start.c index 80b672f..dc7ca55 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. */ |