1 /* Return the size of an object file type. 2 Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. 3 Written by Ulrich Drepper <drepper@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 "libelfP.h" 24 25 #ifndef LIBELFBITS 26 # define LIBELFBITS 32 27 #endif 28 29 30 size_t 31 elfw2(LIBELFBITS, fsize) (type, count, version) 32 Elf_Type type; 33 size_t count; 34 unsigned int version; 35 { 36 /* We do not have differences between file and memory sizes. Better 37 not since otherwise `mmap' would not work. */ 38 if (unlikely (version == EV_NONE) || unlikely (version >= EV_NUM)) 39 { 40 __libelf_seterrno (ELF_E_UNKNOWN_VERSION); 41 return 0; 42 } 43 44 if (unlikely (type >= ELF_T_NUM)) 45 { 46 __libelf_seterrno (ELF_E_UNKNOWN_TYPE); 47 return 0; 48 } 49 50 #if EV_NUM != 2 51 return (count 52 * __libelf_type_sizes[version - 1][ELFW(ELFCLASS,LIBELFBITS) - 1][type]); 53 #else 54 return (count 55 * __libelf_type_sizes[0][ELFW(ELFCLASS,LIBELFBITS) - 1][type]); 56 #endif 57 } 58 #define local_strong_alias(n1, n2) strong_alias (n1, n2) 59 //local_strong_alias (elfw2(LIBELFBITS, fsize), __elfw2(LIBELFBITS, msize)) 60