diff options
author | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2007-01-26 00:25:10 +0000 |
---|---|---|
committer | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2007-01-26 00:25:10 +0000 |
commit | 7a9cec961bb9ec7862751ac7d142b689aaf82841 (patch) | |
tree | 0e81f37774dcd0cfe7ad81b6cb43e07c0fe2f98d /ldso/ldso | |
parent | 4a38f88b2caeac2faee85fb80606cc9732faa1f7 (diff) |
Fix libdl bug reported by Cedric Hombourger in
http://uclibc.org/lists/uclibc/2007-January/017165.html
Diffstat (limited to 'ldso/ldso')
-rw-r--r-- | ldso/ldso/ldso.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c index f8f3dc67c..d31ae1d73 100644 --- a/ldso/ldso/ldso.c +++ b/ldso/ldso/ldso.c @@ -192,6 +192,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, unsigned long *_dl_envp; /* The environment address */ ElfW(Addr) relro_addr = 0; size_t relro_size = 0; + struct stat st; /* Wahoo!!! We managed to make a function call! Get malloc * setup so we can use _dl_dprintf() to print debug noise @@ -725,6 +726,10 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr, (unsigned long)tpnt->dynamic_addr, 0); + if (_dl_stat(tpnt->libname, &st) >= 0) { + tpnt->st_dev = st.st_dev; + tpnt->st_ino = st.st_ino; + } tpnt->n_phent = epnt->e_phnum; tpnt->ppnt = myppnt; for (j = 0; j < epnt->e_phnum; j++, myppnt++) { |