diff options
Diffstat (limited to 'bfd/coffcode.h')
-rw-r--r-- | bfd/coffcode.h | 44 |
1 files changed, 21 insertions, 23 deletions
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 |