1 /* Retrieve uninterpreted file contents. 2 Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. 3 Contributed by Ulrich Drepper <drepper (at) redhat.com>, 1998. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation, version 2. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program; if not, write to the Free Software Foundation, 16 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 17 18 #ifdef HAVE_CONFIG_H 19 # include <config.h> 20 #endif 21 22 #include <libelf.h> 23 #include <stddef.h> 24 25 #include "libelfP.h" 26 27 28 char * 29 elf_rawfile (elf, ptr) 30 Elf *elf; 31 size_t *ptr; 32 { 33 if (elf == NULL) 34 { 35 /* No valid descriptor. */ 36 __libelf_seterrno (ELF_E_INVALID_HANDLE); 37 error_out: 38 if (ptr != NULL) 39 *ptr = 0; 40 return NULL; 41 } 42 43 /* If the file is not mmap'ed and not previously loaded, do it now. */ 44 if (elf->map_address == NULL && __libelf_readall (elf) == NULL) 45 goto error_out; 46 47 if (ptr != NULL) 48 *ptr = elf->maximum_size; 49 50 return (char *) elf->map_address + elf->start_offset; 51 } 52