1999-09-06 Donn Terry <donn@interix.com>
+ * libcoff-in.h (struct pei_section_tdata): Add pe_flags field.
+ * coffcode.h (coff_set_alignment_hook): Set pe_flags field if
+ COFF_WITH_PE.
+ * libcoff.h: Rebuild.
+
* coffcode.h (coff_set_custom_section_alignment): Add const to
declaration to match definition.
(coff_write_object_contents): Don't set F_AR32W(R)? if
}
#endif
-#ifdef COFF_IMAGE_WITH_PE
+#ifdef COFF_WITH_PE
/* In a PE image file, the s_paddr field holds the virtual size of a
- section, while the s_size field holds the raw size. */
- if (hdr->s_paddr != 0)
+ section, while the s_size field holds the raw size. We also keep
+ the original section flag value, since not every bit can be
+ mapped onto a generic BFD section bit. */
+ if (coff_section_data (abfd, section) == NULL)
{
- if (coff_section_data (abfd, section) == NULL)
+ section->used_by_bfd =
+ (PTR) bfd_zalloc (abfd, sizeof (struct coff_section_tdata));
+ if (section->used_by_bfd == NULL)
{
- section->used_by_bfd =
- (PTR) bfd_zalloc (abfd, sizeof (struct coff_section_tdata));
- if (section->used_by_bfd == NULL)
- {
- /* FIXME: Return error. */
- abort ();
- }
+ /* FIXME: Return error. */
+ abort ();
}
- if (pei_section_data (abfd, section) == NULL)
+ }
+ if (pei_section_data (abfd, section) == NULL)
+ {
+ coff_section_data (abfd, section)->tdata =
+ (PTR) bfd_zalloc (abfd, sizeof (struct pei_section_tdata));
+ if (coff_section_data (abfd, section)->tdata == NULL)
{
- coff_section_data (abfd, section)->tdata =
- (PTR) bfd_zalloc (abfd, sizeof (struct pei_section_tdata));
- if (coff_section_data (abfd, section)->tdata == NULL)
- {
- /* FIXME: Return error. */
- abort ();
- }
+ /* FIXME: Return error. */
+ abort ();
}
- pei_section_data (abfd, section)->virt_size = hdr->s_paddr;
}
-#endif
+ pei_section_data (abfd, section)->virt_size = hdr->s_paddr;
+ pei_section_data (abfd, section)->pe_flags = hdr->s_flags;
-#ifdef COFF_WITH_PE
section->lma = hdr->s_vaddr;
-#endif
+#endif /* COFF_WITH_PE */
}
#undef ALIGN_SET
#undef ELIFALIGN_SET
#define xcoff_section_data(abfd, sec) \
((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
-/* Tdata for sections in PEI image files. */
+/* Tdata for sections in PE files. */
struct pei_section_tdata
{
/* The virtual size of the section. */
bfd_size_type virt_size;
+ /* The PE section flags. */
+ long pe_flags;
};
/* An accessor macro for the pei_section_tdata structure. */
#define xcoff_section_data(abfd, sec) \
((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
-/* Tdata for sections in PEI image files. */
+/* Tdata for sections in PE files. */
struct pei_section_tdata
{
/* The virtual size of the section. */
bfd_size_type virt_size;
+ /* The PE section flags. */
+ long pe_flags;
};
/* An accessor macro for the pei_section_tdata structure. */