blob: fee20289e1fc625e60d724264d494f2fd9d4b3a1 [file] [log] [blame]
/* SPDX-License-Identifier: LGPL-2.0-or-later */
/*
* Relevant definitions from uapi/linux/elf.h and asm/elf.h
*/
#ifndef _ELF_H_
#define _ELF_H_
#include <libcflat.h>
/* 32-bit ELF base types. */
typedef u32 Elf32_Addr;
typedef u32 Elf32_Xword;
typedef s32 Elf32_Sxword;
/* 64-bit ELF base types. */
typedef u64 Elf64_Addr;
typedef u64 Elf64_Xword;
typedef s64 Elf64_Sxword;
typedef struct {
Elf64_Sxword d_tag; /* entry tag value */
union {
Elf64_Xword d_val;
Elf64_Addr d_ptr;
} d_un;
} Elf64_Dyn;
typedef struct elf64_rel {
Elf64_Addr r_offset; /* Location at which to apply the action */
Elf64_Xword r_info; /* index and type of relocation */
} Elf64_Rel;
typedef struct elf32_rela {
Elf32_Addr r_offset; /* Location at which to apply the action */
Elf32_Xword r_info; /* index and type of relocation */
Elf32_Sxword r_addend; /* Constant addend used to compute value */
} Elf32_Rela;
typedef struct elf64_rela {
Elf64_Addr r_offset; /* Location at which to apply the action */
Elf64_Xword r_info; /* index and type of relocation */
Elf64_Sxword r_addend; /* Constant addend used to compute value */
} Elf64_Rela;
/* This is the info that is needed to parse the dynamic section of the file */
#define DT_NULL 0
#define DT_RELA 7
#define DT_RELASZ 8
#define DT_RELAENT 9
/* x86 relocation types. */
#define R_X86_64_NONE 0 /* No reloc */
#define R_X86_64_RELATIVE 8 /* Adjust by program base */
/*
* AArch64 static relocation types.
*/
/* Miscellaneous. */
#define R_AARCH64_NONE 256
#define R_AARCH64_RELATIVE 1027
/* The following are used with relocations */
#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
/*
* riscv static relocation types.
*/
#define R_RISCV_RELATIVE 3
#endif /* _ELF_H_ */