• R
    fix dynamic loader library mapping for nommu systems · 9439ebd7
    Rich Felker 提交于
    on linux/nommu, non-writable private mappings of files may actually
    use memory shared with other processes or the fs cache. the old nommu
    loader code (used when mmap with MAP_FIXED fails) simply wrote over
    top of the original file mapping, possibly clobbering this shared
    memory. no such breakage was observed in practice, but it should have
    been possible.
    
    the new code starts by mapping anonymous writable memory on archs that
    might support nommu, then maps load segments over top of it, falling
    back to read if MAP_FIXED fails. we use an anonymous map rather than a
    writable file map to avoid reading more data from disk than needed.
    since pages cannot be loaded lazily on fault, in case of large
    data/bss, mapping the full file may read a lot of data that will
    subsequently be thrown away when processing additional LOAD segments.
    as a result, we cannot skip the first LOAD segment when operating in
    this mode.
    
    these changes affect only non-FDPIC nommu support.
    9439ebd7
reloc.h 1.4 KB