Elf_Rela
int num_rela = sechdrs[i].sh_size / sizeof(Elf_Rela);
Elf_Rela *relas = (void *)ehdr + sechdrs[i].sh_offset;
const Elf_Rela *rela_x = x, *rela_y = y;
static void count_max_entries(Elf_Rela *relas, int num,
sort(relas, num, sizeof(Elf_Rela), compare_rela, NULL);
Elf_Rela *rel = (void *) sechdrs[relsec].sh_addr;
static inline unsigned long count_gots(const Elf_Rela *rela, unsigned long n)
static inline unsigned long count_fdescs(const Elf_Rela *rela, unsigned long n)
static inline unsigned long count_stubs(const Elf_Rela *rela, unsigned long n)
static inline unsigned long count_gots(const Elf_Rela *rela, unsigned long n)
static inline unsigned long count_fdescs(const Elf_Rela *rela, unsigned long n)
static inline unsigned long count_stubs(const Elf_Rela *rela, unsigned long n)
const Elf_Rela *rels = (void *)sechdrs[i].sh_addr;
static bool rela_needs_plt_got_entry(const Elf_Rela *rela)
Elf_Rela *scratch = NULL;
Elf_Rela *new_scratch;
size_t num_relas = sechdrs[i].sh_size / sizeof(Elf_Rela);
Elf_Rela *relas = (void *)ehdr + sechdrs[i].sh_offset;
const Elf_Rela *x = a, *y = b;
static bool duplicate_rela(const Elf_Rela *rela, int idx)
static void count_max_entries(const Elf_Rela *relas, size_t num,
Elf_Rela *rel = (void *) sechdrs[relsec].sh_addr;
Elf_Rela *rela = (Elf_Rela *)&__rela_dyn_start;
for ( ; rela < (Elf_Rela *)&__rela_dyn_end; rela++) {
Elf_Rela *relas;
Elf_Rela *rela;
nrela = sechdrs[i].sh_size / sizeof(Elf_Rela);
static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab,
Elf_Rela *rela;
rela = (Elf_Rela *) sechdrs[relsec].sh_addr;
n = sechdrs[relsec].sh_size / sizeof(Elf_Rela);
static void check_rela(Elf_Rela *rela, struct module *me)
Elf_Rela *rel = (void *)sechdrs[relsec].sh_addr;
Elf_Rela *relas;
relas = (Elf_Rela *) relasec->sh_addr;
for (i = 0; i < relasec->sh_size / sizeof(Elf_Rela); i++) {
static inline uint64_t rela64_##fn_name(Elf_Rela *rela) \
static inline uint64_t rela32_##fn_name(Elf_Rela *rela) \
static inline uint64_t __maybe_unused rela_##fn_name(Elf_Rela *rela) \
static inline void rela64_write_addend(Elf_Rela *rela, uint64_t val)
static inline void rela32_write_addend(Elf_Rela *rela, uint64_t val)
uint64_t (*rela_offset)(Elf_Rela *rela);
uint64_t (*rela_info)(Elf_Rela *rela);
uint64_t (*rela_addend)(Elf_Rela *rela);
void (*rela_write_addend)(Elf_Rela *rela, uint64_t val);
const Elf_Rela *start, const Elf_Rela *stop)
const Elf_Rela *rela;
char const *mc_name = (sizeof(Elf_Rela) == rel_entsize)
mcsec.sh_name = w((sizeof(Elf_Rela) == rel_entsize) + strlen(".rel")
mcsec.sh_type = (sizeof(Elf_Rela) == rel_entsize)
if (rel_entsize == sizeof(Elf_Rela)) {
((Elf_Rela *)mrelp)->r_addend = addend;
static void rela_write_addend(Elf_Rela *rela, uint64_t val)
Elf_Rela *rel;
Elf_Rela *rel;