blob: f9880532d6a9b0b1f1b2a2281fe1c3db8eacc601 [file] [log] [blame]
/* Backend hook signatures internal interface for libebl.
Copyright (C) 2000, 2001, 2002, 2004, 2005 Red Hat, Inc.
This program is Open Source software; you can redistribute it and/or
modify it under the terms of the Open Software License version 1.0 as
published by the Open Source Initiative.
You should have received a copy of the Open Software License along
with this program; if not, you may obtain a copy of the Open Software
License version 1.0 from http://www.opensource.org/licenses/osl.php or
by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
3001 King Ranch Road, Ukiah, CA 95482. */
/* Return symbol representaton of object file type. */
const char *EBLHOOK(object_type_name) (int, char *, size_t);
/* Return symbolic representation of relocation type. */
const char *EBLHOOK(reloc_type_name) (int, char *, size_t);
/* Check relocation type. */
bool EBLHOOK(reloc_type_check) (int);
/* Check if relocation type is for simple absolute relocations. */
Elf_Type EBLHOOK(reloc_simple_type) (Ebl *, int);
/* Check relocation type use. */
bool EBLHOOK(reloc_valid_use) (Elf *, int);
/* Return true if the symbol type is that referencing the GOT. */
bool EBLHOOK(gotpc_reloc_check) (Elf *, int);
/* Return symbolic representation of segment type. */
const char *EBLHOOK(segment_type_name) (int, char *, size_t);
/* Return symbolic representation of section type. */
const char *EBLHOOK(section_type_name) (int, char *, size_t);
/* Return section name. */
const char *EBLHOOK(section_name) (int, int, char *, size_t);
/* Return next machine flag name. */
const char *EBLHOOK(machine_flag_name) (GElf_Word *);
/* Check whether machine flags are valid. */
bool EBLHOOK(machine_flag_check) (GElf_Word);
/* Return symbolic representation of symbol type. */
const char *EBLHOOK(symbol_type_name) (int, char *, size_t);
/* Return symbolic representation of symbol binding. */
const char *EBLHOOK(symbol_binding_name) (int, char *, size_t);
/* Return symbolic representation of dynamic tag. */
const char *EBLHOOK(dynamic_tag_name) (int64_t, char *, size_t);
/* Check dynamic tag. */
bool EBLHOOK(dynamic_tag_check) (int64_t);
/* Combine section header flags values. */
GElf_Word EBLHOOK(sh_flags_combine) (GElf_Word, GElf_Word);
/* Return symbolic representation of OS ABI. */
const char *EBLHOOK(osabi_name) (int, char *, size_t);
/* Name of a note entry type for core files. */
const char *EBLHOOK(core_note_type_name) (uint32_t, char *, size_t);
/* Name of a note entry type for object files. */
const char *EBLHOOK(object_note_type_name) (uint32_t, char *, size_t);
/* Handle core note. */
bool EBLHOOK(core_note) (const char *, uint32_t, uint32_t, const char *);
/* Handle object file note. */
bool EBLHOOK(object_note) (const char *, uint32_t, uint32_t, const char *);
/* Check section name for being that of a debug informatino section. */
bool EBLHOOK(debugscn_p) (const char *);
/* Check whether given relocation is a copy relocation. */
bool EBLHOOK(copy_reloc_p) (int);
/* Check whether given symbol's value is ok despite normal checks. */
bool EBLHOOK(check_special_symbol) (Elf *, GElf_Ehdr *, const GElf_Sym *,
const char *, const GElf_Shdr *);
/* Check if backend uses a bss PLT in this file. */
bool EBLHOOK(bss_plt_p) (Elf *, GElf_Ehdr *);
/* Return location expression to find return value given the
DW_AT_type DIE of a DW_TAG_subprogram DIE. */
int EBLHOOK(return_value_location) (Dwarf_Die *functypedie,
const Dwarf_Op **locp);
/* Return register name information. */
ssize_t EBLHOOK(register_name) (Ebl *ebl,
int regno, char *name, size_t namelen,
const char **prefix, const char **setname);
/* Destructor for ELF backend handle. */
void EBLHOOK(destr) (struct ebl *);