summaryrefslogtreecommitdiffstats
path: root/libebl/ebl-hooks.h
diff options
context:
space:
mode:
authorRoland McGrath <[email protected]>2005-11-16 01:57:40 +0000
committerRoland McGrath <[email protected]>2005-11-16 01:57:40 +0000
commitcd60ea83050d9fb48c3204005f475df460f433b6 (patch)
treee083a367ff3c5598999f3fe23df1fba35681ef31 /libebl/ebl-hooks.h
parent1b8b446a794ac4babfd687ca48de32e5f4aaa539 (diff)
Revamp libebl/common-reloc.c code to share source at compile time only and not extend the libebl.a behavior itself.
Diffstat (limited to 'libebl/ebl-hooks.h')
-rw-r--r--libebl/ebl-hooks.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h
new file mode 100644
index 00000000..1056c42b
--- /dev/null
+++ b/libebl/ebl-hooks.h
@@ -0,0 +1,91 @@
+/* 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 *);
+
+/* Destructor for ELF backend handle. */
+void EBLHOOK(destr) (struct ebl *);