diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/coffcode.h | 44 | ||||
-rw-r--r-- | bfd/libcoff-in.h | 4 | ||||
-rw-r--r-- | bfd/libcoff.h | 4 |
4 files changed, 32 insertions, 25 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fe55a9f..5142ed1 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 4b0a39d..1116ee8 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 790eeb0..9b1a026 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 ffa06bf..0bad48b 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. */ |