Browse Source

If a section holds uninitialized data and is from an object file or from an

executable image that has not initialized the s_size field, or if the physical
size is padded, use the virtual size (stored in s_paddr) instead.
binutils-2_14-branch
Nick Clifton 24 years ago
parent
commit
a3476bef94
  1. 8
      bfd/ChangeLog
  2. 17
      bfd/peicode.h

8
bfd/ChangeLog

@ -1,3 +1,11 @@
2003-04-15 Brian Ford <ford@vss.fsi.com>
* peicode.h (coff_swap_scnhdr_in): If a section holds
uninitialized data and is from an object file or from an
executable image that has not initialized the s_size field, or if
the physical size is padded, use the virtual size (stored in
s_paddr) instead.
2003-04-15 H.J. Lu <hjl@gnu.org>
* elflink.h (elf_link_add_object_symbols): Properly report

17
bfd/peicode.h

@ -256,15 +256,16 @@ coff_swap_scnhdr_in (abfd, ext, in)
}
#ifndef COFF_NO_HACK_SCNHDR_SIZE
/* If this section holds uninitialized data, use the virtual size
(stored in s_paddr) instead of the physical size. */
if ((scnhdr_int->s_flags & IMAGE_SCN_CNT_UNINITIALIZED_DATA) != 0
&& (scnhdr_int->s_paddr > 0))
/* If this section holds uninitialized data and is from an object file
or from an executable image that has not initialized the field,
or if the physical size is padded, use the virtual size (stored in
s_paddr) instead. */
if (scnhdr_int->s_paddr > 0
&& (((scnhdr_int->s_flags & IMAGE_SCN_CNT_UNINITIALIZED_DATA) != 0
&& (! bfd_pe_executable_p (abfd) || scnhdr_int->s_size == 0))
|| scnhdr_int->s_size > scnhdr_int->s_paddr))
{
/* Always set it for non pe-obj files, and don't overwrite it
if it's zero for object files. */
if (! bfd_pe_executable_p (abfd) || !scnhdr_int->s_size)
scnhdr_int->s_size = scnhdr_int->s_paddr;
scnhdr_int->s_size = scnhdr_int->s_paddr;
/* This code used to set scnhdr_int->s_paddr to 0. However,
coff_set_alignment_hook stores s_paddr in virt_size, which

Loading…
Cancel
Save