This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] check return value of do_write in sim_load_file()


On Thursday 04 February 2010 16:58:18 Doug Evans wrote:
> On Wed, Feb 3, 2010 at 11:07 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> > if the do_write function (which is the real meat of sim_load_file())
> > fails, nothing is displayed in the load output to indicate a problem.  so
> > check the return value before declaring everything peachy.
> >
> > 2010-02-04  Mike Frysinger  <vapier@gentoo.org>
> >
> >        * sim-load.c (sim_load_file): Check do_write() return value.
> >
> > RCS file: /cvs/src/src/sim/common/sim-load.c,v
> > retrieving revision 1.14
> > diff -u -p -r1.14 sim-load.c
> > --- sim/common/sim-load.c       1 Jan 2010 10:03:27 -0000       1.14
> > +++ sim/common/sim-load.c       4 Feb 2010 07:02:42 -0000
> > @@ -140,8 +140,10 @@ sim_load_file (sd, myname, callback, pro
> >                }
> >              data_count += size;
> >              bfd_get_section_contents (result_bfd, s, buffer, 0, size);
> > -             do_write (sd, lma, buffer, size);
> > -             found_loadable_section = 1;
> > +             if (do_write (sd, lma, buffer, size) != size)
> > +               eprintf (callback, "\tloading section failed\n");
> > +             else
> > +               found_loadable_section = 1;
> >              free (buffer);
> >            }
> >        }
> 
> If there's an error loading a section I think it would be better to
> fail the entire call.  How about something like
> 
> if (do_write (sd, lma, buffer, size) != size)
>   {
>     eprintf (callback, "%s: error loading section %s\n",
>                myname, bfd_get_section_name (result_bfd, s));
>     /* Only close if we opened it.  */
>     if (prog_bfd == NULL)
>       bfd_close (result_bfd);
>     free (buffer);
>     return NULL;
>   }

that works for me too
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]