~ubuntu-branches/debian/lenny/elfutils/lenny

« back to all changes in this revision

Viewing changes to libebl/ebl-hooks.h

  • Committer: Bazaar Package Importer
  • Author(s): Kurt Roeckx
  • Date: 2006-08-27 15:48:23 UTC
  • Revision ID: james.westby@ubuntu.com-20060827154823-mjwd7ydlbxgwqn4u
Tags: upstream-0.123
ImportĀ upstreamĀ versionĀ 0.123

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Backend hook signatures internal interface for libebl.
 
2
   Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006 Red Hat, Inc.
 
3
   This file is part of Red Hat elfutils.
 
4
 
 
5
   Red Hat elfutils is free software; you can redistribute it and/or modify
 
6
   it under the terms of the GNU General Public License as published by the
 
7
   Free Software Foundation; version 2 of the License.
 
8
 
 
9
   Red Hat elfutils is distributed in the hope that it will be useful, but
 
10
   WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
12
   General Public License for more details.
 
13
 
 
14
   You should have received a copy of the GNU General Public License along
 
15
   with Red Hat elfutils; if not, write to the Free Software Foundation,
 
16
   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
 
17
 
 
18
   In addition, as a special exception, Red Hat, Inc. gives You the
 
19
   additional right to link the code of Red Hat elfutils with code licensed
 
20
   under any Open Source Initiative certified open source license
 
21
   (http://www.opensource.org/licenses/index.php) which requires the
 
22
   distribution of source code with any binary distribution and to
 
23
   distribute linked combinations of the two.  Non-GPL Code permitted under
 
24
   this exception must only link to the code of Red Hat elfutils through
 
25
   those well defined interfaces identified in the file named EXCEPTION
 
26
   found in the source code files (the "Approved Interfaces").  The files
 
27
   of Non-GPL Code may instantiate templates or use macros or inline
 
28
   functions from the Approved Interfaces without causing the resulting
 
29
   work to be covered by the GNU General Public License.  Only Red Hat,
 
30
   Inc. may make changes or additions to the list of Approved Interfaces.
 
31
   Red Hat's grant of this exception is conditioned upon your not adding
 
32
   any new exceptions.  If you wish to add a new Approved Interface or
 
33
   exception, please contact Red Hat.  You must obey the GNU General Public
 
34
   License in all respects for all of the Red Hat elfutils code and other
 
35
   code used in conjunction with Red Hat elfutils except the Non-GPL Code
 
36
   covered by this exception.  If you modify this file, you may extend this
 
37
   exception to your version of the file, but you are not obligated to do
 
38
   so.  If you do not wish to provide this exception without modification,
 
39
   you must delete this exception statement from your version and license
 
40
   this file solely under the GPL without exception.
 
41
 
 
42
   Red Hat elfutils is an included package of the Open Invention Network.
 
43
   An included package of the Open Invention Network is a package for which
 
44
   Open Invention Network licensees cross-license their patents.  No patent
 
45
   license is granted, either expressly or impliedly, by designation as an
 
46
   included package.  Should you wish to participate in the Open Invention
 
47
   Network licensing program, please visit www.openinventionnetwork.com
 
48
   <http://www.openinventionnetwork.com>.  */
 
49
 
 
50
/* Return symbol representaton of object file type.  */
 
51
const char *EBLHOOK(object_type_name) (int, char *, size_t);
 
52
 
 
53
/* Return symbolic representation of relocation type.  */
 
54
const char *EBLHOOK(reloc_type_name) (int, char *, size_t);
 
55
 
 
56
/* Check relocation type.  */
 
57
bool EBLHOOK(reloc_type_check) (int);
 
58
 
 
59
/* Check if relocation type is for simple absolute relocations.  */
 
60
Elf_Type EBLHOOK(reloc_simple_type) (Ebl *, int);
 
61
 
 
62
/* Check relocation type use.  */
 
63
bool EBLHOOK(reloc_valid_use) (Elf *, int);
 
64
 
 
65
/* Return true if the symbol type is that referencing the GOT.  */
 
66
bool EBLHOOK(gotpc_reloc_check) (Elf *, int);
 
67
 
 
68
/* Return symbolic representation of segment type.  */
 
69
const char *EBLHOOK(segment_type_name) (int, char *, size_t);
 
70
 
 
71
/* Return symbolic representation of section type.  */
 
72
const char *EBLHOOK(section_type_name) (int, char *, size_t);
 
73
 
 
74
/* Return section name.  */
 
75
const char *EBLHOOK(section_name) (int, int, char *, size_t);
 
76
 
 
77
/* Return next machine flag name.  */
 
78
const char *EBLHOOK(machine_flag_name) (GElf_Word *);
 
79
 
 
80
/* Check whether machine flags are valid.  */
 
81
bool EBLHOOK(machine_flag_check) (GElf_Word);
 
82
 
 
83
/* Return symbolic representation of symbol type.  */
 
84
const char *EBLHOOK(symbol_type_name) (int, char *, size_t);
 
85
 
 
86
/* Return symbolic representation of symbol binding.  */
 
87
const char *EBLHOOK(symbol_binding_name) (int, char *, size_t);
 
88
 
 
89
/* Return symbolic representation of dynamic tag.  */
 
90
const char *EBLHOOK(dynamic_tag_name) (int64_t, char *, size_t);
 
91
 
 
92
/* Check dynamic tag.  */
 
93
bool EBLHOOK(dynamic_tag_check) (int64_t);
 
94
 
 
95
/* Combine section header flags values.  */
 
96
GElf_Word EBLHOOK(sh_flags_combine) (GElf_Word, GElf_Word);
 
97
 
 
98
/* Return symbolic representation of OS ABI.  */
 
99
const char *EBLHOOK(osabi_name) (int, char *, size_t);
 
100
 
 
101
/* Name of a note entry type for core files.  */
 
102
const char *EBLHOOK(core_note_type_name) (uint32_t, char *, size_t);
 
103
 
 
104
/* Name of a note entry type for object files.  */
 
105
const char *EBLHOOK(object_note_type_name) (uint32_t, char *, size_t);
 
106
 
 
107
/* Handle core note.  */
 
108
bool EBLHOOK(core_note) (const char *, uint32_t, uint32_t, const char *);
 
109
 
 
110
/* Handle object file note.  */
 
111
bool EBLHOOK(object_note) (const char *, uint32_t, uint32_t, const char *);
 
112
 
 
113
/* Check section name for being that of a debug informatino section.  */
 
114
bool EBLHOOK(debugscn_p) (const char *);
 
115
 
 
116
/* Check whether given relocation is a copy relocation.  */
 
117
bool EBLHOOK(copy_reloc_p) (int);
 
118
 
 
119
/* Check whether given relocation is a no-op relocation.  */
 
120
bool EBLHOOK(none_reloc_p) (int);
 
121
 
 
122
/* Check whether given relocation is a relative relocation.  */
 
123
bool EBLHOOK(relative_reloc_p) (int);
 
124
 
 
125
/* Check whether given symbol's value is ok despite normal checks.  */
 
126
bool EBLHOOK(check_special_symbol) (Elf *, GElf_Ehdr *, const GElf_Sym *,
 
127
                              const char *, const GElf_Shdr *);
 
128
 
 
129
/* Check if backend uses a bss PLT in this file.  */
 
130
bool EBLHOOK(bss_plt_p) (Elf *, GElf_Ehdr *);
 
131
 
 
132
/* Return location expression to find return value given the
 
133
   DW_AT_type DIE of a DW_TAG_subprogram DIE.  */
 
134
int EBLHOOK(return_value_location) (Dwarf_Die *functypedie,
 
135
                                    const Dwarf_Op **locp);
 
136
 
 
137
/* Return register name information.  */
 
138
ssize_t EBLHOOK(register_name) (Ebl *ebl,
 
139
                                int regno, char *name, size_t namelen,
 
140
                                const char **prefix, const char **setname);
 
141
 
 
142
 
 
143
/* Destructor for ELF backend handle.  */
 
144
void EBLHOOK(destr) (struct ebl *);