diff options
author | Tristan Gingold <gingold@adacore.com> | 2011-06-27 08:41:00 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@adacore.com> | 2011-06-27 08:41:00 +0000 |
commit | 4c95ab762cbc17e3221e4cc38e728e665576793f (patch) | |
tree | db69273599930cdda71538ce2a40b1932d7bb230 /bfd/bfdio.c | |
parent | 62a35308be34436a66993d20f36146cb4ebc500b (diff) | |
download | fsf-binutils-gdb-4c95ab762cbc17e3221e4cc38e728e665576793f.zip fsf-binutils-gdb-4c95ab762cbc17e3221e4cc38e728e665576793f.tar.gz fsf-binutils-gdb-4c95ab762cbc17e3221e4cc38e728e665576793f.tar.bz2 |
2011-06-27 Tristan Gingold <gingold@adacore.com>
* cache.c: Include bfd_stdint.h.
(cache_bmmap): Change profile. Return region start and size.
* bfdio.c (struct bfd_iovec): Change bmmap profile.
(bfd_mmap): Change profile and adjust. Update comment.
(memory_bmmap): Change profile.
* opncls.c (opncls_bmmap): Change profile.
* vms-lib.c (vms_lib_bmmap): Likewise.
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
Diffstat (limited to 'bfd/bfdio.c')
-rw-r--r-- | bfd/bfdio.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/bfd/bfdio.c b/bfd/bfdio.c index dab8e88..841c781 100644 --- a/bfd/bfdio.c +++ b/bfd/bfdio.c @@ -158,9 +158,15 @@ DESCRIPTION . int (*bclose) (struct bfd *abfd); . int (*bflush) (struct bfd *abfd); . int (*bstat) (struct bfd *abfd, struct stat *sb); -. {* Just like mmap: (void*)-1 on failure, mmapped address on success. *} +. {* 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); +. int prot, int flags, file_ptr offset, +. void **map_addr, bfd_size_type *map_len); .}; .extern const struct bfd_iovec _bfd_memory_iovec; @@ -423,23 +429,28 @@ FUNCTION SYNOPSIS void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len, - int prot, int flags, file_ptr offset); + int prot, int flags, file_ptr offset, + void **map_addr, bfd_size_type *map_len); DESCRIPTION Return mmap()ed region of the file, if possible and implemented. + LEN and OFFSET do not need to be page aligned. The page aligned + address and length are written to MAP_ADDR and MAP_LEN. */ void * bfd_mmap (bfd *abfd, void *addr, bfd_size_type len, - int prot, int flags, file_ptr offset) + int prot, int flags, file_ptr offset, + void **map_addr, bfd_size_type *map_len) { void *ret = (void *)-1; if (abfd->iovec == NULL) return ret; - return abfd->iovec->bmmap (abfd, addr, len, prot, flags, offset); + return abfd->iovec->bmmap (abfd, addr, len, prot, flags, offset, + map_addr, map_len); } /* Memory file I/O operations. */ @@ -586,7 +597,9 @@ memory_bstat (bfd *abfd, struct stat *statbuf) static void * memory_bmmap (bfd *abfd ATTRIBUTE_UNUSED, void *addr ATTRIBUTE_UNUSED, bfd_size_type len ATTRIBUTE_UNUSED, int prot ATTRIBUTE_UNUSED, - int flags ATTRIBUTE_UNUSED, file_ptr offset ATTRIBUTE_UNUSED) + int flags ATTRIBUTE_UNUSED, file_ptr offset ATTRIBUTE_UNUSED, + void **map_addr ATTRIBUTE_UNUSED, + bfd_size_type *map_len ATTRIBUTE_UNUSED) { return (void *)-1; } |