diff options
author | Eric Andersen <andersen@codepoet.org> | 2004-01-29 10:44:50 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2004-01-29 10:44:50 +0000 |
commit | 3312c6ac985f422a529cf91cfae035f5a3556f8e (patch) | |
tree | 97dc40b830aa594606ff836f4ad1f2625b82d695 /ldso/ldso/ldso.c | |
parent | da609428b6b31a46c9309423824767ff7b2a415e (diff) |
Eliminate separate passes for _dl_copy_fixups() and _dl_fixup(), and
do both operations in a single pass.
Diffstat (limited to 'ldso/ldso/ldso.c')
-rw-r--r-- | ldso/ldso/ldso.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c index 0f89d70e8..8d5d08e1e 100644 --- a/ldso/ldso/ldso.c +++ b/ldso/ldso/ldso.c @@ -145,7 +145,7 @@ static int (*_dl_elf_main) (int, char **, char **); struct r_debug *_dl_debug_addr = NULL; unsigned long *_dl_brkp; unsigned long *_dl_envp; -int _dl_fixup(struct elf_resolve *tpnt, int lazy); +int _dl_fixup(struct dyn_elf *rpnt, int flag); void _dl_debug_state(void); char *_dl_get_last_path_component(char *path); static void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *app_tpnt, @@ -1185,18 +1185,9 @@ static void _dl_get_ready_to_run(struct elf_resolve *tpnt, struct elf_resolve *a * Now we go through and look for REL and RELA records that indicate fixups * to the GOT tables. We need to do this in reverse order so that COPY * directives work correctly */ - goof = _dl_loaded_modules ? _dl_fixup(_dl_loaded_modules, _dl_be_lazy) : 0; - - - /* Some flavors of SVr4 do not generate the R_*_COPY directive, - and we have to manually search for entries that require fixups. - Solaris gets this one right, from what I understand. */ - -#ifdef __SUPPORT_LD_DEBUG_EARLY__ - _dl_dprintf(_dl_debug_file, "Beginning copy fixups\n"); -#endif if (_dl_symbol_tables) - goof += _dl_copy_fixups(_dl_symbol_tables); + goof += _dl_fixup(_dl_symbol_tables, _dl_be_lazy); + /* OK, at this point things are pretty much ready to run. Now we need to touch up a few items that are required, and then |