1/* This file defines standard ELF types, structures, and macros.
2   Copyright (C) 1995-2022 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
29typedef uint32_t Elf32_Word;
30typedef uint32_t Elf64_Word;
31typedef uint32_t Elf32_Addr;
32typedef uint64_t Elf64_Addr;
33typedef uint64_t Elf64_Xword;
34typedef uint16_t Elf32_Section;
35typedef uint16_t Elf64_Section;
36
37#define SHN_EXTABS	0xFFF1		/* Associated symbol is absolute */
38
39/* Symbol table entry.  */
40
41typedef 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
51typedef 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