1999-09-11 Donn Terry <donn@interix.com>
* peigen.c (_bfd_pei_swap_scnhdr_out): Remove code which sets section flags based on the section name.
This commit is contained in:
parent
cb43721da5
commit
8c42d01089
@ -7,6 +7,9 @@
|
||||
|
||||
1999-09-11 Donn Terry <donn@interix.com>
|
||||
|
||||
* peigen.c (_bfd_pei_swap_scnhdr_out): Remove code which sets
|
||||
section flags based on the section name.
|
||||
|
||||
* peicode.h (coff_swap_scnhdr_in): If COFF_IMAGE_WITH_PE, the
|
||||
get the overflow of the s_nlnno field from the s_nreloc field.
|
||||
* peigen.c (_bfd_pei_swap_scnhdr_out): If doing a final link, swap
|
||||
|
44
bfd/peigen.c
44
bfd/peigen.c
@ -909,52 +909,8 @@ _bfd_pei_swap_scnhdr_out (abfd, in, out)
|
||||
/* FIXME: even worse, I don't see how to get the original alignment field*/
|
||||
/* back... */
|
||||
|
||||
/* FIXME: Basing this on section names is bogus. Also, this should
|
||||
be in sec_to_styp_flags. */
|
||||
|
||||
{
|
||||
int flags = scnhdr_int->s_flags;
|
||||
if (strcmp (scnhdr_int->s_name, ".data") == 0 ||
|
||||
strcmp (scnhdr_int->s_name, ".CRT") == 0 ||
|
||||
strcmp (scnhdr_int->s_name, ".bss") == 0)
|
||||
flags |= IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE;
|
||||
else if (strcmp (scnhdr_int->s_name, ".text") == 0)
|
||||
flags |= IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_EXECUTE;
|
||||
else if (strcmp (scnhdr_int->s_name, ".reloc") == 0)
|
||||
flags = (SEC_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_DISCARDABLE
|
||||
| IMAGE_SCN_MEM_SHARED);
|
||||
else if (strcmp (scnhdr_int->s_name, ".idata") == 0)
|
||||
flags = IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE | SEC_DATA;
|
||||
else if (strcmp (scnhdr_int->s_name, ".rdata") == 0
|
||||
|| strcmp (scnhdr_int->s_name, ".edata") == 0)
|
||||
flags = IMAGE_SCN_MEM_READ | SEC_DATA;
|
||||
else if (strcmp (scnhdr_int->s_name, ".pdata") == 0)
|
||||
flags = IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_ALIGN_4BYTES |
|
||||
IMAGE_SCN_MEM_READ ;
|
||||
/* Remember this field is a max of 8 chars, so the null is _not_ there
|
||||
for an 8 character name like ".reldata". (yep. Stupid bug) */
|
||||
else if (strncmp (scnhdr_int->s_name, ".reldata", 8) == 0)
|
||||
flags = IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_ALIGN_8BYTES |
|
||||
IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE ;
|
||||
else if (strcmp (scnhdr_int->s_name, ".ydata") == 0)
|
||||
flags = IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_ALIGN_8BYTES |
|
||||
IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE ;
|
||||
else if (strncmp (scnhdr_int->s_name, ".drectve", 8) == 0)
|
||||
flags = IMAGE_SCN_LNK_INFO | IMAGE_SCN_LNK_REMOVE ;
|
||||
else if (strncmp (scnhdr_int->s_name, ".stab", 5) == 0)
|
||||
flags |= (IMAGE_SCN_LNK_INFO | IMAGE_SCN_MEM_DISCARDABLE
|
||||
| IMAGE_SCN_MEM_SHARED | IMAGE_SCN_MEM_READ);
|
||||
else if (strcmp (scnhdr_int->s_name, ".rsrc") == 0)
|
||||
flags |= IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_SHARED;
|
||||
else
|
||||
{
|
||||
flags |= IMAGE_SCN_MEM_READ;
|
||||
if (! (flags & SEC_READONLY))
|
||||
flags |= IMAGE_SCN_MEM_WRITE;
|
||||
if (flags & SEC_SHARED)
|
||||
flags |= IMAGE_SCN_MEM_SHARED;
|
||||
}
|
||||
|
||||
bfd_h_put_32(abfd, flags, (bfd_byte *) scnhdr_ext->s_flags);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user