summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-06-28 14:20:41 -0400
committerRich Felker <dalias@aerifal.cx>2011-06-28 14:20:41 -0400
commitbf30100ad7e208dbac5835b38881c98ceb5b928f (patch)
tree35e3f4a8929a68920cad0e0ac51bb14456d99f10
parentc7debe13ee3c1ca2039b67bb7e4891365017ac1a (diff)
downloadmusl-bf30100ad7e208dbac5835b38881c98ceb5b928f.tar.gz
musl-bf30100ad7e208dbac5835b38881c98ceb5b928f.tar.bz2
musl-bf30100ad7e208dbac5835b38881c98ceb5b928f.tar.xz
musl-bf30100ad7e208dbac5835b38881c98ceb5b928f.zip
use load address from elf header if possible
this is mostly useless for shared libs (though it could help for prelink-like purposes); the intended use case is for adding support for calling the dynamic linker directly to run a program, as in: ./libc.so ./a.out foo this usage is not yet supported.
-rw-r--r--src/ldso/dynlink.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index 82aaeec1..527b36bd 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -189,7 +189,7 @@ static void *map_library(int fd, size_t *lenp, unsigned char **basep, size_t *dy
* the length of the file. This is okay because we will not
* use the invalid part; we just need to reserve the right
* amount of virtual address space to map over later. */
- map = mmap(0, map_len, prot, MAP_PRIVATE, fd, off_start);
+ map = mmap((void *)addr_min, map_len, prot, MAP_PRIVATE, fd, off_start);
if (map==MAP_FAILED) return 0;
base = map - addr_min;
ph = (void *)((char *)buf + eh->e_phoff);