summaryrefslogtreecommitdiffstats
path: root/bfd/coffcode.h
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2007-08-02 16:02:01 +0000
committerH.J. Lu <hjl.tools@gmail.com>2007-08-02 16:02:01 +0000
commitbd33be6e270cc4e725aa785c0db7fd172a6aa273 (patch)
treedcbd2ed2f926acee5e74813e3addaaefc1f041aa /bfd/coffcode.h
parent7a3c21c92f0369b5d18c5c76dc4ba61dbb1f8dd2 (diff)
downloadppe42-binutils-bd33be6e270cc4e725aa785c0db7fd172a6aa273.tar.gz
ppe42-binutils-bd33be6e270cc4e725aa785c0db7fd172a6aa273.zip
bfd/
2007-08-02 H.J. Lu <hongjiu.lu@intel.com> * coffcode.h (ALIGN_SET): Removed. (ELIFALIGN_SET): Likewise. (coff_set_alignment_hook): Handle IMAGE_SCN_ALIGN_128BYTES, IMAGE_SCN_ALIGN_256BYTES, IMAGE_SCN_ALIGN_512BYTES, IMAGE_SCN_ALIGN_1024BYTES, IMAGE_SCN_ALIGN_2048BYTES, IMAGE_SCN_ALIGN_4096BYTES and IMAGE_SCN_ALIGN_8192BYTES. include/coff/ 2007-08-02 H.J. Lu <hongjiu.lu@intel.com> * pe.h (IMAGE_SCN_ALIGN_POWER_BIT_POS): New. (IMAGE_SCN_ALIGN_POWER_BIT_MASK): Likewise. (IMAGE_SCN_ALIGN_POWER_NUM): Likewise. (IMAGE_SCN_ALIGN_POWER_CONST): Likewise. (IMAGE_SCN_ALIGN_128BYTES): Likewise. (IMAGE_SCN_ALIGN_256BYTES): Likewise. (IMAGE_SCN_ALIGN_512BYTES): Likewise. (IMAGE_SCN_ALIGN_1024BYTES): Likewise. (IMAGE_SCN_ALIGN_2048BYTES): Likewise. (IMAGE_SCN_ALIGN_4096BYTES): Likewise. (IMAGE_SCN_ALIGN_8192BYTES): Likewise. (IMAGE_SCN_ALIGN_1BYTES): Redefined with IMAGE_SCN_ALIGN_POWER_CONST. (IMAGE_SCN_ALIGN_2BYTES): Likewise. (IMAGE_SCN_ALIGN_4BYTES): Likewise. (IMAGE_SCN_ALIGN_8BYTES): Likewise. (IMAGE_SCN_ALIGN_16BYTES): Likewise. (IMAGE_SCN_ALIGN_32BYTES): Likewise. (IMAGE_SCN_ALIGN_64BYTES): Likewise.
Diffstat (limited to 'bfd/coffcode.h')
-rw-r--r--bfd/coffcode.h44
1 files changed, 24 insertions, 20 deletions
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 043e929bd7..3d92ee570a 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -1628,19 +1628,6 @@ coff_set_alignment_hook (bfd * abfd ATTRIBUTE_UNUSED,
#else /* ! COFF_ALIGN_IN_SECTION_HEADER */
#ifdef COFF_WITH_PE
-/* A couple of macros to help setting the alignment power field. */
-#define ALIGN_SET(field, x, y) \
- if (((field) & IMAGE_SCN_ALIGN_64BYTES) == x)\
- {\
- section->alignment_power = y;\
- }
-
-#define ELIFALIGN_SET(field, x, y) \
- else if (((field) & IMAGE_SCN_ALIGN_64BYTES) == x) \
- {\
- section->alignment_power = y;\
- }
-
static void
coff_set_alignment_hook (bfd * abfd ATTRIBUTE_UNUSED,
asection * section,
@@ -1648,14 +1635,31 @@ coff_set_alignment_hook (bfd * abfd ATTRIBUTE_UNUSED,
{
struct internal_scnhdr *hdr = (struct internal_scnhdr *) scnhdr;
bfd_size_type amt;
+ unsigned int alignment_power_const
+ = hdr->s_flags & IMAGE_SCN_ALIGN_POWER_BIT_MASK;
- ALIGN_SET (hdr->s_flags, IMAGE_SCN_ALIGN_64BYTES, 6)
- ELIFALIGN_SET (hdr->s_flags, IMAGE_SCN_ALIGN_32BYTES, 5)
- ELIFALIGN_SET (hdr->s_flags, IMAGE_SCN_ALIGN_16BYTES, 4)
- ELIFALIGN_SET (hdr->s_flags, IMAGE_SCN_ALIGN_8BYTES, 3)
- ELIFALIGN_SET (hdr->s_flags, IMAGE_SCN_ALIGN_4BYTES, 2)
- ELIFALIGN_SET (hdr->s_flags, IMAGE_SCN_ALIGN_2BYTES, 1)
- ELIFALIGN_SET (hdr->s_flags, IMAGE_SCN_ALIGN_1BYTES, 0)
+ switch (alignment_power_const)
+ {
+ case IMAGE_SCN_ALIGN_8192BYTES:
+ case IMAGE_SCN_ALIGN_4096BYTES:
+ case IMAGE_SCN_ALIGN_2048BYTES:
+ case IMAGE_SCN_ALIGN_1024BYTES:
+ case IMAGE_SCN_ALIGN_512BYTES:
+ case IMAGE_SCN_ALIGN_256BYTES:
+ case IMAGE_SCN_ALIGN_128BYTES:
+ case IMAGE_SCN_ALIGN_64BYTES:
+ case IMAGE_SCN_ALIGN_32BYTES:
+ case IMAGE_SCN_ALIGN_16BYTES:
+ case IMAGE_SCN_ALIGN_8BYTES:
+ case IMAGE_SCN_ALIGN_4BYTES:
+ case IMAGE_SCN_ALIGN_2BYTES:
+ case IMAGE_SCN_ALIGN_1BYTES:
+ section->alignment_power
+ = IMAGE_SCN_ALIGN_POWER_NUM (alignment_power_const);
+ break;
+ default:
+ break;
+ }
/* 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. We also keep
OpenPOWER on IntegriCloud