Bummer! Undo mmap() changes in rev. 1.26; they royally screw up the

kernel's pmap address preference mechanism.
This commit is contained in:
pk 1994-12-19 12:21:21 +00:00
parent 53792bd39b
commit e46ed32748
2 changed files with 20 additions and 20 deletions

View File

@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: rtld.c,v 1.27 1994/12/18 16:05:49 pk Exp $
* $Id: rtld.c,v 1.28 1994/12/19 12:21:21 pk Exp $
*/
#include <sys/param.h>
@ -498,16 +498,8 @@ again:
}
if ((addr = mmap(0, hdr.a_text + hdr.a_data + hdr.a_bss,
PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_ANON|MAP_COPY,
anon_fd, 0)) == (caddr_t)-1) {
(void)close(fd);
return NULL;
}
if (mmap(addr, hdr.a_text + hdr.a_data,
PROT_READ|PROT_EXEC,
MAP_FIXED|MAP_COPY, fd, 0) == (caddr_t)-1) {
MAP_COPY, fd, 0)) == (caddr_t)-1) {
(void)close(fd);
return NULL;
}
@ -518,6 +510,14 @@ again:
return NULL;
}
if (mmap(addr + hdr.a_text + hdr.a_data, hdr.a_bss,
PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_ANON|MAP_COPY|MAP_FIXED,
anon_fd, 0) == (caddr_t)-1) {
(void)close(fd);
return NULL;
}
(void)close(fd);
/* Assume _DYNAMIC is the first data item */

View File

@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: rtld.c,v 1.27 1994/12/18 16:05:49 pk Exp $
* $Id: rtld.c,v 1.28 1994/12/19 12:21:21 pk Exp $
*/
#include <sys/param.h>
@ -498,16 +498,8 @@ again:
}
if ((addr = mmap(0, hdr.a_text + hdr.a_data + hdr.a_bss,
PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_ANON|MAP_COPY,
anon_fd, 0)) == (caddr_t)-1) {
(void)close(fd);
return NULL;
}
if (mmap(addr, hdr.a_text + hdr.a_data,
PROT_READ|PROT_EXEC,
MAP_FIXED|MAP_COPY, fd, 0) == (caddr_t)-1) {
MAP_COPY, fd, 0)) == (caddr_t)-1) {
(void)close(fd);
return NULL;
}
@ -518,6 +510,14 @@ again:
return NULL;
}
if (mmap(addr + hdr.a_text + hdr.a_data, hdr.a_bss,
PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_ANON|MAP_COPY|MAP_FIXED,
anon_fd, 0) == (caddr_t)-1) {
(void)close(fd);
return NULL;
}
(void)close(fd);
/* Assume _DYNAMIC is the first data item */