* ldlang.c (lang_size_sections_1): Revert 2005-11-16 functional
authorAlan Modra <amodra@gmail.com>
Fri, 18 Nov 2005 04:12:27 +0000 (04:12 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 18 Nov 2005 04:12:27 +0000 (04:12 +0000)
changes to section alignment.
* ldmisc.c (vfinfo): Handle %ld and %lu.

ld/ChangeLog
ld/ldlang.c
ld/ldmisc.c

index 42b4da8bb8ec62a007d1388818ba7652da1354b4..685bbf32aec84f27a02f1e1c79e6401fbfb7114f 100644 (file)
@@ -1,3 +1,9 @@
+2005-11-18  Alan Modra  <amodra@bigpond.net.au>
+
+       * ldlang.c (lang_size_sections_1): Revert 2005-11-16 functional
+       changes to section alignment.
+       * ldmisc.c (vfinfo): Handle %ld and %lu.
+
 2005-11-16  Mark Mitchell  <mark@codesourcery.com>
 
        * Makefile.am (configdoc.texi): Set top_srcdir in configdoc.texi..
index 6972b50fef76f01429dd38b4a27b8dfb9ba00a78..cba7179699e94c4776dd593b828cdae1dfa58ca9 100644 (file)
@@ -4137,7 +4137,7 @@ lang_size_sections_1
              }
            else
              {
-               bfd_vma savedot;
+               int align;
 
                if (os->addr_tree == NULL)
                  {
@@ -4188,20 +4188,25 @@ lang_size_sections_1
                      }
 
                    newdot = os->region->current;
+                   align = os->bfd_section->alignment_power;
                  }
+               else
+                 align = os->section_alignment;
 
                /* Align to what the section needs.  */
-               savedot = newdot;
-               newdot = align_power (newdot,
-                                     os->bfd_section->alignment_power);
+               if (align > 0)
+                 {
+                   bfd_vma savedot = newdot;
+                   newdot = align_power (newdot, align);
 
-               if (newdot != savedot
-                   && (config.warn_section_align
-                       || os->addr_tree != NULL)
-                   && expld.phase != lang_mark_phase_enum)
-                 einfo (_("%P: warning: changing start of section"
-                          " %s by %lu bytes\n"),
-                        os->name, (unsigned long) (newdot - savedot));
+                   if (newdot != savedot
+                       && (config.warn_section_align
+                           || os->addr_tree != NULL)
+                       && expld.phase != lang_mark_phase_enum)
+                     einfo (_("%P: warning: changing start of section"
+                              " %s by %lu bytes\n"),
+                            os->name, (unsigned long) (newdot - savedot));
+                 }
 
                bfd_set_section_vma (0, os->bfd_section, newdot);
 
index 4797c29768e7132f622e473666f40007fc7c9478..3ba4221e6ee2b9dcfd60ba298c7cbe67ce3d21d8 100644 (file)
@@ -55,6 +55,8 @@
  %W hex bfd_vma with 0x with no leading zeros taking up 8 spaces
  %X no object output, fail return
  %d integer, like printf
+ %ld long, like printf
+ %lu unsigned long, like printf
  %s arbitrary string, like printf
  %u integer, like printf
  %v hex bfd_vma, no leading zeros
@@ -78,10 +80,6 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning)
          fmt++;
          switch (*fmt++)
            {
-           default:
-             fprintf (fp, "%%%c", fmt[-1]);
-             break;
-
            case '%':
              /* literal % */
              putc ('%', fp);
@@ -407,6 +405,25 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning)
              /* unsigned integer, like printf */
              fprintf (fp, "%u", va_arg (arg, unsigned int));
              break;
+
+           case 'l':
+             if (*fmt == 'd')
+               {
+                 fprintf (fp, "%ld", va_arg (arg, long));
+                 ++fmt;
+                 break;
+               }
+             else if (*fmt == 'u')
+               {
+                 fprintf (fp, "%lu", va_arg (arg, unsigned long));
+                 ++fmt;
+                 break;
+               }
+             /* Fall thru */
+
+           default:
+             fprintf (fp, "%%%c", fmt[-1]);
+             break;
            }
        }
     }