Don't abort for invalid input, print an error message instead.
[deliverable/binutils-gdb.git] / bfd / section.c
index ef7a7e6fe2aa08ed8a47d3df62f1dbe508327e08..13e10d30f67536aff91177671dbe9f41d30cc2f2 100644 (file)
@@ -111,7 +111,6 @@ SUBSECTION
 |     size            0x103   |
 |     output_section  --------|
 
-
 SUBSECTION
        Link orders
 
@@ -133,7 +132,6 @@ SUBSECTION
 
 */
 
-
 #include "bfd.h"
 #include "sysdep.h"
 #include "libbfd.h"
@@ -567,7 +565,7 @@ static const asymbol global_syms[] =
     { NAME,  IDX, 0,     NULL, FLAGS, 0,            0,                 \
                                                                        \
     /* linker_mark, gc_mark, segment_mark, vma, lma, _cooked_size,   */        \
-       0,           0,       0,            0,   0,   0,                \
+       0,           1,       0,            0,   0,   0,                \
                                                                        \
     /* _raw_size, output_offset, output_section,    alignment_power, */ \
        0,         0,           (struct sec *) &SEC, 0,                 \
@@ -642,7 +640,6 @@ bfd_get_section_by_name (abfd, name)
   return NULL;
 }
 
-
 /*
 FUNCTION
        bfd_get_unique_section_name
@@ -693,7 +690,6 @@ bfd_get_unique_section_name (abfd, templat, count)
   return sname;
 }
 
-
 /*
 FUNCTION
        bfd_make_section_old_way
@@ -719,7 +715,6 @@ DESCRIPTION
 
 */
 
-
 asection *
 bfd_make_section_old_way (abfd, name)
      bfd *abfd;
@@ -867,7 +862,6 @@ bfd_make_section (abfd, name)
   return bfd_make_section_anyway (abfd, name);
 }
 
-
 /*
 FUNCTION
        bfd_set_section_flags
@@ -911,14 +905,13 @@ bfd_set_section_flags (abfd, section, flags)
   return true;
 }
 
-
 /*
 FUNCTION
        bfd_map_over_sections
 
 SYNOPSIS
        void bfd_map_over_sections(bfd *abfd,
-                                  void (*func)(bfd *abfd,
+                                  void (*func) (bfd *abfd,
                                                asection *sect,
                                                PTR obj),
                                   PTR obj);
@@ -937,7 +930,6 @@ DESCRIPTION
 |         for (p = abfd->sections; p != NULL; p = p->next)
 |            func(abfd, p, ...)
 
-
 */
 
 /*VARARGS2*/
@@ -957,7 +949,6 @@ bfd_map_over_sections (abfd, operation, user_storage)
     abort ();
 }
 
-
 /*
 FUNCTION
        bfd_set_section_size
@@ -982,7 +973,7 @@ bfd_set_section_size (abfd, ptr, val)
      bfd_size_type val;
 {
   /* Once you've started writing to any section you cannot create or change
-     the size of any others. */
+     the size of any others.  */
 
   if (abfd->output_has_begun)
     {
@@ -1008,15 +999,12 @@ SYNOPSIS
          file_ptr offset,
          bfd_size_type count);
 
-
 DESCRIPTION
        Sets the contents of the section @var{section} in BFD
        @var{abfd} to the data starting in memory at @var{data}. The
        data is written to the output section starting at offset
        @var{offset} for @var{count} octets.
 
-
-
        Normally <<true>> is returned, else <<false>>. Possible error
        returns are:
        o <<bfd_error_no_contents>> -
@@ -1027,7 +1015,6 @@ DESCRIPTION
        This routine is front end to the back end function
        <<_bfd_set_section_contents>>.
 
-
 */
 
 #define bfd_get_section_size_now(abfd,sec) \
@@ -1081,6 +1068,11 @@ bfd_set_section_contents (abfd, section, location, offset, count)
       break;
     }
 
+  /* Record a copy of the data in memory if desired.  */
+  if (section->contents
+      && location != section->contents + offset)
+    memcpy (section->contents + offset, location, count);
+
   if (BFD_SEND (abfd, _bfd_set_section_contents,
                (abfd, section, location, offset, count)))
     {
@@ -1112,8 +1104,6 @@ DESCRIPTION
        with zeroes. If no errors occur, <<true>> is returned, else
        <<false>>.
 
-
-
 */
 boolean
 bfd_get_section_contents (abfd, section, location, offset, count)
This page took 0.02523 seconds and 4 git commands to generate.