summaryrefslogtreecommitdiff
path: root/bfd/vms-alpha.c
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2010-06-11 15:30:38 +0000
committerTristan Gingold <gingold@adacore.com>2010-06-11 15:30:38 +0000
commitbd22b4ed2cf6a5b4e93e9b0c783629e66a23506c (patch)
treee7aac47a1f86b55125217cdf1b4c7b1bc06f45d5 /bfd/vms-alpha.c
parentc04193133100e85b8e401c9f1e5aafe160005acb (diff)
downloadbinutils-redhat-bd22b4ed2cf6a5b4e93e9b0c783629e66a23506c.tar.gz
2010-06-11 Tristan Gingold <gingold@adacore.com>
* vms-alpha.c (_bfd_vms_slurp_egsd): Always set vma of absolute sections to 0.
Diffstat (limited to 'bfd/vms-alpha.c')
-rw-r--r--bfd/vms-alpha.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 6591f3f89f..ff3062a184 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -1154,12 +1154,18 @@ _bfd_vms_slurp_egsd (bfd *abfd)
if (!bfd_set_section_flags (abfd, section, new_flags))
return FALSE;
section->alignment_power = egps->align;
- align_addr = (1 << section->alignment_power);
- if ((base_addr % align_addr) != 0)
- base_addr += (align_addr - (base_addr % align_addr));
- section->vma = (bfd_vma)base_addr;
- base_addr += section->size;
- section->filepos = (unsigned int)-1;
+ if ((old_flags & EGPS__V_REL) != 0)
+ {
+ /* Give a non-overlapping vma to non absolute sections. */
+ align_addr = (1 << section->alignment_power);
+ if ((base_addr % align_addr) != 0)
+ base_addr += (align_addr - (base_addr % align_addr));
+ section->vma = (bfd_vma)base_addr;
+ base_addr += section->size;
+ }
+ else
+ section->vma = 0;
+ section->filepos = 0;
/* Append it to the section array. */
if (PRIV (section_count) >= PRIV (section_max))