* som.c (som_begin_writing): Account for alignment needs of
subspaces too when writing executables. Never request a negative bss size. Fixes some problems with demand paged executables, still having problems with pure executables and shared executables.
This commit is contained in:
parent
1576691751
commit
00806436cd
|
@ -1,3 +1,10 @@
|
||||||
|
Sat Mar 19 07:06:59 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
|
||||||
|
|
||||||
|
* som.c (som_begin_writing): Account for alignment needs of
|
||||||
|
subspaces too when writing executables. Never request a negative
|
||||||
|
bss size. Fixes some problems with demand paged executables,
|
||||||
|
still having problems with pure executables and shared executables.
|
||||||
|
|
||||||
Fri Mar 18 19:12:47 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
|
Fri Mar 18 19:12:47 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||||
|
|
||||||
* trad-core.c (trad_unix_core_file_p): Call bfd_zmalloc not
|
* trad-core.c (trad_unix_core_file_p): Call bfd_zmalloc not
|
||||||
|
|
23
bfd/som.c
23
bfd/som.c
|
@ -3001,6 +3001,27 @@ som_begin_writing (abfd)
|
||||||
/* Only do this for the first subspace within each space. */
|
/* Only do this for the first subspace within each space. */
|
||||||
first_subspace = 0;
|
first_subspace = 0;
|
||||||
}
|
}
|
||||||
|
else if (abfd->flags & EXEC_P)
|
||||||
|
{
|
||||||
|
/* Have to keep proper alignments for the subspaces
|
||||||
|
in executables too! */
|
||||||
|
if (subsection->flags & SEC_CODE)
|
||||||
|
{
|
||||||
|
unsigned tmp = exec_header.exec_tsize;
|
||||||
|
|
||||||
|
tmp = SOM_ALIGN (tmp, 1 << subsection->alignment_power);
|
||||||
|
current_offset += (tmp - exec_header.exec_tsize);
|
||||||
|
exec_header.exec_tsize = tmp;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
unsigned tmp = exec_header.exec_dsize;
|
||||||
|
|
||||||
|
tmp = SOM_ALIGN (tmp, 1 << subsection->alignment_power);
|
||||||
|
current_offset += (tmp - exec_header.exec_dsize);
|
||||||
|
exec_header.exec_dsize = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
subsection->target_index = total_subspaces++;
|
subsection->target_index = total_subspaces++;
|
||||||
/* This is real data to be loaded from the file. */
|
/* This is real data to be loaded from the file. */
|
||||||
|
@ -3127,6 +3148,8 @@ som_begin_writing (abfd)
|
||||||
tmp = exec_header.exec_dsize;
|
tmp = exec_header.exec_dsize;
|
||||||
tmp = SOM_ALIGN (tmp, PA_PAGESIZE);
|
tmp = SOM_ALIGN (tmp, PA_PAGESIZE);
|
||||||
exec_header.exec_bsize -= (tmp - exec_header.exec_dsize);
|
exec_header.exec_bsize -= (tmp - exec_header.exec_dsize);
|
||||||
|
if (exec_header.exec_bsize < 0)
|
||||||
|
exec_header.exec_bsize = 0;
|
||||||
exec_header.exec_dsize = tmp;
|
exec_header.exec_dsize = tmp;
|
||||||
|
|
||||||
bfd_seek (abfd, obj_som_file_hdr (abfd)->aux_header_location, SEEK_SET);
|
bfd_seek (abfd, obj_som_file_hdr (abfd)->aux_header_location, SEEK_SET);
|
||||||
|
|
Loading…
Reference in New Issue