From f654f403d36137b18c3739e1feb4bb363f67a81c Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Fri, 11 Jun 2010 15:30:38 +0000 Subject: [PATCH] 2010-06-11 Tristan Gingold * vms-alpha.c (_bfd_vms_slurp_egsd): Always set vma of absolute sections to 0. --- bfd/ChangeLog | 5 +++++ bfd/vms-alpha.c | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0722006d11c..85aa8eb1e74 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2010-06-11 Tristan Gingold + + * vms-alpha.c (_bfd_vms_slurp_egsd): Always set vma of absolute + sections to 0. + 2010-06-11 Tristan Gingold * vms-alpha.c (evax_bfd_print_etir): Handle ETIR__C_STO_GBL_LW. diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c index 6591f3f89f5..ff3062a184b 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)) -- 2.30.2