BFD io function pointers

SammyG sammygamuel@gmail.com
Sat Aug 10 15:40:00 GMT 2013


Hi all.

Where in the code are the function pointers in bfd_iovec actually 
assigned functions? And where are the function definitions for these 
functions?

/* Extracted from bfdio.c.  */
struct bfd_iovec
{
   /* To avoid problems with macros, a "b" rather than "f"
      prefix is prepended to each method name.  */
   /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
      bytes starting at PTR.  Return the number of bytes actually
      transfered (a read past end-of-file returns less than NBYTES),
      or -1 (setting <<bfd_error>>) if an error occurs. */
   file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
   file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
                       file_ptr nbytes);
   /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
      if an error occurs.  */
   file_ptr (*btell) (struct bfd *abfd);
   /* For the following, on successful completion a value of 0 is returned.
      Otherwise, a value of -1 is returned (and <<bfd_error>> is set).  */
   int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
   int (*bclose) (struct bfd *abfd);
   int (*bflush) (struct bfd *abfd);
   int (*bstat) (struct bfd *abfd, struct stat *sb);
   /* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are 
the usual
      mmap parameter, except that LEN and OFFSET do not need to be page
      aligned.  Returns (void *)-1 on failure, mmapped address on success.
      Also write in MAP_ADDR the address of the page aligned buffer and in
      MAP_LEN the size mapped (a page multiple).  Use unmap with 
MAP_ADDR and
      MAP_LEN to unmap.  */
   void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
                   int prot, int flags, file_ptr offset,
                   void **map_addr, bfd_size_type *map_len);
};




More information about the Binutils mailing list