[rfa] Add the bfd_iovec

Andrew Cagney cagney@gnu.org
Mon Apr 12 22:51:00 GMT 2004


> Andrew Cagney <cagney@gnu.org> writes:
> 
>>> Following up on earlier threads:
>>>      http://sources.redhat.com/ml/binutils/2004-02/msg00167.html
>>> This adds an IOVEC to BFD.  The IOVEC lets the client open a BFD on an
>>> arbitrary object (file, memory, GDB inferior, ...).  The attached
>>> implements the iovec and then converts the file-io backend.
>>> Converting the memory bfd to an IOVEC is a follow-on change.
> 
> 
> In general, I like it, but:
> 
> * bfd_iovec needs each entry point to be clearly documented,
>   particularly how error conditions are handled.

I'll give it a go.

> * I'm not crazy about the berror entry point.  Right now it is used in
>   exactly one place, to indicate whether a short read is an error or
>   simply a truncated file.  Since bfd_iovec is only going to be called
>   by BFD routines, I think it would be quite reasonable to make the
>   bread entry point responsible for calling bfd_set_error.  Then the
>   caller does not need to go back in to find out what a short read
>   means.  Note also that berror is the only function which doesn't
>   have an obvious mapping to a Unix system call.

There are three cases here:

- error
- eof
- partial read (as in the next read should yield more data)

I guess BFD isn't set up for partial transfers and retrys so the third 
case doesn't apply?

> * The same error handling principle could apply to all the other
>   bfd_iovec routines as well, of course.  Compare with bfd_malloc, for
>   example: it just calls malloc and bfd_set_error, to centralize error
>   handling.  I think we should use these routines to put the error
>   handling in the place which really knows what the error is.  But I'm
>   certainly open to a counter argument.

Andrew




More information about the Binutils mailing list