* ldlang.c (lang_size_sections_1): Align lma using same alignment
authorAlan Modra <amodra@gmail.com>
Sat, 4 Dec 2010 03:30:45 +0000 (03:30 +0000)
committerAlan Modra <amodra@gmail.com>
Sat, 4 Dec 2010 03:30:45 +0000 (03:30 +0000)
as for vma.

ld/ChangeLog
ld/ldlang.c

index 2aa1dc0be91d0eacde26287255749a85be5f31a3..66aee40ee99655f619db9cc91885afc78d8530b5 100644 (file)
@@ -1,3 +1,8 @@
+2010-12-04  Alan Modra  <amodra@gmail.com>
+
+       * ldlang.c (lang_size_sections_1): Align lma using same alignment
+       as for vma.
+
 2010-12-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        * lexsup.c (ld_options): Fix a typo in comments.
index f74c1b5424bc7113edbeddf2bcc3d9b28fa7b036..2927ec8a95e7b6e9b500d8634361dad77a52b4e3 100644 (file)
@@ -4788,6 +4788,7 @@ lang_size_sections_1
            bfd_vma newdot, after;
            lang_output_section_statement_type *os;
            lang_memory_region_type *r;
+           int section_alignment = 0;
 
            os = &s->output_section_statement;
            if (os->constraint == -1)
@@ -4857,8 +4858,6 @@ lang_size_sections_1
              }
            else
              {
-               int align;
-
                if (os->addr_tree == NULL)
                  {
                    /* No address specified for this section, get one
@@ -4909,16 +4908,16 @@ lang_size_sections_1
                      }
 
                    newdot = os->region->current;
-                   align = os->bfd_section->alignment_power;
+                   section_alignment = os->bfd_section->alignment_power;
                  }
                else
-                 align = os->section_alignment;
+                 section_alignment = os->section_alignment;
 
                /* Align to what the section needs.  */
-               if (align > 0)
+               if (section_alignment > 0)
                  {
                    bfd_vma savedot = newdot;
-                   newdot = align_power (newdot, align);
+                   newdot = align_power (newdot, section_alignment);
 
                    if (newdot != savedot
                        && (config.warn_section_align
@@ -4974,8 +4973,8 @@ lang_size_sections_1
              {
                bfd_vma lma = os->lma_region->current;
 
-               if (os->section_alignment != -1)
-                 lma = align_power (lma, os->section_alignment);
+               if (section_alignment > 0)
+                 lma = align_power (lma, section_alignment);
                os->bfd_section->lma = lma;
              }
            else if (r->last_os != NULL
@@ -5016,8 +5015,8 @@ lang_size_sections_1
                    else
                      lma = dot + last->lma - last->vma;
 
-                   if (os->section_alignment != -1)
-                     lma = align_power (lma, os->section_alignment);
+                   if (section_alignment > 0)
+                     lma = align_power (lma, section_alignment);
                    os->bfd_section->lma = lma;
                  }
              }