* ldlang.c (lang_size_sections): Keep a valid output_offset field
authorAlan Modra <amodra@gmail.com>
Wed, 31 Oct 2001 01:12:26 +0000 (01:12 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 31 Oct 2001 01:12:26 +0000 (01:12 +0000)
for padding statements.

ld/ChangeLog
ld/ldlang.c

index 4fe4a54cacd306f615d4acd44177635fae1a016a..e1dc13232d2a844000a58103c94b993260808793 100644 (file)
@@ -1,3 +1,8 @@
+2001-10-31  David Heine  <dlheine@tensilica.com>
+
+       * ldlang.c (lang_size_sections): Keep a valid output_offset field
+       for padding statements.
+
 2001-10-30  Hans-Peter Nilsson  <hp@bitrange.com>
 
        * configure.tgt (mmix-*-*): New target.
@@ -8,7 +13,7 @@
        scripttempl/mmo.sc: New files.
        * gen-doc.texi: @set MMIX.
        * ld.texinfo: Ditto.
-       [MMIX] Add MMIX node.
+       [MMIX] Add MMIX node.
        * Makefile.in: Regenerate.
 
 2001-10-29  Kazu Hirata  <kazu@hxi.com>
@@ -48,7 +53,7 @@
        * pe-dll.c (autofilter_objectlist):  Add startup objects
        for profiling.
        (auto-export): Constify char * p.
-       Extract file basename and use strcmp rather than ststr 
+       Extract file basename and use strcmp rather than ststr
        for object lookup.
 
 2001-10-18  Chris Demetriou  <cgd@broadcom.com>
index 014c791c12429cf3c0d83f4e1b4e6d6910eba570..40f109a94c0aca5ca542089c2bb30384bc4725f8 100644 (file)
@@ -3156,6 +3156,14 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
             padding to shrink.  If padding is needed on this pass, it
             will be added back in.  */
          s->padding_statement.size = 0;
+
+         /* Make sure output_offset is valid.  If relaxation shrinks
+            the section and this pad isn't needed, it's possible to
+            have output_offset larger than the final size of the
+            section.  bfd_set_section_contents will complain even for
+            a pad size of zero.  */
+         s->padding_statement.output_offset
+           = dot - output_section_statement->bfd_section->vma;
          break;
 
        case lang_group_statement_enum: