diff options
author | Andreas Schwab <schwab@redhat.com> | 2009-11-30 14:53:29 +0100 |
---|---|---|
committer | Andreas Schwab <schwab@redhat.com> | 2009-11-30 14:54:41 +0100 |
commit | 488fb43a499982e99915c78bb70f04357ac37463 (patch) | |
tree | e356d0f1d327ed3de4a9d5abec1edf346070aa32 /csu/elf-init.c | |
parent | eab709096f23a4511adfc547450a83008eae5fb2 (diff) | |
parent | 20af204581e1ba42738c1bfb69cc2f5350f4ffa4 (diff) |
Merge branch 'release/2.11/master' into fedora/2.11/master
Diffstat (limited to 'csu/elf-init.c')
-rw-r--r-- | csu/elf-init.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/csu/elf-init.c b/csu/elf-init.c index 7481e69aa6..f828faa601 100644 --- a/csu/elf-init.c +++ b/csu/elf-init.c @@ -89,15 +89,14 @@ extern void _fini (void); /* These functions are passed to __libc_start_main by the startup code. These get statically linked into each program. For dynamically linked programs, this module will come from libc_nonshared.a and differs from - the libc.a module in that it doesn't call the preinit array. */ + the libc.a module in that it doesn't call the preinit array and performs + explicit IREL{,A} relocations. */ -void -__libc_csu_init (int argc, char **argv, char **envp) -{ - /* For dynamically linked executables the preinit array is executed by - the dynamic linker (before initializing any shared object. */ #ifndef LIBC_NONSHARED +void +__libc_csu_irel (void) +{ # ifdef USE_MULTIARCH # ifdef ELF_MACHINE_IRELA { @@ -115,7 +114,17 @@ __libc_csu_init (int argc, char **argv, char **envp) } # endif # endif +} +#endif + +void +__libc_csu_init (int argc, char **argv, char **envp) +{ + /* For dynamically linked executables the preinit array is executed by + the dynamic linker (before initializing any shared object. */ + +#ifndef LIBC_NONSHARED /* For static executables, preinit happens right before init. */ { const size_t size = __preinit_array_end - __preinit_array_start; |