simply the abutting text/data case.

This commit is contained in:
matt 2000-06-23 22:03:22 +00:00
parent c42886a2b8
commit 3a447126e3
1 changed files with 6 additions and 8 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: ibcs2_exec.c,v 1.30 2000/06/21 06:40:04 matt Exp $ */
/* $NetBSD: ibcs2_exec.c,v 1.31 2000/06/23 22:03:22 matt Exp $ */
/*
* Copyright (c) 1994, 1995, 1998 Scott Bartram
@ -397,9 +397,10 @@ exec_ibcs2_coff_prep_nmagic(p, epp, fp, ap)
struct coff_filehdr *fp;
struct coff_aouthdr *ap;
{
u_long tsize, tend, toverlap, doverlap;
long toverlap, doverlap;
u_long tsize, tend;
epp->ep_taddr = COFF_SEGMENT_ALIGN(fp, ap, ap->a_tstart);
epp->ep_taddr = ap->a_tstart;
epp->ep_tsize = ap->a_tsize;
epp->ep_daddr = ap->a_dstart;
epp->ep_dsize = ap->a_dsize;
@ -431,11 +432,8 @@ exec_ibcs2_coff_prep_nmagic(p, epp, fp, ap)
if (epp->ep_daddr - epp->ep_taddr ==
COFF_DATOFF(fp, ap) - COFF_TXTOFF(fp, ap)) {
u_long diff = epp->ep_daddr - trunc_page(epp->ep_daddr);
epp->ep_daddr -= diff;
epp->ep_dsize += diff;
epp->ep_tsize = tsize;
toverlap = 0;
doverlap = 0;
doverlap = -diff;
} else {
/* otherwise copy the individual pieces */
toverlap = epp->ep_tsize - tsize;
@ -474,7 +472,7 @@ exec_ibcs2_coff_prep_nmagic(p, epp, fp, ap)
COFF_DATOFF(fp, ap)));
}
if (epp->ep_dsize > doverlap) {
if (epp->ep_dsize > doverlap || doverlap < 0) {
/* set up command for data segment */
NEW_VMCMD(&epp->ep_vmcmds, vmcmd_map_readvn,
epp->ep_dsize - doverlap, epp->ep_daddr + doverlap,