summaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1999-09-07 03:40:32 +0000
committerIan Lance Taylor <ian@airs.com>1999-09-07 03:40:32 +0000
commitd575e71e8255fe733687ba583cb801161b7d66c8 (patch)
tree9914f5ce58a8732de5afcc5c1291db6180d53e4a /bfd
parent1d8bea879cab393d95d6260e0a88b7cc16704e05 (diff)
downloadgdb-d575e71e8255fe733687ba583cb801161b7d66c8.tar.gz
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.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/coffcode.h44
-rw-r--r--bfd/libcoff-in.h4
-rw-r--r--bfd/libcoff.h4
4 files changed, 32 insertions, 25 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index fe55a9faf12..5142ed15e64 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
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
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 4b0a39d6c0d..1116ee8567e 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -1487,38 +1487,36 @@ coff_set_alignment_hook (abfd, section, scnhdr)
}
#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
diff --git a/bfd/libcoff-in.h b/bfd/libcoff-in.h
index 790eeb0342b..9b1a0268487 100644
--- a/bfd/libcoff-in.h
+++ b/bfd/libcoff-in.h
@@ -216,12 +216,14 @@ struct xcoff_section_tdata
#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. */
diff --git a/bfd/libcoff.h b/bfd/libcoff.h
index ffa06bf5546..0bad48b372e 100644
--- a/bfd/libcoff.h
+++ b/bfd/libcoff.h
@@ -216,12 +216,14 @@ struct xcoff_section_tdata
#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. */