1 /* This file defines standard ELF types, structures, and macros. 2 Copyright (C) 1995-2020 Free Software Foundation, Inc. 3 4 This file is part of libctf. 5 6 libctf is free software; you can redistribute it and/or modify it under 7 the terms of the GNU General Public License as published by the Free 8 Software Foundation; either version 3, or (at your option) any later 9 version. 10 11 This program is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 See the GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; see the file COPYING. If not see 18 <http://www.gnu.org/licenses/>. */ 19 20 #ifndef _CTF_ELF_H 21 #define _CTF_ELF_H 22 23 #include "config.h" 24 #include "ansidecl.h" 25 #include <stdint.h> 26 #include "elf/common.h" 27 #include "elf/external.h" 28 29 typedef uint32_t Elf32_Word; 30 typedef uint32_t Elf64_Word; 31 typedef uint32_t Elf32_Addr; 32 typedef uint64_t Elf64_Addr; 33 typedef uint64_t Elf64_Xword; 34 typedef uint16_t Elf32_Section; 35 typedef uint16_t Elf64_Section; 36 37 #define SHN_EXTABS 0xFFF1 /* Associated symbol is absolute */ 38 39 /* Symbol table entry. */ 40 41 typedef struct 42 { 43 Elf32_Word st_name; /* Symbol name (string tbl index) */ 44 Elf32_Addr st_value; /* Symbol value */ 45 Elf32_Word st_size; /* Symbol size */ 46 unsigned char st_info; /* Symbol type and binding */ 47 unsigned char st_other; /* Symbol visibility */ 48 Elf32_Section st_shndx; /* Section index */ 49 } Elf32_Sym; 50 51 typedef struct 52 { 53 Elf64_Word st_name; /* Symbol name (string tbl index) */ 54 unsigned char st_info; /* Symbol type and binding */ 55 unsigned char st_other; /* Symbol visibility */ 56 Elf64_Section st_shndx; /* Section index */ 57 Elf64_Addr st_value; /* Symbol value */ 58 Elf64_Xword st_size; /* Symbol size */ 59 } Elf64_Sym; 60 61 #endif /* _CTF_ELF_H */ 62