xref: /minix3/external/gpl3/binutils/lib/libbfd/arch/earm/bfd.h (revision c9ea9e7af84fcba485b32ccd2c85edb945b1f323)
1d19d7d58SLionel Sambuc /* This file is automatically generated.  DO NOT EDIT! */
2d19d7d58SLionel Sambuc /* Generated from: 	NetBSD: mknative-binutils,v 1.8 2011/09/25 04:00:58 christos Exp  */
3d19d7d58SLionel Sambuc /* Generated from: NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp  */
4d19d7d58SLionel Sambuc 
5d19d7d58SLionel Sambuc /* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically
6d19d7d58SLionel Sambuc    generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
7d19d7d58SLionel Sambuc    "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
8d19d7d58SLionel Sambuc    "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
9d19d7d58SLionel Sambuc    "linker.c", "simple.c" and "compress.c".
10d19d7d58SLionel Sambuc    Run "make headers" in your build bfd/ to regenerate.  */
11d19d7d58SLionel Sambuc 
12d19d7d58SLionel Sambuc /* Main header file for the bfd library -- portable access to object files.
13d19d7d58SLionel Sambuc 
14c566d462SLionel Sambuc    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
15*c9ea9e7aSLionel Sambuc    2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
16*c9ea9e7aSLionel Sambuc    2012 Free Software Foundation, Inc.
17d19d7d58SLionel Sambuc 
18d19d7d58SLionel Sambuc    Contributed by Cygnus Support.
19d19d7d58SLionel Sambuc 
20d19d7d58SLionel Sambuc    This file is part of BFD, the Binary File Descriptor library.
21d19d7d58SLionel Sambuc 
22d19d7d58SLionel Sambuc    This program is free software; you can redistribute it and/or modify
23d19d7d58SLionel Sambuc    it under the terms of the GNU General Public License as published by
24d19d7d58SLionel Sambuc    the Free Software Foundation; either version 3 of the License, or
25d19d7d58SLionel Sambuc    (at your option) any later version.
26d19d7d58SLionel Sambuc 
27d19d7d58SLionel Sambuc    This program is distributed in the hope that it will be useful,
28d19d7d58SLionel Sambuc    but WITHOUT ANY WARRANTY; without even the implied warranty of
29d19d7d58SLionel Sambuc    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
30d19d7d58SLionel Sambuc    GNU General Public License for more details.
31d19d7d58SLionel Sambuc 
32d19d7d58SLionel Sambuc    You should have received a copy of the GNU General Public License
33d19d7d58SLionel Sambuc    along with this program; if not, write to the Free Software
34d19d7d58SLionel Sambuc    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
35d19d7d58SLionel Sambuc 
36d19d7d58SLionel Sambuc #ifndef __BFD_H_SEEN__
37d19d7d58SLionel Sambuc #define __BFD_H_SEEN__
38d19d7d58SLionel Sambuc 
39*c9ea9e7aSLionel Sambuc /* PR 14072: Ensure that config.h is included first.  */
40*c9ea9e7aSLionel Sambuc #if !defined PACKAGE && !defined PACKAGE_VERSION
41*c9ea9e7aSLionel Sambuc #error config.h must be included before this header
42*c9ea9e7aSLionel Sambuc #endif
43*c9ea9e7aSLionel Sambuc 
44d19d7d58SLionel Sambuc #ifdef __cplusplus
45d19d7d58SLionel Sambuc extern "C" {
46d19d7d58SLionel Sambuc #endif
47d19d7d58SLionel Sambuc 
48d19d7d58SLionel Sambuc #include "ansidecl.h"
49d19d7d58SLionel Sambuc #include "symcat.h"
50*c9ea9e7aSLionel Sambuc #include <sys/stat.h>
51*c9ea9e7aSLionel Sambuc 
52d19d7d58SLionel Sambuc #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
53d19d7d58SLionel Sambuc #ifndef SABER
54d19d7d58SLionel Sambuc /* This hack is to avoid a problem with some strict ANSI C preprocessors.
55d19d7d58SLionel Sambuc    The problem is, "32_" is not a valid preprocessing token, and we don't
56d19d7d58SLionel Sambuc    want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
57d19d7d58SLionel Sambuc    cause the inner CONCAT2 macros to be evaluated first, producing
58d19d7d58SLionel Sambuc    still-valid pp-tokens.  Then the final concatenation can be done.  */
59d19d7d58SLionel Sambuc #undef CONCAT4
60d19d7d58SLionel Sambuc #define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
61d19d7d58SLionel Sambuc #endif
62d19d7d58SLionel Sambuc #endif
63d19d7d58SLionel Sambuc 
64d19d7d58SLionel Sambuc /* This is a utility macro to handle the situation where the code
65d19d7d58SLionel Sambuc    wants to place a constant string into the code, followed by a
66d19d7d58SLionel Sambuc    comma and then the length of the string.  Doing this by hand
67d19d7d58SLionel Sambuc    is error prone, so using this macro is safer.  */
68d19d7d58SLionel Sambuc #define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
69d19d7d58SLionel Sambuc /* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
70d19d7d58SLionel Sambuc    to create the arguments to another macro, since the preprocessor
71d19d7d58SLionel Sambuc    will mis-count the number of arguments to the outer macro (by not
72d19d7d58SLionel Sambuc    evaluating STRING_COMMA_LEN and so missing the comma).  This is a
73d19d7d58SLionel Sambuc    problem for example when trying to use STRING_COMMA_LEN to build
74d19d7d58SLionel Sambuc    the arguments to the strncmp() macro.  Hence this alternative
75d19d7d58SLionel Sambuc    definition of strncmp is provided here.
76d19d7d58SLionel Sambuc 
77d19d7d58SLionel Sambuc    Note - these macros do NOT work if STR2 is not a constant string.  */
78d19d7d58SLionel Sambuc #define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
79d19d7d58SLionel Sambuc   /* strcpy() can have a similar problem, but since we know we are
80d19d7d58SLionel Sambuc      copying a constant string, we can use memcpy which will be faster
81d19d7d58SLionel Sambuc      since there is no need to check for a NUL byte inside STR.  We
82d19d7d58SLionel Sambuc      can also save time if we do not need to copy the terminating NUL.  */
83d19d7d58SLionel Sambuc #define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
84d19d7d58SLionel Sambuc #define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
85d19d7d58SLionel Sambuc 
86d19d7d58SLionel Sambuc 
87d19d7d58SLionel Sambuc #define BFD_SUPPORTS_PLUGINS 0
88d19d7d58SLionel Sambuc 
89d19d7d58SLionel Sambuc /* The word size used by BFD on the host.  This may be 64 with a 32
90d19d7d58SLionel Sambuc    bit target if the host is 64 bit, or if other 64 bit targets have
91d19d7d58SLionel Sambuc    been selected with --enable-targets, or if --enable-64-bit-bfd.  */
92d19d7d58SLionel Sambuc #define BFD_ARCH_SIZE 32
93d19d7d58SLionel Sambuc 
94d19d7d58SLionel Sambuc /* The word size of the default bfd target.  */
95d19d7d58SLionel Sambuc #define BFD_DEFAULT_TARGET_SIZE 32
96d19d7d58SLionel Sambuc 
97d19d7d58SLionel Sambuc #define BFD_HOST_64BIT_LONG 0
98d19d7d58SLionel Sambuc #define BFD_HOST_64BIT_LONG_LONG 1
99d19d7d58SLionel Sambuc #if 1
100d19d7d58SLionel Sambuc #define BFD_HOST_64_BIT long long
101d19d7d58SLionel Sambuc #define BFD_HOST_U_64_BIT unsigned long long
102d19d7d58SLionel Sambuc typedef BFD_HOST_64_BIT bfd_int64_t;
103d19d7d58SLionel Sambuc typedef BFD_HOST_U_64_BIT bfd_uint64_t;
104d19d7d58SLionel Sambuc #endif
105d19d7d58SLionel Sambuc 
106d19d7d58SLionel Sambuc #if BFD_ARCH_SIZE >= 64
107d19d7d58SLionel Sambuc #define BFD64
108d19d7d58SLionel Sambuc #endif
109d19d7d58SLionel Sambuc 
110d19d7d58SLionel Sambuc #ifndef INLINE
111d19d7d58SLionel Sambuc #if __GNUC__ >= 2
112d19d7d58SLionel Sambuc #define INLINE __inline__
113d19d7d58SLionel Sambuc #else
114d19d7d58SLionel Sambuc #define INLINE
115d19d7d58SLionel Sambuc #endif
116d19d7d58SLionel Sambuc #endif
117d19d7d58SLionel Sambuc 
118d19d7d58SLionel Sambuc /* Declaring a type wide enough to hold a host long and a host pointer.  */
119d19d7d58SLionel Sambuc #define BFD_HOSTPTR_T	unsigned long
120d19d7d58SLionel Sambuc typedef BFD_HOSTPTR_T bfd_hostptr_t;
121d19d7d58SLionel Sambuc 
122d19d7d58SLionel Sambuc /* Forward declaration.  */
123d19d7d58SLionel Sambuc typedef struct bfd bfd;
124d19d7d58SLionel Sambuc 
125d19d7d58SLionel Sambuc /* Boolean type used in bfd.  Too many systems define their own
126d19d7d58SLionel Sambuc    versions of "boolean" for us to safely typedef a "boolean" of
127d19d7d58SLionel Sambuc    our own.  Using an enum for "bfd_boolean" has its own set of
128d19d7d58SLionel Sambuc    problems, with strange looking casts required to avoid warnings
129d19d7d58SLionel Sambuc    on some older compilers.  Thus we just use an int.
130d19d7d58SLionel Sambuc 
131d19d7d58SLionel Sambuc    General rule: Functions which are bfd_boolean return TRUE on
132d19d7d58SLionel Sambuc    success and FALSE on failure (unless they're a predicate).  */
133d19d7d58SLionel Sambuc 
134d19d7d58SLionel Sambuc typedef int bfd_boolean;
135d19d7d58SLionel Sambuc #undef FALSE
136d19d7d58SLionel Sambuc #undef TRUE
137d19d7d58SLionel Sambuc #define FALSE 0
138d19d7d58SLionel Sambuc #define TRUE 1
139d19d7d58SLionel Sambuc 
140d19d7d58SLionel Sambuc #ifdef BFD64
141d19d7d58SLionel Sambuc 
142d19d7d58SLionel Sambuc #ifndef BFD_HOST_64_BIT
143d19d7d58SLionel Sambuc  #error No 64 bit integer type available
144d19d7d58SLionel Sambuc #endif /* ! defined (BFD_HOST_64_BIT) */
145d19d7d58SLionel Sambuc 
146d19d7d58SLionel Sambuc typedef BFD_HOST_U_64_BIT bfd_vma;
147d19d7d58SLionel Sambuc typedef BFD_HOST_64_BIT bfd_signed_vma;
148d19d7d58SLionel Sambuc typedef BFD_HOST_U_64_BIT bfd_size_type;
149d19d7d58SLionel Sambuc typedef BFD_HOST_U_64_BIT symvalue;
150d19d7d58SLionel Sambuc 
151d19d7d58SLionel Sambuc #if BFD_HOST_64BIT_LONG
152d19d7d58SLionel Sambuc #define BFD_VMA_FMT "l"
153d19d7d58SLionel Sambuc #elif defined (__MSVCRT__)
154d19d7d58SLionel Sambuc #define BFD_VMA_FMT "I64"
155d19d7d58SLionel Sambuc #else
156d19d7d58SLionel Sambuc #define BFD_VMA_FMT "ll"
157d19d7d58SLionel Sambuc #endif
158d19d7d58SLionel Sambuc 
159d19d7d58SLionel Sambuc #ifndef fprintf_vma
160d19d7d58SLionel Sambuc #define sprintf_vma(s,x) sprintf (s, "%016" BFD_VMA_FMT "x", x)
161d19d7d58SLionel Sambuc #define fprintf_vma(f,x) fprintf (f, "%016" BFD_VMA_FMT "x", x)
162d19d7d58SLionel Sambuc #endif
163d19d7d58SLionel Sambuc 
164d19d7d58SLionel Sambuc #else /* not BFD64  */
165d19d7d58SLionel Sambuc 
166d19d7d58SLionel Sambuc /* Represent a target address.  Also used as a generic unsigned type
167d19d7d58SLionel Sambuc    which is guaranteed to be big enough to hold any arithmetic types
168d19d7d58SLionel Sambuc    we need to deal with.  */
169d19d7d58SLionel Sambuc typedef unsigned long bfd_vma;
170d19d7d58SLionel Sambuc 
171d19d7d58SLionel Sambuc /* A generic signed type which is guaranteed to be big enough to hold any
172d19d7d58SLionel Sambuc    arithmetic types we need to deal with.  Can be assumed to be compatible
173d19d7d58SLionel Sambuc    with bfd_vma in the same way that signed and unsigned ints are compatible
174d19d7d58SLionel Sambuc    (as parameters, in assignment, etc).  */
175d19d7d58SLionel Sambuc typedef long bfd_signed_vma;
176d19d7d58SLionel Sambuc 
177d19d7d58SLionel Sambuc typedef unsigned long symvalue;
178d19d7d58SLionel Sambuc typedef unsigned long bfd_size_type;
179d19d7d58SLionel Sambuc 
180d19d7d58SLionel Sambuc /* Print a bfd_vma x on stream s.  */
181d19d7d58SLionel Sambuc #define BFD_VMA_FMT "l"
182d19d7d58SLionel Sambuc #define fprintf_vma(s,x) fprintf (s, "%08" BFD_VMA_FMT "x", x)
183d19d7d58SLionel Sambuc #define sprintf_vma(s,x) sprintf (s, "%08" BFD_VMA_FMT "x", x)
184d19d7d58SLionel Sambuc 
185d19d7d58SLionel Sambuc #endif /* not BFD64  */
186d19d7d58SLionel Sambuc 
187d19d7d58SLionel Sambuc #define HALF_BFD_SIZE_TYPE \
188d19d7d58SLionel Sambuc   (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
189d19d7d58SLionel Sambuc 
190d19d7d58SLionel Sambuc #ifndef BFD_HOST_64_BIT
191d19d7d58SLionel Sambuc /* Fall back on a 32 bit type.  The idea is to make these types always
192d19d7d58SLionel Sambuc    available for function return types, but in the case that
193d19d7d58SLionel Sambuc    BFD_HOST_64_BIT is undefined such a function should abort or
194d19d7d58SLionel Sambuc    otherwise signal an error.  */
195d19d7d58SLionel Sambuc typedef bfd_signed_vma bfd_int64_t;
196d19d7d58SLionel Sambuc typedef bfd_vma bfd_uint64_t;
197d19d7d58SLionel Sambuc #endif
198d19d7d58SLionel Sambuc 
199d19d7d58SLionel Sambuc /* An offset into a file.  BFD always uses the largest possible offset
200d19d7d58SLionel Sambuc    based on the build time availability of fseek, fseeko, or fseeko64.  */
201*c9ea9e7aSLionel Sambuc typedef BFD_HOST_64_BIT file_ptr;
202*c9ea9e7aSLionel Sambuc typedef unsigned BFD_HOST_64_BIT ufile_ptr;
203d19d7d58SLionel Sambuc 
204d19d7d58SLionel Sambuc extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
205d19d7d58SLionel Sambuc extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
206d19d7d58SLionel Sambuc 
207d19d7d58SLionel Sambuc #define printf_vma(x) fprintf_vma(stdout,x)
208d19d7d58SLionel Sambuc #define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
209d19d7d58SLionel Sambuc 
210d19d7d58SLionel Sambuc typedef unsigned int flagword;	/* 32 bits of flags */
211d19d7d58SLionel Sambuc typedef unsigned char bfd_byte;
212d19d7d58SLionel Sambuc 
213d19d7d58SLionel Sambuc /* File formats.  */
214d19d7d58SLionel Sambuc 
215d19d7d58SLionel Sambuc typedef enum bfd_format
216d19d7d58SLionel Sambuc {
217d19d7d58SLionel Sambuc   bfd_unknown = 0,	/* File format is unknown.  */
218d19d7d58SLionel Sambuc   bfd_object,		/* Linker/assembler/compiler output.  */
219d19d7d58SLionel Sambuc   bfd_archive,		/* Object archive file.  */
220d19d7d58SLionel Sambuc   bfd_core,		/* Core dump.  */
221d19d7d58SLionel Sambuc   bfd_type_end		/* Marks the end; don't use it!  */
222d19d7d58SLionel Sambuc }
223d19d7d58SLionel Sambuc bfd_format;
224d19d7d58SLionel Sambuc 
225d19d7d58SLionel Sambuc /* Symbols and relocation.  */
226d19d7d58SLionel Sambuc 
227d19d7d58SLionel Sambuc /* A count of carsyms (canonical archive symbols).  */
228d19d7d58SLionel Sambuc typedef unsigned long symindex;
229d19d7d58SLionel Sambuc 
230d19d7d58SLionel Sambuc /* How to perform a relocation.  */
231d19d7d58SLionel Sambuc typedef const struct reloc_howto_struct reloc_howto_type;
232d19d7d58SLionel Sambuc 
233d19d7d58SLionel Sambuc #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
234d19d7d58SLionel Sambuc 
235d19d7d58SLionel Sambuc /* General purpose part of a symbol X;
236d19d7d58SLionel Sambuc    target specific parts are in libcoff.h, libaout.h, etc.  */
237d19d7d58SLionel Sambuc 
238d19d7d58SLionel Sambuc #define bfd_get_section(x) ((x)->section)
239d19d7d58SLionel Sambuc #define bfd_get_output_section(x) ((x)->section->output_section)
240d19d7d58SLionel Sambuc #define bfd_set_section(x,y) ((x)->section) = (y)
241d19d7d58SLionel Sambuc #define bfd_asymbol_base(x) ((x)->section->vma)
242d19d7d58SLionel Sambuc #define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
243d19d7d58SLionel Sambuc #define bfd_asymbol_name(x) ((x)->name)
244d19d7d58SLionel Sambuc /*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
245d19d7d58SLionel Sambuc #define bfd_asymbol_bfd(x) ((x)->the_bfd)
246d19d7d58SLionel Sambuc #define bfd_asymbol_flavour(x)			\
247d19d7d58SLionel Sambuc   (((x)->flags & BSF_SYNTHETIC) != 0		\
248d19d7d58SLionel Sambuc    ? bfd_target_unknown_flavour			\
249d19d7d58SLionel Sambuc    : bfd_asymbol_bfd (x)->xvec->flavour)
250d19d7d58SLionel Sambuc 
251d19d7d58SLionel Sambuc /* A canonical archive symbol.  */
252d19d7d58SLionel Sambuc /* This is a type pun with struct ranlib on purpose!  */
253d19d7d58SLionel Sambuc typedef struct carsym
254d19d7d58SLionel Sambuc {
255d19d7d58SLionel Sambuc   char *name;
256d19d7d58SLionel Sambuc   file_ptr file_offset;	/* Look here to find the file.  */
257d19d7d58SLionel Sambuc }
258d19d7d58SLionel Sambuc carsym;			/* To make these you call a carsymogen.  */
259d19d7d58SLionel Sambuc 
260d19d7d58SLionel Sambuc /* Used in generating armaps (archive tables of contents).
261d19d7d58SLionel Sambuc    Perhaps just a forward definition would do?  */
262d19d7d58SLionel Sambuc struct orl 			/* Output ranlib.  */
263d19d7d58SLionel Sambuc {
264d19d7d58SLionel Sambuc   char **name;		/* Symbol name.  */
265d19d7d58SLionel Sambuc   union
266d19d7d58SLionel Sambuc   {
267d19d7d58SLionel Sambuc     file_ptr pos;
268d19d7d58SLionel Sambuc     bfd *abfd;
269d19d7d58SLionel Sambuc   } u;			/* bfd* or file position.  */
270d19d7d58SLionel Sambuc   int namidx;		/* Index into string table.  */
271d19d7d58SLionel Sambuc };
272d19d7d58SLionel Sambuc 
273d19d7d58SLionel Sambuc /* Linenumber stuff.  */
274d19d7d58SLionel Sambuc typedef struct lineno_cache_entry
275d19d7d58SLionel Sambuc {
276d19d7d58SLionel Sambuc   unsigned int line_number;	/* Linenumber from start of function.  */
277d19d7d58SLionel Sambuc   union
278d19d7d58SLionel Sambuc   {
279d19d7d58SLionel Sambuc     struct bfd_symbol *sym;	/* Function name.  */
280d19d7d58SLionel Sambuc     bfd_vma offset;	    		/* Offset into section.  */
281d19d7d58SLionel Sambuc   } u;
282d19d7d58SLionel Sambuc }
283d19d7d58SLionel Sambuc alent;
284d19d7d58SLionel Sambuc 
285d19d7d58SLionel Sambuc /* Object and core file sections.  */
286d19d7d58SLionel Sambuc 
287d19d7d58SLionel Sambuc #define	align_power(addr, align)	\
288d19d7d58SLionel Sambuc   (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
289d19d7d58SLionel Sambuc 
290d19d7d58SLionel Sambuc typedef struct bfd_section *sec_ptr;
291d19d7d58SLionel Sambuc 
292*c9ea9e7aSLionel Sambuc #define bfd_get_section_name(bfd, ptr) ((void) bfd, (ptr)->name)
293*c9ea9e7aSLionel Sambuc #define bfd_get_section_vma(bfd, ptr) ((void) bfd, (ptr)->vma)
294*c9ea9e7aSLionel Sambuc #define bfd_get_section_lma(bfd, ptr) ((void) bfd, (ptr)->lma)
295*c9ea9e7aSLionel Sambuc #define bfd_get_section_alignment(bfd, ptr) ((void) bfd, \
296*c9ea9e7aSLionel Sambuc 					     (ptr)->alignment_power)
297d19d7d58SLionel Sambuc #define bfd_section_name(bfd, ptr) ((ptr)->name)
298d19d7d58SLionel Sambuc #define bfd_section_size(bfd, ptr) ((ptr)->size)
299d19d7d58SLionel Sambuc #define bfd_get_section_size(ptr) ((ptr)->size)
300d19d7d58SLionel Sambuc #define bfd_section_vma(bfd, ptr) ((ptr)->vma)
301d19d7d58SLionel Sambuc #define bfd_section_lma(bfd, ptr) ((ptr)->lma)
302d19d7d58SLionel Sambuc #define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
303*c9ea9e7aSLionel Sambuc #define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags)
304*c9ea9e7aSLionel Sambuc #define bfd_get_section_userdata(bfd, ptr) ((void) bfd, (ptr)->userdata)
305d19d7d58SLionel Sambuc 
306d19d7d58SLionel Sambuc #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
307d19d7d58SLionel Sambuc 
308d19d7d58SLionel Sambuc #define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
309d19d7d58SLionel Sambuc #define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
310d19d7d58SLionel Sambuc #define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
311d19d7d58SLionel Sambuc /* Find the address one past the end of SEC.  */
312d19d7d58SLionel Sambuc #define bfd_get_section_limit(bfd, sec) \
313c566d462SLionel Sambuc   (((bfd)->direction != write_direction && (sec)->rawsize != 0	\
314c566d462SLionel Sambuc     ? (sec)->rawsize : (sec)->size) / bfd_octets_per_byte (bfd))
315d19d7d58SLionel Sambuc 
316d19d7d58SLionel Sambuc /* Return TRUE if input section SEC has been discarded.  */
317*c9ea9e7aSLionel Sambuc #define discarded_section(sec)				\
318d19d7d58SLionel Sambuc   (!bfd_is_abs_section (sec)					\
319d19d7d58SLionel Sambuc    && bfd_is_abs_section ((sec)->output_section)		\
320*c9ea9e7aSLionel Sambuc    && (sec)->sec_info_type != SEC_INFO_TYPE_MERGE		\
321*c9ea9e7aSLionel Sambuc    && (sec)->sec_info_type != SEC_INFO_TYPE_JUST_SYMS)
322d19d7d58SLionel Sambuc 
323d19d7d58SLionel Sambuc typedef enum bfd_print_symbol
324d19d7d58SLionel Sambuc {
325d19d7d58SLionel Sambuc   bfd_print_symbol_name,
326d19d7d58SLionel Sambuc   bfd_print_symbol_more,
327d19d7d58SLionel Sambuc   bfd_print_symbol_all
328d19d7d58SLionel Sambuc } bfd_print_symbol_type;
329d19d7d58SLionel Sambuc 
330d19d7d58SLionel Sambuc /* Information about a symbol that nm needs.  */
331d19d7d58SLionel Sambuc 
332d19d7d58SLionel Sambuc typedef struct _symbol_info
333d19d7d58SLionel Sambuc {
334d19d7d58SLionel Sambuc   symvalue value;
335d19d7d58SLionel Sambuc   char type;
336d19d7d58SLionel Sambuc   const char *name;            /* Symbol name.  */
337d19d7d58SLionel Sambuc   unsigned char stab_type;     /* Stab type.  */
338d19d7d58SLionel Sambuc   char stab_other;             /* Stab other.  */
339d19d7d58SLionel Sambuc   short stab_desc;             /* Stab desc.  */
340d19d7d58SLionel Sambuc   const char *stab_name;       /* String for stab type.  */
341d19d7d58SLionel Sambuc } symbol_info;
342d19d7d58SLionel Sambuc 
343d19d7d58SLionel Sambuc /* Get the name of a stabs type code.  */
344d19d7d58SLionel Sambuc 
345d19d7d58SLionel Sambuc extern const char *bfd_get_stab_name (int);
346d19d7d58SLionel Sambuc 
347d19d7d58SLionel Sambuc /* Hash table routines.  There is no way to free up a hash table.  */
348d19d7d58SLionel Sambuc 
349d19d7d58SLionel Sambuc /* An element in the hash table.  Most uses will actually use a larger
350d19d7d58SLionel Sambuc    structure, and an instance of this will be the first field.  */
351d19d7d58SLionel Sambuc 
352d19d7d58SLionel Sambuc struct bfd_hash_entry
353d19d7d58SLionel Sambuc {
354d19d7d58SLionel Sambuc   /* Next entry for this hash code.  */
355d19d7d58SLionel Sambuc   struct bfd_hash_entry *next;
356d19d7d58SLionel Sambuc   /* String being hashed.  */
357d19d7d58SLionel Sambuc   const char *string;
358d19d7d58SLionel Sambuc   /* Hash code.  This is the full hash code, not the index into the
359d19d7d58SLionel Sambuc      table.  */
360d19d7d58SLionel Sambuc   unsigned long hash;
361d19d7d58SLionel Sambuc };
362d19d7d58SLionel Sambuc 
363d19d7d58SLionel Sambuc /* A hash table.  */
364d19d7d58SLionel Sambuc 
365d19d7d58SLionel Sambuc struct bfd_hash_table
366d19d7d58SLionel Sambuc {
367d19d7d58SLionel Sambuc   /* The hash array.  */
368d19d7d58SLionel Sambuc   struct bfd_hash_entry **table;
369d19d7d58SLionel Sambuc   /* A function used to create new elements in the hash table.  The
370d19d7d58SLionel Sambuc      first entry is itself a pointer to an element.  When this
371d19d7d58SLionel Sambuc      function is first invoked, this pointer will be NULL.  However,
372d19d7d58SLionel Sambuc      having the pointer permits a hierarchy of method functions to be
373d19d7d58SLionel Sambuc      built each of which calls the function in the superclass.  Thus
374d19d7d58SLionel Sambuc      each function should be written to allocate a new block of memory
375d19d7d58SLionel Sambuc      only if the argument is NULL.  */
376d19d7d58SLionel Sambuc   struct bfd_hash_entry *(*newfunc)
377d19d7d58SLionel Sambuc     (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
378d19d7d58SLionel Sambuc    /* An objalloc for this hash table.  This is a struct objalloc *,
379d19d7d58SLionel Sambuc      but we use void * to avoid requiring the inclusion of objalloc.h.  */
380d19d7d58SLionel Sambuc   void *memory;
381d19d7d58SLionel Sambuc   /* The number of slots in the hash table.  */
382d19d7d58SLionel Sambuc   unsigned int size;
383d19d7d58SLionel Sambuc   /* The number of entries in the hash table.  */
384d19d7d58SLionel Sambuc   unsigned int count;
385d19d7d58SLionel Sambuc   /* The size of elements.  */
386d19d7d58SLionel Sambuc   unsigned int entsize;
387d19d7d58SLionel Sambuc   /* If non-zero, don't grow the hash table.  */
388d19d7d58SLionel Sambuc   unsigned int frozen:1;
389d19d7d58SLionel Sambuc };
390d19d7d58SLionel Sambuc 
391d19d7d58SLionel Sambuc /* Initialize a hash table.  */
392d19d7d58SLionel Sambuc extern bfd_boolean bfd_hash_table_init
393d19d7d58SLionel Sambuc   (struct bfd_hash_table *,
394d19d7d58SLionel Sambuc    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
395d19d7d58SLionel Sambuc 			       struct bfd_hash_table *,
396d19d7d58SLionel Sambuc 			       const char *),
397d19d7d58SLionel Sambuc    unsigned int);
398d19d7d58SLionel Sambuc 
399d19d7d58SLionel Sambuc /* Initialize a hash table specifying a size.  */
400d19d7d58SLionel Sambuc extern bfd_boolean bfd_hash_table_init_n
401d19d7d58SLionel Sambuc   (struct bfd_hash_table *,
402d19d7d58SLionel Sambuc    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
403d19d7d58SLionel Sambuc 			       struct bfd_hash_table *,
404d19d7d58SLionel Sambuc 			       const char *),
405d19d7d58SLionel Sambuc    unsigned int, unsigned int);
406d19d7d58SLionel Sambuc 
407d19d7d58SLionel Sambuc /* Free up a hash table.  */
408d19d7d58SLionel Sambuc extern void bfd_hash_table_free
409d19d7d58SLionel Sambuc   (struct bfd_hash_table *);
410d19d7d58SLionel Sambuc 
411d19d7d58SLionel Sambuc /* Look up a string in a hash table.  If CREATE is TRUE, a new entry
412d19d7d58SLionel Sambuc    will be created for this string if one does not already exist.  The
413d19d7d58SLionel Sambuc    COPY argument must be TRUE if this routine should copy the string
414d19d7d58SLionel Sambuc    into newly allocated memory when adding an entry.  */
415d19d7d58SLionel Sambuc extern struct bfd_hash_entry *bfd_hash_lookup
416d19d7d58SLionel Sambuc   (struct bfd_hash_table *, const char *, bfd_boolean create,
417d19d7d58SLionel Sambuc    bfd_boolean copy);
418d19d7d58SLionel Sambuc 
419d19d7d58SLionel Sambuc /* Insert an entry in a hash table.  */
420d19d7d58SLionel Sambuc extern struct bfd_hash_entry *bfd_hash_insert
421d19d7d58SLionel Sambuc   (struct bfd_hash_table *, const char *, unsigned long);
422d19d7d58SLionel Sambuc 
423d19d7d58SLionel Sambuc /* Rename an entry in a hash table.  */
424d19d7d58SLionel Sambuc extern void bfd_hash_rename
425d19d7d58SLionel Sambuc   (struct bfd_hash_table *, const char *, struct bfd_hash_entry *);
426d19d7d58SLionel Sambuc 
427d19d7d58SLionel Sambuc /* Replace an entry in a hash table.  */
428d19d7d58SLionel Sambuc extern void bfd_hash_replace
429d19d7d58SLionel Sambuc   (struct bfd_hash_table *, struct bfd_hash_entry *old,
430d19d7d58SLionel Sambuc    struct bfd_hash_entry *nw);
431d19d7d58SLionel Sambuc 
432d19d7d58SLionel Sambuc /* Base method for creating a hash table entry.  */
433d19d7d58SLionel Sambuc extern struct bfd_hash_entry *bfd_hash_newfunc
434d19d7d58SLionel Sambuc   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
435d19d7d58SLionel Sambuc 
436d19d7d58SLionel Sambuc /* Grab some space for a hash table entry.  */
437d19d7d58SLionel Sambuc extern void *bfd_hash_allocate
438d19d7d58SLionel Sambuc   (struct bfd_hash_table *, unsigned int);
439d19d7d58SLionel Sambuc 
440d19d7d58SLionel Sambuc /* Traverse a hash table in a random order, calling a function on each
441d19d7d58SLionel Sambuc    element.  If the function returns FALSE, the traversal stops.  The
442d19d7d58SLionel Sambuc    INFO argument is passed to the function.  */
443d19d7d58SLionel Sambuc extern void bfd_hash_traverse
444d19d7d58SLionel Sambuc   (struct bfd_hash_table *,
445d19d7d58SLionel Sambuc    bfd_boolean (*) (struct bfd_hash_entry *, void *),
446d19d7d58SLionel Sambuc    void *info);
447d19d7d58SLionel Sambuc 
448d19d7d58SLionel Sambuc /* Allows the default size of a hash table to be configured. New hash
449d19d7d58SLionel Sambuc    tables allocated using bfd_hash_table_init will be created with
450d19d7d58SLionel Sambuc    this size.  */
451c566d462SLionel Sambuc extern unsigned long bfd_hash_set_default_size (unsigned long);
452d19d7d58SLionel Sambuc 
453d19d7d58SLionel Sambuc /* This structure is used to keep track of stabs in sections
454d19d7d58SLionel Sambuc    information while linking.  */
455d19d7d58SLionel Sambuc 
456d19d7d58SLionel Sambuc struct stab_info
457d19d7d58SLionel Sambuc {
458d19d7d58SLionel Sambuc   /* A hash table used to hold stabs strings.  */
459d19d7d58SLionel Sambuc   struct bfd_strtab_hash *strings;
460d19d7d58SLionel Sambuc   /* The header file hash table.  */
461d19d7d58SLionel Sambuc   struct bfd_hash_table includes;
462d19d7d58SLionel Sambuc   /* The first .stabstr section.  */
463d19d7d58SLionel Sambuc   struct bfd_section *stabstr;
464d19d7d58SLionel Sambuc };
465d19d7d58SLionel Sambuc 
466d19d7d58SLionel Sambuc #define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
467d19d7d58SLionel Sambuc 
468d19d7d58SLionel Sambuc /* User program access to BFD facilities.  */
469d19d7d58SLionel Sambuc 
470d19d7d58SLionel Sambuc /* Direct I/O routines, for programs which know more about the object
471d19d7d58SLionel Sambuc    file than BFD does.  Use higher level routines if possible.  */
472d19d7d58SLionel Sambuc 
473d19d7d58SLionel Sambuc extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
474d19d7d58SLionel Sambuc extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
475d19d7d58SLionel Sambuc extern int bfd_seek (bfd *, file_ptr, int);
476d19d7d58SLionel Sambuc extern file_ptr bfd_tell (bfd *);
477d19d7d58SLionel Sambuc extern int bfd_flush (bfd *);
478d19d7d58SLionel Sambuc extern int bfd_stat (bfd *, struct stat *);
479d19d7d58SLionel Sambuc 
480d19d7d58SLionel Sambuc /* Deprecated old routines.  */
481d19d7d58SLionel Sambuc #if __GNUC__
482d19d7d58SLionel Sambuc #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
483d19d7d58SLionel Sambuc   (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
484d19d7d58SLionel Sambuc    bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
485d19d7d58SLionel Sambuc #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
486d19d7d58SLionel Sambuc   (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
487d19d7d58SLionel Sambuc    bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
488d19d7d58SLionel Sambuc #else
489d19d7d58SLionel Sambuc #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
490d19d7d58SLionel Sambuc   (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
491d19d7d58SLionel Sambuc    bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
492d19d7d58SLionel Sambuc #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
493d19d7d58SLionel Sambuc   (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
494d19d7d58SLionel Sambuc    bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
495d19d7d58SLionel Sambuc #endif
496d19d7d58SLionel Sambuc extern void warn_deprecated (const char *, const char *, int, const char *);
497d19d7d58SLionel Sambuc 
498d19d7d58SLionel Sambuc /* Cast from const char * to char * so that caller can assign to
499d19d7d58SLionel Sambuc    a char * without a warning.  */
500d19d7d58SLionel Sambuc #define bfd_get_filename(abfd) ((char *) (abfd)->filename)
501d19d7d58SLionel Sambuc #define bfd_get_cacheable(abfd) ((abfd)->cacheable)
502d19d7d58SLionel Sambuc #define bfd_get_format(abfd) ((abfd)->format)
503d19d7d58SLionel Sambuc #define bfd_get_target(abfd) ((abfd)->xvec->name)
504d19d7d58SLionel Sambuc #define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
505d19d7d58SLionel Sambuc #define bfd_family_coff(abfd) \
506d19d7d58SLionel Sambuc   (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
507d19d7d58SLionel Sambuc    bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
508d19d7d58SLionel Sambuc #define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
509d19d7d58SLionel Sambuc #define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
510d19d7d58SLionel Sambuc #define bfd_header_big_endian(abfd) \
511d19d7d58SLionel Sambuc   ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
512d19d7d58SLionel Sambuc #define bfd_header_little_endian(abfd) \
513d19d7d58SLionel Sambuc   ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
514d19d7d58SLionel Sambuc #define bfd_get_file_flags(abfd) ((abfd)->flags)
515d19d7d58SLionel Sambuc #define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
516d19d7d58SLionel Sambuc #define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
517d19d7d58SLionel Sambuc #define bfd_my_archive(abfd) ((abfd)->my_archive)
518d19d7d58SLionel Sambuc #define bfd_has_map(abfd) ((abfd)->has_armap)
519d19d7d58SLionel Sambuc #define bfd_is_thin_archive(abfd) ((abfd)->is_thin_archive)
520d19d7d58SLionel Sambuc 
521d19d7d58SLionel Sambuc #define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
522d19d7d58SLionel Sambuc #define bfd_usrdata(abfd) ((abfd)->usrdata)
523d19d7d58SLionel Sambuc 
524d19d7d58SLionel Sambuc #define bfd_get_start_address(abfd) ((abfd)->start_address)
525d19d7d58SLionel Sambuc #define bfd_get_symcount(abfd) ((abfd)->symcount)
526d19d7d58SLionel Sambuc #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
527d19d7d58SLionel Sambuc #define bfd_count_sections(abfd) ((abfd)->section_count)
528d19d7d58SLionel Sambuc 
529d19d7d58SLionel Sambuc #define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
530d19d7d58SLionel Sambuc 
531d19d7d58SLionel Sambuc #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
532d19d7d58SLionel Sambuc 
533d19d7d58SLionel Sambuc #define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
534d19d7d58SLionel Sambuc 
535d19d7d58SLionel Sambuc extern bfd_boolean bfd_cache_close
536d19d7d58SLionel Sambuc   (bfd *abfd);
537d19d7d58SLionel Sambuc /* NB: This declaration should match the autogenerated one in libbfd.h.  */
538d19d7d58SLionel Sambuc 
539d19d7d58SLionel Sambuc extern bfd_boolean bfd_cache_close_all (void);
540d19d7d58SLionel Sambuc 
541d19d7d58SLionel Sambuc extern bfd_boolean bfd_record_phdr
542d19d7d58SLionel Sambuc   (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
543d19d7d58SLionel Sambuc    bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
544d19d7d58SLionel Sambuc 
545d19d7d58SLionel Sambuc /* Byte swapping routines.  */
546d19d7d58SLionel Sambuc 
547d19d7d58SLionel Sambuc bfd_uint64_t bfd_getb64 (const void *);
548d19d7d58SLionel Sambuc bfd_uint64_t bfd_getl64 (const void *);
549d19d7d58SLionel Sambuc bfd_int64_t bfd_getb_signed_64 (const void *);
550d19d7d58SLionel Sambuc bfd_int64_t bfd_getl_signed_64 (const void *);
551d19d7d58SLionel Sambuc bfd_vma bfd_getb32 (const void *);
552d19d7d58SLionel Sambuc bfd_vma bfd_getl32 (const void *);
553d19d7d58SLionel Sambuc bfd_signed_vma bfd_getb_signed_32 (const void *);
554d19d7d58SLionel Sambuc bfd_signed_vma bfd_getl_signed_32 (const void *);
555d19d7d58SLionel Sambuc bfd_vma bfd_getb16 (const void *);
556d19d7d58SLionel Sambuc bfd_vma bfd_getl16 (const void *);
557d19d7d58SLionel Sambuc bfd_signed_vma bfd_getb_signed_16 (const void *);
558d19d7d58SLionel Sambuc bfd_signed_vma bfd_getl_signed_16 (const void *);
559d19d7d58SLionel Sambuc void bfd_putb64 (bfd_uint64_t, void *);
560d19d7d58SLionel Sambuc void bfd_putl64 (bfd_uint64_t, void *);
561d19d7d58SLionel Sambuc void bfd_putb32 (bfd_vma, void *);
562d19d7d58SLionel Sambuc void bfd_putl32 (bfd_vma, void *);
563d19d7d58SLionel Sambuc void bfd_putb16 (bfd_vma, void *);
564d19d7d58SLionel Sambuc void bfd_putl16 (bfd_vma, void *);
565d19d7d58SLionel Sambuc 
566d19d7d58SLionel Sambuc /* Byte swapping routines which take size and endiannes as arguments.  */
567d19d7d58SLionel Sambuc 
568d19d7d58SLionel Sambuc bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
569d19d7d58SLionel Sambuc void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
570d19d7d58SLionel Sambuc 
571d19d7d58SLionel Sambuc #if defined(__STDC__) || defined(ALMOST_STDC)
572d19d7d58SLionel Sambuc struct ecoff_debug_info;
573d19d7d58SLionel Sambuc struct ecoff_debug_swap;
574d19d7d58SLionel Sambuc struct ecoff_extr;
575d19d7d58SLionel Sambuc struct bfd_symbol;
576d19d7d58SLionel Sambuc struct bfd_link_info;
577d19d7d58SLionel Sambuc struct bfd_link_hash_entry;
578c566d462SLionel Sambuc struct bfd_section_already_linked;
579d19d7d58SLionel Sambuc struct bfd_elf_version_tree;
580d19d7d58SLionel Sambuc #endif
581c566d462SLionel Sambuc 
582c566d462SLionel Sambuc extern bfd_boolean bfd_section_already_linked_table_init (void);
583c566d462SLionel Sambuc extern void bfd_section_already_linked_table_free (void);
584c566d462SLionel Sambuc extern bfd_boolean _bfd_handle_already_linked
585c566d462SLionel Sambuc   (struct bfd_section *, struct bfd_section_already_linked *,
586c566d462SLionel Sambuc    struct bfd_link_info *);
587c566d462SLionel Sambuc 
588c566d462SLionel Sambuc /* Externally visible ECOFF routines.  */
589c566d462SLionel Sambuc 
590d19d7d58SLionel Sambuc extern bfd_vma bfd_ecoff_get_gp_value
591d19d7d58SLionel Sambuc   (bfd * abfd);
592d19d7d58SLionel Sambuc extern bfd_boolean bfd_ecoff_set_gp_value
593d19d7d58SLionel Sambuc   (bfd *abfd, bfd_vma gp_value);
594d19d7d58SLionel Sambuc extern bfd_boolean bfd_ecoff_set_regmasks
595d19d7d58SLionel Sambuc   (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
596d19d7d58SLionel Sambuc    unsigned long *cprmask);
597d19d7d58SLionel Sambuc extern void *bfd_ecoff_debug_init
598d19d7d58SLionel Sambuc   (bfd *output_bfd, struct ecoff_debug_info *output_debug,
599d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
600d19d7d58SLionel Sambuc extern void bfd_ecoff_debug_free
601d19d7d58SLionel Sambuc   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
602d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
603d19d7d58SLionel Sambuc extern bfd_boolean bfd_ecoff_debug_accumulate
604d19d7d58SLionel Sambuc   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
605d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
606d19d7d58SLionel Sambuc    struct ecoff_debug_info *input_debug,
607d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
608d19d7d58SLionel Sambuc extern bfd_boolean bfd_ecoff_debug_accumulate_other
609d19d7d58SLionel Sambuc   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
610d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
611d19d7d58SLionel Sambuc    struct bfd_link_info *);
612d19d7d58SLionel Sambuc extern bfd_boolean bfd_ecoff_debug_externals
613d19d7d58SLionel Sambuc   (bfd *abfd, struct ecoff_debug_info *debug,
614d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
615d19d7d58SLionel Sambuc    bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
616d19d7d58SLionel Sambuc    void (*set_index) (struct bfd_symbol *, bfd_size_type));
617d19d7d58SLionel Sambuc extern bfd_boolean bfd_ecoff_debug_one_external
618d19d7d58SLionel Sambuc   (bfd *abfd, struct ecoff_debug_info *debug,
619d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *swap, const char *name,
620d19d7d58SLionel Sambuc    struct ecoff_extr *esym);
621d19d7d58SLionel Sambuc extern bfd_size_type bfd_ecoff_debug_size
622d19d7d58SLionel Sambuc   (bfd *abfd, struct ecoff_debug_info *debug,
623d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *swap);
624d19d7d58SLionel Sambuc extern bfd_boolean bfd_ecoff_write_debug
625d19d7d58SLionel Sambuc   (bfd *abfd, struct ecoff_debug_info *debug,
626d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *swap, file_ptr where);
627d19d7d58SLionel Sambuc extern bfd_boolean bfd_ecoff_write_accumulated_debug
628d19d7d58SLionel Sambuc   (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
629d19d7d58SLionel Sambuc    const struct ecoff_debug_swap *swap,
630d19d7d58SLionel Sambuc    struct bfd_link_info *info, file_ptr where);
631d19d7d58SLionel Sambuc 
632d19d7d58SLionel Sambuc /* Externally visible ELF routines.  */
633d19d7d58SLionel Sambuc 
634d19d7d58SLionel Sambuc struct bfd_link_needed_list
635d19d7d58SLionel Sambuc {
636d19d7d58SLionel Sambuc   struct bfd_link_needed_list *next;
637d19d7d58SLionel Sambuc   bfd *by;
638d19d7d58SLionel Sambuc   const char *name;
639d19d7d58SLionel Sambuc };
640d19d7d58SLionel Sambuc 
641d19d7d58SLionel Sambuc enum dynamic_lib_link_class {
642d19d7d58SLionel Sambuc   DYN_NORMAL = 0,
643d19d7d58SLionel Sambuc   DYN_AS_NEEDED = 1,
644d19d7d58SLionel Sambuc   DYN_DT_NEEDED = 2,
645d19d7d58SLionel Sambuc   DYN_NO_ADD_NEEDED = 4,
646d19d7d58SLionel Sambuc   DYN_NO_NEEDED = 8
647d19d7d58SLionel Sambuc };
648d19d7d58SLionel Sambuc 
649d19d7d58SLionel Sambuc enum notice_asneeded_action {
650d19d7d58SLionel Sambuc   notice_as_needed,
651d19d7d58SLionel Sambuc   notice_not_needed,
652d19d7d58SLionel Sambuc   notice_needed
653d19d7d58SLionel Sambuc };
654d19d7d58SLionel Sambuc 
655d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf_record_link_assignment
656d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
657d19d7d58SLionel Sambuc    bfd_boolean);
658d19d7d58SLionel Sambuc extern struct bfd_link_needed_list *bfd_elf_get_needed_list
659d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
660d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf_get_bfd_needed_list
661d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_needed_list **);
662d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf_size_dynamic_sections
663d19d7d58SLionel Sambuc   (bfd *, const char *, const char *, const char *, const char *, const char *,
664c566d462SLionel Sambuc    const char * const *, struct bfd_link_info *, struct bfd_section **);
665d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
666d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
667d19d7d58SLionel Sambuc extern void bfd_elf_set_dt_needed_name
668d19d7d58SLionel Sambuc   (bfd *, const char *);
669d19d7d58SLionel Sambuc extern const char *bfd_elf_get_dt_soname
670d19d7d58SLionel Sambuc   (bfd *);
671d19d7d58SLionel Sambuc extern void bfd_elf_set_dyn_lib_class
672d19d7d58SLionel Sambuc   (bfd *, enum dynamic_lib_link_class);
673d19d7d58SLionel Sambuc extern int bfd_elf_get_dyn_lib_class
674d19d7d58SLionel Sambuc   (bfd *);
675d19d7d58SLionel Sambuc extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
676d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
677d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf_discard_info
678d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
679d19d7d58SLionel Sambuc extern unsigned int _bfd_elf_default_action_discarded
680d19d7d58SLionel Sambuc   (struct bfd_section *);
681d19d7d58SLionel Sambuc 
682d19d7d58SLionel Sambuc /* Return an upper bound on the number of bytes required to store a
683d19d7d58SLionel Sambuc    copy of ABFD's program header table entries.  Return -1 if an error
684d19d7d58SLionel Sambuc    occurs; bfd_get_error will return an appropriate code.  */
685d19d7d58SLionel Sambuc extern long bfd_get_elf_phdr_upper_bound
686d19d7d58SLionel Sambuc   (bfd *abfd);
687d19d7d58SLionel Sambuc 
688d19d7d58SLionel Sambuc /* Copy ABFD's program header table entries to *PHDRS.  The entries
689d19d7d58SLionel Sambuc    will be stored as an array of Elf_Internal_Phdr structures, as
690d19d7d58SLionel Sambuc    defined in include/elf/internal.h.  To find out how large the
691d19d7d58SLionel Sambuc    buffer needs to be, call bfd_get_elf_phdr_upper_bound.
692d19d7d58SLionel Sambuc 
693d19d7d58SLionel Sambuc    Return the number of program header table entries read, or -1 if an
694d19d7d58SLionel Sambuc    error occurs; bfd_get_error will return an appropriate code.  */
695d19d7d58SLionel Sambuc extern int bfd_get_elf_phdrs
696d19d7d58SLionel Sambuc   (bfd *abfd, void *phdrs);
697d19d7d58SLionel Sambuc 
698d19d7d58SLionel Sambuc /* Create a new BFD as if by bfd_openr.  Rather than opening a file,
699d19d7d58SLionel Sambuc    reconstruct an ELF file by reading the segments out of remote memory
700d19d7d58SLionel Sambuc    based on the ELF file header at EHDR_VMA and the ELF program headers it
701d19d7d58SLionel Sambuc    points to.  If not null, *LOADBASEP is filled in with the difference
702d19d7d58SLionel Sambuc    between the VMAs from which the segments were read, and the VMAs the
703d19d7d58SLionel Sambuc    file headers (and hence BFD's idea of each section's VMA) put them at.
704d19d7d58SLionel Sambuc 
705d19d7d58SLionel Sambuc    The function TARGET_READ_MEMORY is called to copy LEN bytes from the
706d19d7d58SLionel Sambuc    remote memory at target address VMA into the local buffer at MYADDR; it
707d19d7d58SLionel Sambuc    should return zero on success or an `errno' code on failure.  TEMPL must
708d19d7d58SLionel Sambuc    be a BFD for an ELF target with the word size and byte order found in
709d19d7d58SLionel Sambuc    the remote memory.  */
710d19d7d58SLionel Sambuc extern bfd *bfd_elf_bfd_from_remote_memory
711d19d7d58SLionel Sambuc   (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
712*c9ea9e7aSLionel Sambuc    int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
713*c9ea9e7aSLionel Sambuc 			      bfd_size_type len));
714d19d7d58SLionel Sambuc 
715d19d7d58SLionel Sambuc extern struct bfd_section *_bfd_elf_tls_setup
716d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
717d19d7d58SLionel Sambuc 
718*c9ea9e7aSLionel Sambuc extern struct bfd_section *
719*c9ea9e7aSLionel Sambuc _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
720*c9ea9e7aSLionel Sambuc 
721d19d7d58SLionel Sambuc extern void _bfd_fix_excluded_sec_syms
722d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
723d19d7d58SLionel Sambuc 
724d19d7d58SLionel Sambuc extern unsigned bfd_m68k_mach_to_features (int);
725d19d7d58SLionel Sambuc 
726d19d7d58SLionel Sambuc extern int bfd_m68k_features_to_mach (unsigned);
727d19d7d58SLionel Sambuc 
728d19d7d58SLionel Sambuc extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
729d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
730d19d7d58SLionel Sambuc    char **);
731d19d7d58SLionel Sambuc 
732d19d7d58SLionel Sambuc extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
733d19d7d58SLionel Sambuc 
734d19d7d58SLionel Sambuc extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
735d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
736d19d7d58SLionel Sambuc    char **);
737d19d7d58SLionel Sambuc 
738d19d7d58SLionel Sambuc extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
739d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
740d19d7d58SLionel Sambuc    char **);
741d19d7d58SLionel Sambuc 
742d19d7d58SLionel Sambuc /* SunOS shared library support routines for the linker.  */
743d19d7d58SLionel Sambuc 
744d19d7d58SLionel Sambuc extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
745d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
746d19d7d58SLionel Sambuc extern bfd_boolean bfd_sunos_record_link_assignment
747d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, const char *);
748d19d7d58SLionel Sambuc extern bfd_boolean bfd_sunos_size_dynamic_sections
749d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section **,
750d19d7d58SLionel Sambuc    struct bfd_section **, struct bfd_section **);
751d19d7d58SLionel Sambuc 
752d19d7d58SLionel Sambuc /* Linux shared library support routines for the linker.  */
753d19d7d58SLionel Sambuc 
754d19d7d58SLionel Sambuc extern bfd_boolean bfd_i386linux_size_dynamic_sections
755d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
756d19d7d58SLionel Sambuc extern bfd_boolean bfd_m68klinux_size_dynamic_sections
757d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
758d19d7d58SLionel Sambuc extern bfd_boolean bfd_sparclinux_size_dynamic_sections
759d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
760d19d7d58SLionel Sambuc 
761d19d7d58SLionel Sambuc /* mmap hacks */
762d19d7d58SLionel Sambuc 
763d19d7d58SLionel Sambuc struct _bfd_window_internal;
764d19d7d58SLionel Sambuc typedef struct _bfd_window_internal bfd_window_internal;
765d19d7d58SLionel Sambuc 
766d19d7d58SLionel Sambuc typedef struct _bfd_window
767d19d7d58SLionel Sambuc {
768d19d7d58SLionel Sambuc   /* What the user asked for.  */
769d19d7d58SLionel Sambuc   void *data;
770d19d7d58SLionel Sambuc   bfd_size_type size;
771d19d7d58SLionel Sambuc   /* The actual window used by BFD.  Small user-requested read-only
772d19d7d58SLionel Sambuc      regions sharing a page may share a single window into the object
773d19d7d58SLionel Sambuc      file.  Read-write versions shouldn't until I've fixed things to
774d19d7d58SLionel Sambuc      keep track of which portions have been claimed by the
775d19d7d58SLionel Sambuc      application; don't want to give the same region back when the
776d19d7d58SLionel Sambuc      application wants two writable copies!  */
777d19d7d58SLionel Sambuc   struct _bfd_window_internal *i;
778d19d7d58SLionel Sambuc }
779d19d7d58SLionel Sambuc bfd_window;
780d19d7d58SLionel Sambuc 
781d19d7d58SLionel Sambuc extern void bfd_init_window
782d19d7d58SLionel Sambuc   (bfd_window *);
783d19d7d58SLionel Sambuc extern void bfd_free_window
784d19d7d58SLionel Sambuc   (bfd_window *);
785d19d7d58SLionel Sambuc extern bfd_boolean bfd_get_file_window
786d19d7d58SLionel Sambuc   (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
787d19d7d58SLionel Sambuc 
788d19d7d58SLionel Sambuc /* XCOFF support routines for the linker.  */
789d19d7d58SLionel Sambuc 
790d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_split_import_path
791d19d7d58SLionel Sambuc   (bfd *, const char *, const char **, const char **);
792d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_set_archive_import_path
793d19d7d58SLionel Sambuc   (struct bfd_link_info *, bfd *, const char *);
794d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_link_record_set
795d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
796d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_import_symbol
797d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
798d19d7d58SLionel Sambuc    const char *, const char *, const char *, unsigned int);
799d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_export_symbol
800d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
801d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_link_count_reloc
802d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, const char *);
803d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_record_link_assignment
804d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, const char *);
805d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_size_dynamic_sections
806d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, const char *, const char *,
807d19d7d58SLionel Sambuc    unsigned long, unsigned long, unsigned long, bfd_boolean,
808d19d7d58SLionel Sambuc    int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);
809d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_link_generate_rtinit
810d19d7d58SLionel Sambuc   (bfd *, const char *, const char *, bfd_boolean);
811d19d7d58SLionel Sambuc 
812d19d7d58SLionel Sambuc /* XCOFF support routines for ar.  */
813d19d7d58SLionel Sambuc extern bfd_boolean bfd_xcoff_ar_archive_set_magic
814d19d7d58SLionel Sambuc   (bfd *, char *);
815d19d7d58SLionel Sambuc 
816d19d7d58SLionel Sambuc /* Externally visible COFF routines.  */
817d19d7d58SLionel Sambuc 
818d19d7d58SLionel Sambuc #if defined(__STDC__) || defined(ALMOST_STDC)
819d19d7d58SLionel Sambuc struct internal_syment;
820d19d7d58SLionel Sambuc union internal_auxent;
821d19d7d58SLionel Sambuc #endif
822d19d7d58SLionel Sambuc 
823d19d7d58SLionel Sambuc extern bfd_boolean bfd_coff_get_syment
824d19d7d58SLionel Sambuc   (bfd *, struct bfd_symbol *, struct internal_syment *);
825d19d7d58SLionel Sambuc 
826d19d7d58SLionel Sambuc extern bfd_boolean bfd_coff_get_auxent
827d19d7d58SLionel Sambuc   (bfd *, struct bfd_symbol *, int, union internal_auxent *);
828d19d7d58SLionel Sambuc 
829d19d7d58SLionel Sambuc extern bfd_boolean bfd_coff_set_symbol_class
830d19d7d58SLionel Sambuc   (bfd *, struct bfd_symbol *, unsigned int);
831d19d7d58SLionel Sambuc 
832d19d7d58SLionel Sambuc extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
833d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
834d19d7d58SLionel Sambuc 
835d19d7d58SLionel Sambuc /* ARM VFP11 erratum workaround support.  */
836d19d7d58SLionel Sambuc typedef enum
837d19d7d58SLionel Sambuc {
838d19d7d58SLionel Sambuc   BFD_ARM_VFP11_FIX_DEFAULT,
839d19d7d58SLionel Sambuc   BFD_ARM_VFP11_FIX_NONE,
840d19d7d58SLionel Sambuc   BFD_ARM_VFP11_FIX_SCALAR,
841d19d7d58SLionel Sambuc   BFD_ARM_VFP11_FIX_VECTOR
842d19d7d58SLionel Sambuc } bfd_arm_vfp11_fix;
843d19d7d58SLionel Sambuc 
844d19d7d58SLionel Sambuc extern void bfd_elf32_arm_init_maps
845d19d7d58SLionel Sambuc   (bfd *);
846d19d7d58SLionel Sambuc 
847d19d7d58SLionel Sambuc extern void bfd_elf32_arm_set_vfp11_fix
848d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
849d19d7d58SLionel Sambuc 
850d19d7d58SLionel Sambuc extern void bfd_elf32_arm_set_cortex_a8_fix
851d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
852d19d7d58SLionel Sambuc 
853d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
854d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
855d19d7d58SLionel Sambuc 
856d19d7d58SLionel Sambuc extern void bfd_elf32_arm_vfp11_fix_veneer_locations
857d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
858d19d7d58SLionel Sambuc 
859d19d7d58SLionel Sambuc /* ARM Interworking support.  Called from linker.  */
860d19d7d58SLionel Sambuc extern bfd_boolean bfd_arm_allocate_interworking_sections
861d19d7d58SLionel Sambuc   (struct bfd_link_info *);
862d19d7d58SLionel Sambuc 
863d19d7d58SLionel Sambuc extern bfd_boolean bfd_arm_process_before_allocation
864d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, int);
865d19d7d58SLionel Sambuc 
866d19d7d58SLionel Sambuc extern bfd_boolean bfd_arm_get_bfd_for_interworking
867d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
868d19d7d58SLionel Sambuc 
869d19d7d58SLionel Sambuc /* PE ARM Interworking support.  Called from linker.  */
870d19d7d58SLionel Sambuc extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
871d19d7d58SLionel Sambuc   (struct bfd_link_info *);
872d19d7d58SLionel Sambuc 
873d19d7d58SLionel Sambuc extern bfd_boolean bfd_arm_pe_process_before_allocation
874d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, int);
875d19d7d58SLionel Sambuc 
876d19d7d58SLionel Sambuc extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
877d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
878d19d7d58SLionel Sambuc 
879d19d7d58SLionel Sambuc /* ELF ARM Interworking support.  Called from linker.  */
880d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
881d19d7d58SLionel Sambuc   (struct bfd_link_info *);
882d19d7d58SLionel Sambuc 
883d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf32_arm_process_before_allocation
884d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
885d19d7d58SLionel Sambuc 
886d19d7d58SLionel Sambuc void bfd_elf32_arm_set_target_relocs
887d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
888c566d462SLionel Sambuc    int, int, int, int, int);
889d19d7d58SLionel Sambuc 
890d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
891d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
892d19d7d58SLionel Sambuc 
893d19d7d58SLionel Sambuc extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
894d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
895d19d7d58SLionel Sambuc 
896d19d7d58SLionel Sambuc /* ELF ARM mapping symbol support */
897d19d7d58SLionel Sambuc #define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
898d19d7d58SLionel Sambuc #define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
899d19d7d58SLionel Sambuc #define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
900d19d7d58SLionel Sambuc #define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
901d19d7d58SLionel Sambuc extern bfd_boolean bfd_is_arm_special_symbol_name
902d19d7d58SLionel Sambuc   (const char * name, int type);
903d19d7d58SLionel Sambuc 
904d19d7d58SLionel Sambuc extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
905d19d7d58SLionel Sambuc 
906d19d7d58SLionel Sambuc /* ARM Note section processing.  */
907d19d7d58SLionel Sambuc extern bfd_boolean bfd_arm_merge_machines
908d19d7d58SLionel Sambuc   (bfd *, bfd *);
909d19d7d58SLionel Sambuc 
910d19d7d58SLionel Sambuc extern bfd_boolean bfd_arm_update_notes
911d19d7d58SLionel Sambuc   (bfd *, const char *);
912d19d7d58SLionel Sambuc 
913d19d7d58SLionel Sambuc extern unsigned int bfd_arm_get_mach_from_notes
914d19d7d58SLionel Sambuc   (bfd *, const char *);
915d19d7d58SLionel Sambuc 
916d19d7d58SLionel Sambuc /* ARM stub generation support.  Called from the linker.  */
917d19d7d58SLionel Sambuc extern int elf32_arm_setup_section_lists
918d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *);
919d19d7d58SLionel Sambuc extern void elf32_arm_next_input_section
920d19d7d58SLionel Sambuc   (struct bfd_link_info *, struct bfd_section *);
921d19d7d58SLionel Sambuc extern bfd_boolean elf32_arm_size_stubs
922d19d7d58SLionel Sambuc   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
923d19d7d58SLionel Sambuc    struct bfd_section * (*) (const char *, struct bfd_section *), void (*) (void));
924d19d7d58SLionel Sambuc extern bfd_boolean elf32_arm_build_stubs
925d19d7d58SLionel Sambuc   (struct bfd_link_info *);
926d19d7d58SLionel Sambuc 
927d19d7d58SLionel Sambuc /* ARM unwind section editing support.  */
928d19d7d58SLionel Sambuc extern bfd_boolean elf32_arm_fix_exidx_coverage
929d19d7d58SLionel Sambuc (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
930d19d7d58SLionel Sambuc 
931c566d462SLionel Sambuc /* C6x unwind section editing support.  */
932c566d462SLionel Sambuc extern bfd_boolean elf32_tic6x_fix_exidx_coverage
933c566d462SLionel Sambuc (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
934c566d462SLionel Sambuc 
935d19d7d58SLionel Sambuc /* PowerPC @tls opcode transform/validate.  */
936d19d7d58SLionel Sambuc extern unsigned int _bfd_elf_ppc_at_tls_transform
937d19d7d58SLionel Sambuc   (unsigned int, unsigned int);
938d19d7d58SLionel Sambuc /* PowerPC @tprel opcode transform/validate.  */
939d19d7d58SLionel Sambuc extern unsigned int _bfd_elf_ppc_at_tprel_transform
940d19d7d58SLionel Sambuc   (unsigned int, unsigned int);
941d19d7d58SLionel Sambuc 
942*c9ea9e7aSLionel Sambuc extern void bfd_elf64_aarch64_init_maps
943*c9ea9e7aSLionel Sambuc   (bfd *);
944*c9ea9e7aSLionel Sambuc 
945*c9ea9e7aSLionel Sambuc void bfd_elf64_aarch64_set_options
946*c9ea9e7aSLionel Sambuc   (bfd *, struct bfd_link_info *, int, int, int);
947*c9ea9e7aSLionel Sambuc 
948*c9ea9e7aSLionel Sambuc /* ELF AArch64 mapping symbol support.  */
949*c9ea9e7aSLionel Sambuc #define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP	(1 << 0)
950*c9ea9e7aSLionel Sambuc #define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG	(1 << 1)
951*c9ea9e7aSLionel Sambuc #define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
952*c9ea9e7aSLionel Sambuc #define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY	(~0)
953*c9ea9e7aSLionel Sambuc extern bfd_boolean bfd_is_aarch64_special_symbol_name
954*c9ea9e7aSLionel Sambuc   (const char * name, int type);
955*c9ea9e7aSLionel Sambuc 
956*c9ea9e7aSLionel Sambuc /* AArch64 stub generation support.  Called from the linker.  */
957*c9ea9e7aSLionel Sambuc extern int elf64_aarch64_setup_section_lists
958*c9ea9e7aSLionel Sambuc   (bfd *, struct bfd_link_info *);
959*c9ea9e7aSLionel Sambuc extern void elf64_aarch64_next_input_section
960*c9ea9e7aSLionel Sambuc   (struct bfd_link_info *, struct bfd_section *);
961*c9ea9e7aSLionel Sambuc extern bfd_boolean elf64_aarch64_size_stubs
962*c9ea9e7aSLionel Sambuc   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
963*c9ea9e7aSLionel Sambuc    struct bfd_section * (*) (const char *, struct bfd_section *),
964*c9ea9e7aSLionel Sambuc    void (*) (void));
965*c9ea9e7aSLionel Sambuc extern bfd_boolean elf64_aarch64_build_stubs
966*c9ea9e7aSLionel Sambuc   (struct bfd_link_info *);
967*c9ea9e7aSLionel Sambuc 
968d19d7d58SLionel Sambuc /* TI COFF load page support.  */
969d19d7d58SLionel Sambuc extern void bfd_ticoff_set_section_load_page
970d19d7d58SLionel Sambuc   (struct bfd_section *, int);
971d19d7d58SLionel Sambuc 
972d19d7d58SLionel Sambuc extern int bfd_ticoff_get_section_load_page
973d19d7d58SLionel Sambuc   (struct bfd_section *);
974d19d7d58SLionel Sambuc 
975d19d7d58SLionel Sambuc /* H8/300 functions.  */
976d19d7d58SLionel Sambuc extern bfd_vma bfd_h8300_pad_address
977d19d7d58SLionel Sambuc   (bfd *, bfd_vma);
978d19d7d58SLionel Sambuc 
979d19d7d58SLionel Sambuc /* IA64 Itanium code generation.  Called from linker.  */
980d19d7d58SLionel Sambuc extern void bfd_elf32_ia64_after_parse
981d19d7d58SLionel Sambuc   (int);
982d19d7d58SLionel Sambuc 
983d19d7d58SLionel Sambuc extern void bfd_elf64_ia64_after_parse
984d19d7d58SLionel Sambuc   (int);
985d19d7d58SLionel Sambuc 
986d19d7d58SLionel Sambuc /* This structure is used for a comdat section, as in PE.  A comdat
987d19d7d58SLionel Sambuc    section is associated with a particular symbol.  When the linker
988d19d7d58SLionel Sambuc    sees a comdat section, it keeps only one of the sections with a
989d19d7d58SLionel Sambuc    given name and associated with a given symbol.  */
990d19d7d58SLionel Sambuc 
991d19d7d58SLionel Sambuc struct coff_comdat_info
992d19d7d58SLionel Sambuc {
993d19d7d58SLionel Sambuc   /* The name of the symbol associated with a comdat section.  */
994d19d7d58SLionel Sambuc   const char *name;
995d19d7d58SLionel Sambuc 
996d19d7d58SLionel Sambuc   /* The local symbol table index of the symbol associated with a
997d19d7d58SLionel Sambuc      comdat section.  This is only meaningful to the object file format
998d19d7d58SLionel Sambuc      specific code; it is not an index into the list returned by
999d19d7d58SLionel Sambuc      bfd_canonicalize_symtab.  */
1000d19d7d58SLionel Sambuc   long symbol;
1001d19d7d58SLionel Sambuc };
1002d19d7d58SLionel Sambuc 
1003d19d7d58SLionel Sambuc extern struct coff_comdat_info *bfd_coff_get_comdat_section
1004d19d7d58SLionel Sambuc   (bfd *, struct bfd_section *);
1005d19d7d58SLionel Sambuc 
1006d19d7d58SLionel Sambuc /* Extracted from init.c.  */
1007d19d7d58SLionel Sambuc void bfd_init (void);
1008d19d7d58SLionel Sambuc 
1009d19d7d58SLionel Sambuc /* Extracted from opncls.c.  */
1010d19d7d58SLionel Sambuc extern unsigned int bfd_use_reserved_id;
1011d19d7d58SLionel Sambuc bfd *bfd_fopen (const char *filename, const char *target,
1012d19d7d58SLionel Sambuc     const char *mode, int fd);
1013d19d7d58SLionel Sambuc 
1014d19d7d58SLionel Sambuc bfd *bfd_openr (const char *filename, const char *target);
1015d19d7d58SLionel Sambuc 
1016d19d7d58SLionel Sambuc bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
1017d19d7d58SLionel Sambuc 
1018d19d7d58SLionel Sambuc bfd *bfd_openstreamr (const char *, const char *, void *);
1019d19d7d58SLionel Sambuc 
1020d19d7d58SLionel Sambuc bfd *bfd_openr_iovec (const char *filename, const char *target,
1021d19d7d58SLionel Sambuc     void *(*open_func) (struct bfd *nbfd,
1022d19d7d58SLionel Sambuc     void *open_closure),
1023d19d7d58SLionel Sambuc     void *open_closure,
1024d19d7d58SLionel Sambuc     file_ptr (*pread_func) (struct bfd *nbfd,
1025d19d7d58SLionel Sambuc     void *stream,
1026d19d7d58SLionel Sambuc     void *buf,
1027d19d7d58SLionel Sambuc     file_ptr nbytes,
1028d19d7d58SLionel Sambuc     file_ptr offset),
1029d19d7d58SLionel Sambuc     int (*close_func) (struct bfd *nbfd,
1030d19d7d58SLionel Sambuc     void *stream),
1031d19d7d58SLionel Sambuc     int (*stat_func) (struct bfd *abfd,
1032d19d7d58SLionel Sambuc     void *stream,
1033d19d7d58SLionel Sambuc     struct stat *sb));
1034d19d7d58SLionel Sambuc 
1035d19d7d58SLionel Sambuc bfd *bfd_openw (const char *filename, const char *target);
1036d19d7d58SLionel Sambuc 
1037d19d7d58SLionel Sambuc bfd_boolean bfd_close (bfd *abfd);
1038d19d7d58SLionel Sambuc 
1039d19d7d58SLionel Sambuc bfd_boolean bfd_close_all_done (bfd *);
1040d19d7d58SLionel Sambuc 
1041d19d7d58SLionel Sambuc bfd *bfd_create (const char *filename, bfd *templ);
1042d19d7d58SLionel Sambuc 
1043d19d7d58SLionel Sambuc bfd_boolean bfd_make_writable (bfd *abfd);
1044d19d7d58SLionel Sambuc 
1045d19d7d58SLionel Sambuc bfd_boolean bfd_make_readable (bfd *abfd);
1046d19d7d58SLionel Sambuc 
1047d19d7d58SLionel Sambuc void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
1048d19d7d58SLionel Sambuc 
1049d19d7d58SLionel Sambuc void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
1050d19d7d58SLionel Sambuc 
1051d19d7d58SLionel Sambuc unsigned long bfd_calc_gnu_debuglink_crc32
1052d19d7d58SLionel Sambuc    (unsigned long crc, const unsigned char *buf, bfd_size_type len);
1053d19d7d58SLionel Sambuc 
1054d19d7d58SLionel Sambuc char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
1055d19d7d58SLionel Sambuc 
1056d19d7d58SLionel Sambuc struct bfd_section *bfd_create_gnu_debuglink_section
1057d19d7d58SLionel Sambuc    (bfd *abfd, const char *filename);
1058d19d7d58SLionel Sambuc 
1059d19d7d58SLionel Sambuc bfd_boolean bfd_fill_in_gnu_debuglink_section
1060d19d7d58SLionel Sambuc    (bfd *abfd, struct bfd_section *sect, const char *filename);
1061d19d7d58SLionel Sambuc 
1062d19d7d58SLionel Sambuc /* Extracted from libbfd.c.  */
1063d19d7d58SLionel Sambuc 
1064d19d7d58SLionel Sambuc /* Byte swapping macros for user section data.  */
1065d19d7d58SLionel Sambuc 
1066d19d7d58SLionel Sambuc #define bfd_put_8(abfd, val, ptr) \
1067d19d7d58SLionel Sambuc   ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
1068d19d7d58SLionel Sambuc #define bfd_put_signed_8 \
1069d19d7d58SLionel Sambuc   bfd_put_8
1070d19d7d58SLionel Sambuc #define bfd_get_8(abfd, ptr) \
1071d19d7d58SLionel Sambuc   (*(const unsigned char *) (ptr) & 0xff)
1072d19d7d58SLionel Sambuc #define bfd_get_signed_8(abfd, ptr) \
1073d19d7d58SLionel Sambuc   (((*(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
1074d19d7d58SLionel Sambuc 
1075d19d7d58SLionel Sambuc #define bfd_put_16(abfd, val, ptr) \
1076d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
1077d19d7d58SLionel Sambuc #define bfd_put_signed_16 \
1078d19d7d58SLionel Sambuc   bfd_put_16
1079d19d7d58SLionel Sambuc #define bfd_get_16(abfd, ptr) \
1080d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_getx16, (ptr))
1081d19d7d58SLionel Sambuc #define bfd_get_signed_16(abfd, ptr) \
1082d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
1083d19d7d58SLionel Sambuc 
1084d19d7d58SLionel Sambuc #define bfd_put_32(abfd, val, ptr) \
1085d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
1086d19d7d58SLionel Sambuc #define bfd_put_signed_32 \
1087d19d7d58SLionel Sambuc   bfd_put_32
1088d19d7d58SLionel Sambuc #define bfd_get_32(abfd, ptr) \
1089d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_getx32, (ptr))
1090d19d7d58SLionel Sambuc #define bfd_get_signed_32(abfd, ptr) \
1091d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
1092d19d7d58SLionel Sambuc 
1093d19d7d58SLionel Sambuc #define bfd_put_64(abfd, val, ptr) \
1094d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
1095d19d7d58SLionel Sambuc #define bfd_put_signed_64 \
1096d19d7d58SLionel Sambuc   bfd_put_64
1097d19d7d58SLionel Sambuc #define bfd_get_64(abfd, ptr) \
1098d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_getx64, (ptr))
1099d19d7d58SLionel Sambuc #define bfd_get_signed_64(abfd, ptr) \
1100d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
1101d19d7d58SLionel Sambuc 
1102d19d7d58SLionel Sambuc #define bfd_get(bits, abfd, ptr)                       \
1103d19d7d58SLionel Sambuc   ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
1104d19d7d58SLionel Sambuc    : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
1105d19d7d58SLionel Sambuc    : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
1106d19d7d58SLionel Sambuc    : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
1107d19d7d58SLionel Sambuc    : (abort (), (bfd_vma) - 1))
1108d19d7d58SLionel Sambuc 
1109d19d7d58SLionel Sambuc #define bfd_put(bits, abfd, val, ptr)                  \
1110d19d7d58SLionel Sambuc   ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
1111d19d7d58SLionel Sambuc    : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
1112d19d7d58SLionel Sambuc    : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
1113d19d7d58SLionel Sambuc    : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
1114d19d7d58SLionel Sambuc    : (abort (), (void) 0))
1115d19d7d58SLionel Sambuc 
1116d19d7d58SLionel Sambuc 
1117d19d7d58SLionel Sambuc /* Byte swapping macros for file header data.  */
1118d19d7d58SLionel Sambuc 
1119d19d7d58SLionel Sambuc #define bfd_h_put_8(abfd, val, ptr) \
1120d19d7d58SLionel Sambuc   bfd_put_8 (abfd, val, ptr)
1121d19d7d58SLionel Sambuc #define bfd_h_put_signed_8(abfd, val, ptr) \
1122d19d7d58SLionel Sambuc   bfd_put_8 (abfd, val, ptr)
1123d19d7d58SLionel Sambuc #define bfd_h_get_8(abfd, ptr) \
1124d19d7d58SLionel Sambuc   bfd_get_8 (abfd, ptr)
1125d19d7d58SLionel Sambuc #define bfd_h_get_signed_8(abfd, ptr) \
1126d19d7d58SLionel Sambuc   bfd_get_signed_8 (abfd, ptr)
1127d19d7d58SLionel Sambuc 
1128d19d7d58SLionel Sambuc #define bfd_h_put_16(abfd, val, ptr) \
1129d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
1130d19d7d58SLionel Sambuc #define bfd_h_put_signed_16 \
1131d19d7d58SLionel Sambuc   bfd_h_put_16
1132d19d7d58SLionel Sambuc #define bfd_h_get_16(abfd, ptr) \
1133d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_h_getx16, (ptr))
1134d19d7d58SLionel Sambuc #define bfd_h_get_signed_16(abfd, ptr) \
1135d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
1136d19d7d58SLionel Sambuc 
1137d19d7d58SLionel Sambuc #define bfd_h_put_32(abfd, val, ptr) \
1138d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
1139d19d7d58SLionel Sambuc #define bfd_h_put_signed_32 \
1140d19d7d58SLionel Sambuc   bfd_h_put_32
1141d19d7d58SLionel Sambuc #define bfd_h_get_32(abfd, ptr) \
1142d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_h_getx32, (ptr))
1143d19d7d58SLionel Sambuc #define bfd_h_get_signed_32(abfd, ptr) \
1144d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
1145d19d7d58SLionel Sambuc 
1146d19d7d58SLionel Sambuc #define bfd_h_put_64(abfd, val, ptr) \
1147d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
1148d19d7d58SLionel Sambuc #define bfd_h_put_signed_64 \
1149d19d7d58SLionel Sambuc   bfd_h_put_64
1150d19d7d58SLionel Sambuc #define bfd_h_get_64(abfd, ptr) \
1151d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_h_getx64, (ptr))
1152d19d7d58SLionel Sambuc #define bfd_h_get_signed_64(abfd, ptr) \
1153d19d7d58SLionel Sambuc   BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
1154d19d7d58SLionel Sambuc 
1155d19d7d58SLionel Sambuc /* Aliases for the above, which should eventually go away.  */
1156d19d7d58SLionel Sambuc 
1157d19d7d58SLionel Sambuc #define H_PUT_64  bfd_h_put_64
1158d19d7d58SLionel Sambuc #define H_PUT_32  bfd_h_put_32
1159d19d7d58SLionel Sambuc #define H_PUT_16  bfd_h_put_16
1160d19d7d58SLionel Sambuc #define H_PUT_8   bfd_h_put_8
1161d19d7d58SLionel Sambuc #define H_PUT_S64 bfd_h_put_signed_64
1162d19d7d58SLionel Sambuc #define H_PUT_S32 bfd_h_put_signed_32
1163d19d7d58SLionel Sambuc #define H_PUT_S16 bfd_h_put_signed_16
1164d19d7d58SLionel Sambuc #define H_PUT_S8  bfd_h_put_signed_8
1165d19d7d58SLionel Sambuc #define H_GET_64  bfd_h_get_64
1166d19d7d58SLionel Sambuc #define H_GET_32  bfd_h_get_32
1167d19d7d58SLionel Sambuc #define H_GET_16  bfd_h_get_16
1168d19d7d58SLionel Sambuc #define H_GET_8   bfd_h_get_8
1169d19d7d58SLionel Sambuc #define H_GET_S64 bfd_h_get_signed_64
1170d19d7d58SLionel Sambuc #define H_GET_S32 bfd_h_get_signed_32
1171d19d7d58SLionel Sambuc #define H_GET_S16 bfd_h_get_signed_16
1172d19d7d58SLionel Sambuc #define H_GET_S8  bfd_h_get_signed_8
1173d19d7d58SLionel Sambuc 
1174d19d7d58SLionel Sambuc 
1175d19d7d58SLionel Sambuc /* Extracted from bfdio.c.  */
1176d19d7d58SLionel Sambuc long bfd_get_mtime (bfd *abfd);
1177d19d7d58SLionel Sambuc 
1178d19d7d58SLionel Sambuc file_ptr bfd_get_size (bfd *abfd);
1179d19d7d58SLionel Sambuc 
1180d19d7d58SLionel Sambuc void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
1181c566d462SLionel Sambuc     int prot, int flags, file_ptr offset,
1182c566d462SLionel Sambuc     void **map_addr, bfd_size_type *map_len);
1183d19d7d58SLionel Sambuc 
1184d19d7d58SLionel Sambuc /* Extracted from bfdwin.c.  */
1185d19d7d58SLionel Sambuc /* Extracted from section.c.  */
1186d19d7d58SLionel Sambuc typedef struct bfd_section
1187d19d7d58SLionel Sambuc {
1188d19d7d58SLionel Sambuc   /* The name of the section; the name isn't a copy, the pointer is
1189d19d7d58SLionel Sambuc      the same as that passed to bfd_make_section.  */
1190d19d7d58SLionel Sambuc   const char *name;
1191d19d7d58SLionel Sambuc 
1192d19d7d58SLionel Sambuc   /* A unique sequence number.  */
1193d19d7d58SLionel Sambuc   int id;
1194d19d7d58SLionel Sambuc 
1195d19d7d58SLionel Sambuc   /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
1196d19d7d58SLionel Sambuc   int index;
1197d19d7d58SLionel Sambuc 
1198d19d7d58SLionel Sambuc   /* The next section in the list belonging to the BFD, or NULL.  */
1199d19d7d58SLionel Sambuc   struct bfd_section *next;
1200d19d7d58SLionel Sambuc 
1201d19d7d58SLionel Sambuc   /* The previous section in the list belonging to the BFD, or NULL.  */
1202d19d7d58SLionel Sambuc   struct bfd_section *prev;
1203d19d7d58SLionel Sambuc 
1204d19d7d58SLionel Sambuc   /* The field flags contains attributes of the section. Some
1205d19d7d58SLionel Sambuc      flags are read in from the object file, and some are
1206d19d7d58SLionel Sambuc      synthesized from other information.  */
1207d19d7d58SLionel Sambuc   flagword flags;
1208d19d7d58SLionel Sambuc 
1209d19d7d58SLionel Sambuc #define SEC_NO_FLAGS   0x000
1210d19d7d58SLionel Sambuc 
1211d19d7d58SLionel Sambuc   /* Tells the OS to allocate space for this section when loading.
1212d19d7d58SLionel Sambuc      This is clear for a section containing debug information only.  */
1213d19d7d58SLionel Sambuc #define SEC_ALLOC      0x001
1214d19d7d58SLionel Sambuc 
1215d19d7d58SLionel Sambuc   /* Tells the OS to load the section from the file when loading.
1216d19d7d58SLionel Sambuc      This is clear for a .bss section.  */
1217d19d7d58SLionel Sambuc #define SEC_LOAD       0x002
1218d19d7d58SLionel Sambuc 
1219d19d7d58SLionel Sambuc   /* The section contains data still to be relocated, so there is
1220d19d7d58SLionel Sambuc      some relocation information too.  */
1221d19d7d58SLionel Sambuc #define SEC_RELOC      0x004
1222d19d7d58SLionel Sambuc 
1223d19d7d58SLionel Sambuc   /* A signal to the OS that the section contains read only data.  */
1224d19d7d58SLionel Sambuc #define SEC_READONLY   0x008
1225d19d7d58SLionel Sambuc 
1226d19d7d58SLionel Sambuc   /* The section contains code only.  */
1227d19d7d58SLionel Sambuc #define SEC_CODE       0x010
1228d19d7d58SLionel Sambuc 
1229d19d7d58SLionel Sambuc   /* The section contains data only.  */
1230d19d7d58SLionel Sambuc #define SEC_DATA       0x020
1231d19d7d58SLionel Sambuc 
1232d19d7d58SLionel Sambuc   /* The section will reside in ROM.  */
1233d19d7d58SLionel Sambuc #define SEC_ROM        0x040
1234d19d7d58SLionel Sambuc 
1235d19d7d58SLionel Sambuc   /* The section contains constructor information. This section
1236d19d7d58SLionel Sambuc      type is used by the linker to create lists of constructors and
1237d19d7d58SLionel Sambuc      destructors used by <<g++>>. When a back end sees a symbol
1238d19d7d58SLionel Sambuc      which should be used in a constructor list, it creates a new
1239d19d7d58SLionel Sambuc      section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
1240d19d7d58SLionel Sambuc      the symbol to it, and builds a relocation. To build the lists
1241d19d7d58SLionel Sambuc      of constructors, all the linker has to do is catenate all the
1242d19d7d58SLionel Sambuc      sections called <<__CTOR_LIST__>> and relocate the data
1243d19d7d58SLionel Sambuc      contained within - exactly the operations it would peform on
1244d19d7d58SLionel Sambuc      standard data.  */
1245d19d7d58SLionel Sambuc #define SEC_CONSTRUCTOR 0x080
1246d19d7d58SLionel Sambuc 
1247d19d7d58SLionel Sambuc   /* The section has contents - a data section could be
1248d19d7d58SLionel Sambuc      <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
1249d19d7d58SLionel Sambuc      <<SEC_HAS_CONTENTS>>  */
1250d19d7d58SLionel Sambuc #define SEC_HAS_CONTENTS 0x100
1251d19d7d58SLionel Sambuc 
1252d19d7d58SLionel Sambuc   /* An instruction to the linker to not output the section
1253d19d7d58SLionel Sambuc      even if it has information which would normally be written.  */
1254d19d7d58SLionel Sambuc #define SEC_NEVER_LOAD 0x200
1255d19d7d58SLionel Sambuc 
1256d19d7d58SLionel Sambuc   /* The section contains thread local data.  */
1257d19d7d58SLionel Sambuc #define SEC_THREAD_LOCAL 0x400
1258d19d7d58SLionel Sambuc 
1259d19d7d58SLionel Sambuc   /* The section has GOT references.  This flag is only for the
1260d19d7d58SLionel Sambuc      linker, and is currently only used by the elf32-hppa back end.
1261d19d7d58SLionel Sambuc      It will be set if global offset table references were detected
1262d19d7d58SLionel Sambuc      in this section, which indicate to the linker that the section
1263d19d7d58SLionel Sambuc      contains PIC code, and must be handled specially when doing a
1264d19d7d58SLionel Sambuc      static link.  */
1265d19d7d58SLionel Sambuc #define SEC_HAS_GOT_REF 0x800
1266d19d7d58SLionel Sambuc 
1267d19d7d58SLionel Sambuc   /* The section contains common symbols (symbols may be defined
1268d19d7d58SLionel Sambuc      multiple times, the value of a symbol is the amount of
1269d19d7d58SLionel Sambuc      space it requires, and the largest symbol value is the one
1270d19d7d58SLionel Sambuc      used).  Most targets have exactly one of these (which we
1271d19d7d58SLionel Sambuc      translate to bfd_com_section_ptr), but ECOFF has two.  */
1272d19d7d58SLionel Sambuc #define SEC_IS_COMMON 0x1000
1273d19d7d58SLionel Sambuc 
1274d19d7d58SLionel Sambuc   /* The section contains only debugging information.  For
1275d19d7d58SLionel Sambuc      example, this is set for ELF .debug and .stab sections.
1276d19d7d58SLionel Sambuc      strip tests this flag to see if a section can be
1277d19d7d58SLionel Sambuc      discarded.  */
1278d19d7d58SLionel Sambuc #define SEC_DEBUGGING 0x2000
1279d19d7d58SLionel Sambuc 
1280d19d7d58SLionel Sambuc   /* The contents of this section are held in memory pointed to
1281d19d7d58SLionel Sambuc      by the contents field.  This is checked by bfd_get_section_contents,
1282d19d7d58SLionel Sambuc      and the data is retrieved from memory if appropriate.  */
1283d19d7d58SLionel Sambuc #define SEC_IN_MEMORY 0x4000
1284d19d7d58SLionel Sambuc 
1285d19d7d58SLionel Sambuc   /* The contents of this section are to be excluded by the
1286d19d7d58SLionel Sambuc      linker for executable and shared objects unless those
1287d19d7d58SLionel Sambuc      objects are to be further relocated.  */
1288d19d7d58SLionel Sambuc #define SEC_EXCLUDE 0x8000
1289d19d7d58SLionel Sambuc 
1290d19d7d58SLionel Sambuc   /* The contents of this section are to be sorted based on the sum of
1291d19d7d58SLionel Sambuc      the symbol and addend values specified by the associated relocation
1292d19d7d58SLionel Sambuc      entries.  Entries without associated relocation entries will be
1293d19d7d58SLionel Sambuc      appended to the end of the section in an unspecified order.  */
1294d19d7d58SLionel Sambuc #define SEC_SORT_ENTRIES 0x10000
1295d19d7d58SLionel Sambuc 
1296d19d7d58SLionel Sambuc   /* When linking, duplicate sections of the same name should be
1297d19d7d58SLionel Sambuc      discarded, rather than being combined into a single section as
1298d19d7d58SLionel Sambuc      is usually done.  This is similar to how common symbols are
1299d19d7d58SLionel Sambuc      handled.  See SEC_LINK_DUPLICATES below.  */
1300d19d7d58SLionel Sambuc #define SEC_LINK_ONCE 0x20000
1301d19d7d58SLionel Sambuc 
1302d19d7d58SLionel Sambuc   /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
1303d19d7d58SLionel Sambuc      should handle duplicate sections.  */
1304d19d7d58SLionel Sambuc #define SEC_LINK_DUPLICATES 0xc0000
1305d19d7d58SLionel Sambuc 
1306d19d7d58SLionel Sambuc   /* This value for SEC_LINK_DUPLICATES means that duplicate
1307d19d7d58SLionel Sambuc      sections with the same name should simply be discarded.  */
1308d19d7d58SLionel Sambuc #define SEC_LINK_DUPLICATES_DISCARD 0x0
1309d19d7d58SLionel Sambuc 
1310d19d7d58SLionel Sambuc   /* This value for SEC_LINK_DUPLICATES means that the linker
1311d19d7d58SLionel Sambuc      should warn if there are any duplicate sections, although
1312d19d7d58SLionel Sambuc      it should still only link one copy.  */
1313d19d7d58SLionel Sambuc #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
1314d19d7d58SLionel Sambuc 
1315d19d7d58SLionel Sambuc   /* This value for SEC_LINK_DUPLICATES means that the linker
1316d19d7d58SLionel Sambuc      should warn if any duplicate sections are a different size.  */
1317d19d7d58SLionel Sambuc #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
1318d19d7d58SLionel Sambuc 
1319d19d7d58SLionel Sambuc   /* This value for SEC_LINK_DUPLICATES means that the linker
1320d19d7d58SLionel Sambuc      should warn if any duplicate sections contain different
1321d19d7d58SLionel Sambuc      contents.  */
1322d19d7d58SLionel Sambuc #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
1323d19d7d58SLionel Sambuc   (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
1324d19d7d58SLionel Sambuc 
1325d19d7d58SLionel Sambuc   /* This section was created by the linker as part of dynamic
1326d19d7d58SLionel Sambuc      relocation or other arcane processing.  It is skipped when
1327d19d7d58SLionel Sambuc      going through the first-pass output, trusting that someone
1328d19d7d58SLionel Sambuc      else up the line will take care of it later.  */
1329d19d7d58SLionel Sambuc #define SEC_LINKER_CREATED 0x100000
1330d19d7d58SLionel Sambuc 
1331d19d7d58SLionel Sambuc   /* This section should not be subject to garbage collection.
1332d19d7d58SLionel Sambuc      Also set to inform the linker that this section should not be
1333d19d7d58SLionel Sambuc      listed in the link map as discarded.  */
1334d19d7d58SLionel Sambuc #define SEC_KEEP 0x200000
1335d19d7d58SLionel Sambuc 
1336d19d7d58SLionel Sambuc   /* This section contains "short" data, and should be placed
1337d19d7d58SLionel Sambuc      "near" the GP.  */
1338d19d7d58SLionel Sambuc #define SEC_SMALL_DATA 0x400000
1339d19d7d58SLionel Sambuc 
1340d19d7d58SLionel Sambuc   /* Attempt to merge identical entities in the section.
1341d19d7d58SLionel Sambuc      Entity size is given in the entsize field.  */
1342d19d7d58SLionel Sambuc #define SEC_MERGE 0x800000
1343d19d7d58SLionel Sambuc 
1344d19d7d58SLionel Sambuc   /* If given with SEC_MERGE, entities to merge are zero terminated
1345d19d7d58SLionel Sambuc      strings where entsize specifies character size instead of fixed
1346d19d7d58SLionel Sambuc      size entries.  */
1347d19d7d58SLionel Sambuc #define SEC_STRINGS 0x1000000
1348d19d7d58SLionel Sambuc 
1349d19d7d58SLionel Sambuc   /* This section contains data about section groups.  */
1350d19d7d58SLionel Sambuc #define SEC_GROUP 0x2000000
1351d19d7d58SLionel Sambuc 
1352d19d7d58SLionel Sambuc   /* The section is a COFF shared library section.  This flag is
1353d19d7d58SLionel Sambuc      only for the linker.  If this type of section appears in
1354d19d7d58SLionel Sambuc      the input file, the linker must copy it to the output file
1355d19d7d58SLionel Sambuc      without changing the vma or size.  FIXME: Although this
1356d19d7d58SLionel Sambuc      was originally intended to be general, it really is COFF
1357d19d7d58SLionel Sambuc      specific (and the flag was renamed to indicate this).  It
1358d19d7d58SLionel Sambuc      might be cleaner to have some more general mechanism to
1359d19d7d58SLionel Sambuc      allow the back end to control what the linker does with
1360d19d7d58SLionel Sambuc      sections.  */
1361d19d7d58SLionel Sambuc #define SEC_COFF_SHARED_LIBRARY 0x4000000
1362d19d7d58SLionel Sambuc 
1363c566d462SLionel Sambuc   /* This input section should be copied to output in reverse order
1364c566d462SLionel Sambuc      as an array of pointers.  This is for ELF linker internal use
1365c566d462SLionel Sambuc      only.  */
1366c566d462SLionel Sambuc #define SEC_ELF_REVERSE_COPY 0x4000000
1367c566d462SLionel Sambuc 
1368d19d7d58SLionel Sambuc   /* This section contains data which may be shared with other
1369d19d7d58SLionel Sambuc      executables or shared objects. This is for COFF only.  */
1370d19d7d58SLionel Sambuc #define SEC_COFF_SHARED 0x8000000
1371d19d7d58SLionel Sambuc 
1372d19d7d58SLionel Sambuc   /* When a section with this flag is being linked, then if the size of
1373d19d7d58SLionel Sambuc      the input section is less than a page, it should not cross a page
1374d19d7d58SLionel Sambuc      boundary.  If the size of the input section is one page or more,
1375d19d7d58SLionel Sambuc      it should be aligned on a page boundary.  This is for TI
1376d19d7d58SLionel Sambuc      TMS320C54X only.  */
1377d19d7d58SLionel Sambuc #define SEC_TIC54X_BLOCK 0x10000000
1378d19d7d58SLionel Sambuc 
1379d19d7d58SLionel Sambuc   /* Conditionally link this section; do not link if there are no
1380d19d7d58SLionel Sambuc      references found to any symbol in the section.  This is for TI
1381d19d7d58SLionel Sambuc      TMS320C54X only.  */
1382d19d7d58SLionel Sambuc #define SEC_TIC54X_CLINK 0x20000000
1383d19d7d58SLionel Sambuc 
1384d19d7d58SLionel Sambuc   /* Indicate that section has the no read flag set. This happens
1385d19d7d58SLionel Sambuc      when memory read flag isn't set. */
1386d19d7d58SLionel Sambuc #define SEC_COFF_NOREAD 0x40000000
1387d19d7d58SLionel Sambuc 
1388d19d7d58SLionel Sambuc   /*  End of section flags.  */
1389d19d7d58SLionel Sambuc 
1390d19d7d58SLionel Sambuc   /* Some internal packed boolean fields.  */
1391d19d7d58SLionel Sambuc 
1392d19d7d58SLionel Sambuc   /* See the vma field.  */
1393d19d7d58SLionel Sambuc   unsigned int user_set_vma : 1;
1394d19d7d58SLionel Sambuc 
1395d19d7d58SLionel Sambuc   /* A mark flag used by some of the linker backends.  */
1396d19d7d58SLionel Sambuc   unsigned int linker_mark : 1;
1397d19d7d58SLionel Sambuc 
1398d19d7d58SLionel Sambuc   /* Another mark flag used by some of the linker backends.  Set for
1399d19d7d58SLionel Sambuc      output sections that have an input section.  */
1400d19d7d58SLionel Sambuc   unsigned int linker_has_input : 1;
1401d19d7d58SLionel Sambuc 
1402d19d7d58SLionel Sambuc   /* Mark flag used by some linker backends for garbage collection.  */
1403d19d7d58SLionel Sambuc   unsigned int gc_mark : 1;
1404d19d7d58SLionel Sambuc 
1405d19d7d58SLionel Sambuc   /* Section compression status.  */
1406d19d7d58SLionel Sambuc   unsigned int compress_status : 2;
1407d19d7d58SLionel Sambuc #define COMPRESS_SECTION_NONE    0
1408d19d7d58SLionel Sambuc #define COMPRESS_SECTION_DONE    1
1409d19d7d58SLionel Sambuc #define DECOMPRESS_SECTION_SIZED 2
1410d19d7d58SLionel Sambuc 
1411d19d7d58SLionel Sambuc   /* The following flags are used by the ELF linker. */
1412d19d7d58SLionel Sambuc 
1413d19d7d58SLionel Sambuc   /* Mark sections which have been allocated to segments.  */
1414d19d7d58SLionel Sambuc   unsigned int segment_mark : 1;
1415d19d7d58SLionel Sambuc 
1416d19d7d58SLionel Sambuc   /* Type of sec_info information.  */
1417d19d7d58SLionel Sambuc   unsigned int sec_info_type:3;
1418*c9ea9e7aSLionel Sambuc #define SEC_INFO_TYPE_NONE      0
1419*c9ea9e7aSLionel Sambuc #define SEC_INFO_TYPE_STABS     1
1420*c9ea9e7aSLionel Sambuc #define SEC_INFO_TYPE_MERGE     2
1421*c9ea9e7aSLionel Sambuc #define SEC_INFO_TYPE_EH_FRAME  3
1422*c9ea9e7aSLionel Sambuc #define SEC_INFO_TYPE_JUST_SYMS 4
1423d19d7d58SLionel Sambuc 
1424d19d7d58SLionel Sambuc   /* Nonzero if this section uses RELA relocations, rather than REL.  */
1425d19d7d58SLionel Sambuc   unsigned int use_rela_p:1;
1426d19d7d58SLionel Sambuc 
1427d19d7d58SLionel Sambuc   /* Bits used by various backends.  The generic code doesn't touch
1428d19d7d58SLionel Sambuc      these fields.  */
1429d19d7d58SLionel Sambuc 
1430d19d7d58SLionel Sambuc   unsigned int sec_flg0:1;
1431d19d7d58SLionel Sambuc   unsigned int sec_flg1:1;
1432d19d7d58SLionel Sambuc   unsigned int sec_flg2:1;
1433d19d7d58SLionel Sambuc   unsigned int sec_flg3:1;
1434d19d7d58SLionel Sambuc   unsigned int sec_flg4:1;
1435d19d7d58SLionel Sambuc   unsigned int sec_flg5:1;
1436d19d7d58SLionel Sambuc 
1437d19d7d58SLionel Sambuc   /* End of internal packed boolean fields.  */
1438d19d7d58SLionel Sambuc 
1439d19d7d58SLionel Sambuc   /*  The virtual memory address of the section - where it will be
1440d19d7d58SLionel Sambuc       at run time.  The symbols are relocated against this.  The
1441d19d7d58SLionel Sambuc       user_set_vma flag is maintained by bfd; if it's not set, the
1442d19d7d58SLionel Sambuc       backend can assign addresses (for example, in <<a.out>>, where
1443d19d7d58SLionel Sambuc       the default address for <<.data>> is dependent on the specific
1444d19d7d58SLionel Sambuc       target and various flags).  */
1445d19d7d58SLionel Sambuc   bfd_vma vma;
1446d19d7d58SLionel Sambuc 
1447d19d7d58SLionel Sambuc   /*  The load address of the section - where it would be in a
1448d19d7d58SLionel Sambuc       rom image; really only used for writing section header
1449d19d7d58SLionel Sambuc       information.  */
1450d19d7d58SLionel Sambuc   bfd_vma lma;
1451d19d7d58SLionel Sambuc 
1452d19d7d58SLionel Sambuc   /* The size of the section in octets, as it will be output.
1453d19d7d58SLionel Sambuc      Contains a value even if the section has no contents (e.g., the
1454d19d7d58SLionel Sambuc      size of <<.bss>>).  */
1455d19d7d58SLionel Sambuc   bfd_size_type size;
1456d19d7d58SLionel Sambuc 
1457d19d7d58SLionel Sambuc   /* For input sections, the original size on disk of the section, in
1458d19d7d58SLionel Sambuc      octets.  This field should be set for any section whose size is
1459d19d7d58SLionel Sambuc      changed by linker relaxation.  It is required for sections where
1460d19d7d58SLionel Sambuc      the linker relaxation scheme doesn't cache altered section and
1461d19d7d58SLionel Sambuc      reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
1462d19d7d58SLionel Sambuc      targets), and thus the original size needs to be kept to read the
1463d19d7d58SLionel Sambuc      section multiple times.  For output sections, rawsize holds the
1464d19d7d58SLionel Sambuc      section size calculated on a previous linker relaxation pass.  */
1465d19d7d58SLionel Sambuc   bfd_size_type rawsize;
1466d19d7d58SLionel Sambuc 
1467d19d7d58SLionel Sambuc   /* The compressed size of the section in octets.  */
1468d19d7d58SLionel Sambuc   bfd_size_type compressed_size;
1469d19d7d58SLionel Sambuc 
1470d19d7d58SLionel Sambuc   /* Relaxation table. */
1471d19d7d58SLionel Sambuc   struct relax_table *relax;
1472d19d7d58SLionel Sambuc 
1473d19d7d58SLionel Sambuc   /* Count of used relaxation table entries. */
1474d19d7d58SLionel Sambuc   int relax_count;
1475d19d7d58SLionel Sambuc 
1476d19d7d58SLionel Sambuc 
1477d19d7d58SLionel Sambuc   /* If this section is going to be output, then this value is the
1478d19d7d58SLionel Sambuc      offset in *bytes* into the output section of the first byte in the
1479d19d7d58SLionel Sambuc      input section (byte ==> smallest addressable unit on the
1480d19d7d58SLionel Sambuc      target).  In most cases, if this was going to start at the
1481d19d7d58SLionel Sambuc      100th octet (8-bit quantity) in the output section, this value
1482d19d7d58SLionel Sambuc      would be 100.  However, if the target byte size is 16 bits
1483d19d7d58SLionel Sambuc      (bfd_octets_per_byte is "2"), this value would be 50.  */
1484d19d7d58SLionel Sambuc   bfd_vma output_offset;
1485d19d7d58SLionel Sambuc 
1486d19d7d58SLionel Sambuc   /* The output section through which to map on output.  */
1487d19d7d58SLionel Sambuc   struct bfd_section *output_section;
1488d19d7d58SLionel Sambuc 
1489d19d7d58SLionel Sambuc   /* The alignment requirement of the section, as an exponent of 2 -
1490d19d7d58SLionel Sambuc      e.g., 3 aligns to 2^3 (or 8).  */
1491d19d7d58SLionel Sambuc   unsigned int alignment_power;
1492d19d7d58SLionel Sambuc 
1493d19d7d58SLionel Sambuc   /* If an input section, a pointer to a vector of relocation
1494d19d7d58SLionel Sambuc      records for the data in this section.  */
1495d19d7d58SLionel Sambuc   struct reloc_cache_entry *relocation;
1496d19d7d58SLionel Sambuc 
1497d19d7d58SLionel Sambuc   /* If an output section, a pointer to a vector of pointers to
1498d19d7d58SLionel Sambuc      relocation records for the data in this section.  */
1499d19d7d58SLionel Sambuc   struct reloc_cache_entry **orelocation;
1500d19d7d58SLionel Sambuc 
1501d19d7d58SLionel Sambuc   /* The number of relocation records in one of the above.  */
1502d19d7d58SLionel Sambuc   unsigned reloc_count;
1503d19d7d58SLionel Sambuc 
1504d19d7d58SLionel Sambuc   /* Information below is back end specific - and not always used
1505d19d7d58SLionel Sambuc      or updated.  */
1506d19d7d58SLionel Sambuc 
1507d19d7d58SLionel Sambuc   /* File position of section data.  */
1508d19d7d58SLionel Sambuc   file_ptr filepos;
1509d19d7d58SLionel Sambuc 
1510d19d7d58SLionel Sambuc   /* File position of relocation info.  */
1511d19d7d58SLionel Sambuc   file_ptr rel_filepos;
1512d19d7d58SLionel Sambuc 
1513d19d7d58SLionel Sambuc   /* File position of line data.  */
1514d19d7d58SLionel Sambuc   file_ptr line_filepos;
1515d19d7d58SLionel Sambuc 
1516d19d7d58SLionel Sambuc   /* Pointer to data for applications.  */
1517d19d7d58SLionel Sambuc   void *userdata;
1518d19d7d58SLionel Sambuc 
1519d19d7d58SLionel Sambuc   /* If the SEC_IN_MEMORY flag is set, this points to the actual
1520d19d7d58SLionel Sambuc      contents.  */
1521d19d7d58SLionel Sambuc   unsigned char *contents;
1522d19d7d58SLionel Sambuc 
1523d19d7d58SLionel Sambuc   /* Attached line number information.  */
1524d19d7d58SLionel Sambuc   alent *lineno;
1525d19d7d58SLionel Sambuc 
1526d19d7d58SLionel Sambuc   /* Number of line number records.  */
1527d19d7d58SLionel Sambuc   unsigned int lineno_count;
1528d19d7d58SLionel Sambuc 
1529d19d7d58SLionel Sambuc   /* Entity size for merging purposes.  */
1530d19d7d58SLionel Sambuc   unsigned int entsize;
1531d19d7d58SLionel Sambuc 
1532d19d7d58SLionel Sambuc   /* Points to the kept section if this section is a link-once section,
1533d19d7d58SLionel Sambuc      and is discarded.  */
1534d19d7d58SLionel Sambuc   struct bfd_section *kept_section;
1535d19d7d58SLionel Sambuc 
1536d19d7d58SLionel Sambuc   /* When a section is being output, this value changes as more
1537d19d7d58SLionel Sambuc      linenumbers are written out.  */
1538d19d7d58SLionel Sambuc   file_ptr moving_line_filepos;
1539d19d7d58SLionel Sambuc 
1540d19d7d58SLionel Sambuc   /* What the section number is in the target world.  */
1541d19d7d58SLionel Sambuc   int target_index;
1542d19d7d58SLionel Sambuc 
1543d19d7d58SLionel Sambuc   void *used_by_bfd;
1544d19d7d58SLionel Sambuc 
1545d19d7d58SLionel Sambuc   /* If this is a constructor section then here is a list of the
1546d19d7d58SLionel Sambuc      relocations created to relocate items within it.  */
1547d19d7d58SLionel Sambuc   struct relent_chain *constructor_chain;
1548d19d7d58SLionel Sambuc 
1549d19d7d58SLionel Sambuc   /* The BFD which owns the section.  */
1550d19d7d58SLionel Sambuc   bfd *owner;
1551d19d7d58SLionel Sambuc 
1552d19d7d58SLionel Sambuc   /* A symbol which points at this section only.  */
1553d19d7d58SLionel Sambuc   struct bfd_symbol *symbol;
1554d19d7d58SLionel Sambuc   struct bfd_symbol **symbol_ptr_ptr;
1555d19d7d58SLionel Sambuc 
1556d19d7d58SLionel Sambuc   /* Early in the link process, map_head and map_tail are used to build
1557d19d7d58SLionel Sambuc      a list of input sections attached to an output section.  Later,
1558d19d7d58SLionel Sambuc      output sections use these fields for a list of bfd_link_order
1559d19d7d58SLionel Sambuc      structs.  */
1560d19d7d58SLionel Sambuc   union {
1561d19d7d58SLionel Sambuc     struct bfd_link_order *link_order;
1562d19d7d58SLionel Sambuc     struct bfd_section *s;
1563d19d7d58SLionel Sambuc   } map_head, map_tail;
1564d19d7d58SLionel Sambuc } asection;
1565d19d7d58SLionel Sambuc 
1566d19d7d58SLionel Sambuc /* Relax table contains information about instructions which can
1567d19d7d58SLionel Sambuc    be removed by relaxation -- replacing a long address with a
1568d19d7d58SLionel Sambuc    short address.  */
1569d19d7d58SLionel Sambuc struct relax_table {
1570d19d7d58SLionel Sambuc   /* Address where bytes may be deleted. */
1571d19d7d58SLionel Sambuc   bfd_vma addr;
1572d19d7d58SLionel Sambuc 
1573d19d7d58SLionel Sambuc   /* Number of bytes to be deleted.  */
1574d19d7d58SLionel Sambuc   int size;
1575d19d7d58SLionel Sambuc };
1576d19d7d58SLionel Sambuc 
1577d19d7d58SLionel Sambuc /* These sections are global, and are managed by BFD.  The application
1578d19d7d58SLionel Sambuc    and target back end are not permitted to change the values in
1579*c9ea9e7aSLionel Sambuc    these sections.  */
1580*c9ea9e7aSLionel Sambuc extern asection std_section[4];
1581*c9ea9e7aSLionel Sambuc 
1582d19d7d58SLionel Sambuc #define BFD_ABS_SECTION_NAME "*ABS*"
1583d19d7d58SLionel Sambuc #define BFD_UND_SECTION_NAME "*UND*"
1584d19d7d58SLionel Sambuc #define BFD_COM_SECTION_NAME "*COM*"
1585d19d7d58SLionel Sambuc #define BFD_IND_SECTION_NAME "*IND*"
1586d19d7d58SLionel Sambuc 
1587d19d7d58SLionel Sambuc /* Pointer to the common section.  */
1588*c9ea9e7aSLionel Sambuc #define bfd_com_section_ptr (&std_section[0])
1589*c9ea9e7aSLionel Sambuc /* Pointer to the undefined section.  */
1590*c9ea9e7aSLionel Sambuc #define bfd_und_section_ptr (&std_section[1])
1591*c9ea9e7aSLionel Sambuc /* Pointer to the absolute section.  */
1592*c9ea9e7aSLionel Sambuc #define bfd_abs_section_ptr (&std_section[2])
1593d19d7d58SLionel Sambuc /* Pointer to the indirect section.  */
1594*c9ea9e7aSLionel Sambuc #define bfd_ind_section_ptr (&std_section[3])
1595*c9ea9e7aSLionel Sambuc 
1596*c9ea9e7aSLionel Sambuc #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
1597*c9ea9e7aSLionel Sambuc #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
1598d19d7d58SLionel Sambuc #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
1599d19d7d58SLionel Sambuc 
1600d19d7d58SLionel Sambuc #define bfd_is_const_section(SEC)              \
1601d19d7d58SLionel Sambuc  (   ((SEC) == bfd_abs_section_ptr)            \
1602d19d7d58SLionel Sambuc   || ((SEC) == bfd_und_section_ptr)            \
1603d19d7d58SLionel Sambuc   || ((SEC) == bfd_com_section_ptr)            \
1604d19d7d58SLionel Sambuc   || ((SEC) == bfd_ind_section_ptr))
1605d19d7d58SLionel Sambuc 
1606d19d7d58SLionel Sambuc /* Macros to handle insertion and deletion of a bfd's sections.  These
1607d19d7d58SLionel Sambuc    only handle the list pointers, ie. do not adjust section_count,
1608d19d7d58SLionel Sambuc    target_index etc.  */
1609d19d7d58SLionel Sambuc #define bfd_section_list_remove(ABFD, S) \
1610d19d7d58SLionel Sambuc   do                                                   \
1611d19d7d58SLionel Sambuc     {                                                  \
1612d19d7d58SLionel Sambuc       asection *_s = S;                                \
1613d19d7d58SLionel Sambuc       asection *_next = _s->next;                      \
1614d19d7d58SLionel Sambuc       asection *_prev = _s->prev;                      \
1615d19d7d58SLionel Sambuc       if (_prev)                                       \
1616d19d7d58SLionel Sambuc         _prev->next = _next;                           \
1617d19d7d58SLionel Sambuc       else                                             \
1618d19d7d58SLionel Sambuc         (ABFD)->sections = _next;                      \
1619d19d7d58SLionel Sambuc       if (_next)                                       \
1620d19d7d58SLionel Sambuc         _next->prev = _prev;                           \
1621d19d7d58SLionel Sambuc       else                                             \
1622d19d7d58SLionel Sambuc         (ABFD)->section_last = _prev;                  \
1623d19d7d58SLionel Sambuc     }                                                  \
1624d19d7d58SLionel Sambuc   while (0)
1625d19d7d58SLionel Sambuc #define bfd_section_list_append(ABFD, S) \
1626d19d7d58SLionel Sambuc   do                                                   \
1627d19d7d58SLionel Sambuc     {                                                  \
1628d19d7d58SLionel Sambuc       asection *_s = S;                                \
1629d19d7d58SLionel Sambuc       bfd *_abfd = ABFD;                               \
1630d19d7d58SLionel Sambuc       _s->next = NULL;                                 \
1631d19d7d58SLionel Sambuc       if (_abfd->section_last)                         \
1632d19d7d58SLionel Sambuc         {                                              \
1633d19d7d58SLionel Sambuc           _s->prev = _abfd->section_last;              \
1634d19d7d58SLionel Sambuc           _abfd->section_last->next = _s;              \
1635d19d7d58SLionel Sambuc         }                                              \
1636d19d7d58SLionel Sambuc       else                                             \
1637d19d7d58SLionel Sambuc         {                                              \
1638d19d7d58SLionel Sambuc           _s->prev = NULL;                             \
1639d19d7d58SLionel Sambuc           _abfd->sections = _s;                        \
1640d19d7d58SLionel Sambuc         }                                              \
1641d19d7d58SLionel Sambuc       _abfd->section_last = _s;                        \
1642d19d7d58SLionel Sambuc     }                                                  \
1643d19d7d58SLionel Sambuc   while (0)
1644d19d7d58SLionel Sambuc #define bfd_section_list_prepend(ABFD, S) \
1645d19d7d58SLionel Sambuc   do                                                   \
1646d19d7d58SLionel Sambuc     {                                                  \
1647d19d7d58SLionel Sambuc       asection *_s = S;                                \
1648d19d7d58SLionel Sambuc       bfd *_abfd = ABFD;                               \
1649d19d7d58SLionel Sambuc       _s->prev = NULL;                                 \
1650d19d7d58SLionel Sambuc       if (_abfd->sections)                             \
1651d19d7d58SLionel Sambuc         {                                              \
1652d19d7d58SLionel Sambuc           _s->next = _abfd->sections;                  \
1653d19d7d58SLionel Sambuc           _abfd->sections->prev = _s;                  \
1654d19d7d58SLionel Sambuc         }                                              \
1655d19d7d58SLionel Sambuc       else                                             \
1656d19d7d58SLionel Sambuc         {                                              \
1657d19d7d58SLionel Sambuc           _s->next = NULL;                             \
1658d19d7d58SLionel Sambuc           _abfd->section_last = _s;                    \
1659d19d7d58SLionel Sambuc         }                                              \
1660d19d7d58SLionel Sambuc       _abfd->sections = _s;                            \
1661d19d7d58SLionel Sambuc     }                                                  \
1662d19d7d58SLionel Sambuc   while (0)
1663d19d7d58SLionel Sambuc #define bfd_section_list_insert_after(ABFD, A, S) \
1664d19d7d58SLionel Sambuc   do                                                   \
1665d19d7d58SLionel Sambuc     {                                                  \
1666d19d7d58SLionel Sambuc       asection *_a = A;                                \
1667d19d7d58SLionel Sambuc       asection *_s = S;                                \
1668d19d7d58SLionel Sambuc       asection *_next = _a->next;                      \
1669d19d7d58SLionel Sambuc       _s->next = _next;                                \
1670d19d7d58SLionel Sambuc       _s->prev = _a;                                   \
1671d19d7d58SLionel Sambuc       _a->next = _s;                                   \
1672d19d7d58SLionel Sambuc       if (_next)                                       \
1673d19d7d58SLionel Sambuc         _next->prev = _s;                              \
1674d19d7d58SLionel Sambuc       else                                             \
1675d19d7d58SLionel Sambuc         (ABFD)->section_last = _s;                     \
1676d19d7d58SLionel Sambuc     }                                                  \
1677d19d7d58SLionel Sambuc   while (0)
1678d19d7d58SLionel Sambuc #define bfd_section_list_insert_before(ABFD, B, S) \
1679d19d7d58SLionel Sambuc   do                                                   \
1680d19d7d58SLionel Sambuc     {                                                  \
1681d19d7d58SLionel Sambuc       asection *_b = B;                                \
1682d19d7d58SLionel Sambuc       asection *_s = S;                                \
1683d19d7d58SLionel Sambuc       asection *_prev = _b->prev;                      \
1684d19d7d58SLionel Sambuc       _s->prev = _prev;                                \
1685d19d7d58SLionel Sambuc       _s->next = _b;                                   \
1686d19d7d58SLionel Sambuc       _b->prev = _s;                                   \
1687d19d7d58SLionel Sambuc       if (_prev)                                       \
1688d19d7d58SLionel Sambuc         _prev->next = _s;                              \
1689d19d7d58SLionel Sambuc       else                                             \
1690d19d7d58SLionel Sambuc         (ABFD)->sections = _s;                         \
1691d19d7d58SLionel Sambuc     }                                                  \
1692d19d7d58SLionel Sambuc   while (0)
1693d19d7d58SLionel Sambuc #define bfd_section_removed_from_list(ABFD, S) \
1694d19d7d58SLionel Sambuc   ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
1695d19d7d58SLionel Sambuc 
1696d19d7d58SLionel Sambuc #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
1697d19d7d58SLionel Sambuc   /* name, id,  index, next, prev, flags, user_set_vma,            */  \
1698d19d7d58SLionel Sambuc   { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
1699d19d7d58SLionel Sambuc                                                                        \
1700d19d7d58SLionel Sambuc   /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
1701d19d7d58SLionel Sambuc      0,           0,                1,       0,                        \
1702d19d7d58SLionel Sambuc                                                                        \
1703d19d7d58SLionel Sambuc   /* segment_mark, sec_info_type, use_rela_p,                      */  \
1704d19d7d58SLionel Sambuc      0,            0,             0,                                   \
1705d19d7d58SLionel Sambuc                                                                        \
1706d19d7d58SLionel Sambuc   /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   */  \
1707d19d7d58SLionel Sambuc      0,        0,        0,        0,        0,        0,              \
1708d19d7d58SLionel Sambuc                                                                        \
1709d19d7d58SLionel Sambuc   /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */  \
1710d19d7d58SLionel Sambuc      0,   0,   0,    0,       0,               0,     0,               \
1711d19d7d58SLionel Sambuc                                                                        \
1712d19d7d58SLionel Sambuc   /* output_offset, output_section, alignment_power,               */  \
1713*c9ea9e7aSLionel Sambuc      0,             &SEC,           0,                                 \
1714d19d7d58SLionel Sambuc                                                                        \
1715d19d7d58SLionel Sambuc   /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
1716d19d7d58SLionel Sambuc      NULL,       NULL,        0,           0,       0,                 \
1717d19d7d58SLionel Sambuc                                                                        \
1718d19d7d58SLionel Sambuc   /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
1719d19d7d58SLionel Sambuc      0,            NULL,     NULL,     NULL,   0,                      \
1720d19d7d58SLionel Sambuc                                                                        \
1721d19d7d58SLionel Sambuc   /* entsize, kept_section, moving_line_filepos,                    */ \
1722d19d7d58SLionel Sambuc      0,       NULL,          0,                                        \
1723d19d7d58SLionel Sambuc                                                                        \
1724d19d7d58SLionel Sambuc   /* target_index, used_by_bfd, constructor_chain, owner,          */  \
1725d19d7d58SLionel Sambuc      0,            NULL,        NULL,              NULL,               \
1726d19d7d58SLionel Sambuc                                                                        \
1727d19d7d58SLionel Sambuc   /* symbol,                    symbol_ptr_ptr,                    */  \
1728d19d7d58SLionel Sambuc      (struct bfd_symbol *) SYM, &SEC.symbol,                           \
1729d19d7d58SLionel Sambuc                                                                        \
1730d19d7d58SLionel Sambuc   /* map_head, map_tail                                            */  \
1731d19d7d58SLionel Sambuc      { NULL }, { NULL }                                                \
1732d19d7d58SLionel Sambuc     }
1733d19d7d58SLionel Sambuc 
1734d19d7d58SLionel Sambuc void bfd_section_list_clear (bfd *);
1735d19d7d58SLionel Sambuc 
1736d19d7d58SLionel Sambuc asection *bfd_get_section_by_name (bfd *abfd, const char *name);
1737d19d7d58SLionel Sambuc 
1738*c9ea9e7aSLionel Sambuc asection *bfd_get_next_section_by_name (asection *sec);
1739*c9ea9e7aSLionel Sambuc 
1740*c9ea9e7aSLionel Sambuc asection *bfd_get_linker_section (bfd *abfd, const char *name);
1741*c9ea9e7aSLionel Sambuc 
1742d19d7d58SLionel Sambuc asection *bfd_get_section_by_name_if
1743d19d7d58SLionel Sambuc    (bfd *abfd,
1744d19d7d58SLionel Sambuc     const char *name,
1745d19d7d58SLionel Sambuc     bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
1746d19d7d58SLionel Sambuc     void *obj);
1747d19d7d58SLionel Sambuc 
1748d19d7d58SLionel Sambuc char *bfd_get_unique_section_name
1749d19d7d58SLionel Sambuc    (bfd *abfd, const char *templat, int *count);
1750d19d7d58SLionel Sambuc 
1751d19d7d58SLionel Sambuc asection *bfd_make_section_old_way (bfd *abfd, const char *name);
1752d19d7d58SLionel Sambuc 
1753d19d7d58SLionel Sambuc asection *bfd_make_section_anyway_with_flags
1754d19d7d58SLionel Sambuc    (bfd *abfd, const char *name, flagword flags);
1755d19d7d58SLionel Sambuc 
1756d19d7d58SLionel Sambuc asection *bfd_make_section_anyway (bfd *abfd, const char *name);
1757d19d7d58SLionel Sambuc 
1758d19d7d58SLionel Sambuc asection *bfd_make_section_with_flags
1759d19d7d58SLionel Sambuc    (bfd *, const char *name, flagword flags);
1760d19d7d58SLionel Sambuc 
1761d19d7d58SLionel Sambuc asection *bfd_make_section (bfd *, const char *name);
1762d19d7d58SLionel Sambuc 
1763d19d7d58SLionel Sambuc bfd_boolean bfd_set_section_flags
1764d19d7d58SLionel Sambuc    (bfd *abfd, asection *sec, flagword flags);
1765d19d7d58SLionel Sambuc 
1766d19d7d58SLionel Sambuc void bfd_rename_section
1767d19d7d58SLionel Sambuc    (bfd *abfd, asection *sec, const char *newname);
1768d19d7d58SLionel Sambuc 
1769d19d7d58SLionel Sambuc void bfd_map_over_sections
1770d19d7d58SLionel Sambuc    (bfd *abfd,
1771d19d7d58SLionel Sambuc     void (*func) (bfd *abfd, asection *sect, void *obj),
1772d19d7d58SLionel Sambuc     void *obj);
1773d19d7d58SLionel Sambuc 
1774d19d7d58SLionel Sambuc asection *bfd_sections_find_if
1775d19d7d58SLionel Sambuc    (bfd *abfd,
1776d19d7d58SLionel Sambuc     bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
1777d19d7d58SLionel Sambuc     void *obj);
1778d19d7d58SLionel Sambuc 
1779d19d7d58SLionel Sambuc bfd_boolean bfd_set_section_size
1780d19d7d58SLionel Sambuc    (bfd *abfd, asection *sec, bfd_size_type val);
1781d19d7d58SLionel Sambuc 
1782d19d7d58SLionel Sambuc bfd_boolean bfd_set_section_contents
1783d19d7d58SLionel Sambuc    (bfd *abfd, asection *section, const void *data,
1784d19d7d58SLionel Sambuc     file_ptr offset, bfd_size_type count);
1785d19d7d58SLionel Sambuc 
1786d19d7d58SLionel Sambuc bfd_boolean bfd_get_section_contents
1787d19d7d58SLionel Sambuc    (bfd *abfd, asection *section, void *location, file_ptr offset,
1788d19d7d58SLionel Sambuc     bfd_size_type count);
1789d19d7d58SLionel Sambuc 
1790d19d7d58SLionel Sambuc bfd_boolean bfd_malloc_and_get_section
1791d19d7d58SLionel Sambuc    (bfd *abfd, asection *section, bfd_byte **buf);
1792d19d7d58SLionel Sambuc 
1793d19d7d58SLionel Sambuc bfd_boolean bfd_copy_private_section_data
1794d19d7d58SLionel Sambuc    (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
1795d19d7d58SLionel Sambuc 
1796d19d7d58SLionel Sambuc #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
1797d19d7d58SLionel Sambuc      BFD_SEND (obfd, _bfd_copy_private_section_data, \
1798d19d7d58SLionel Sambuc                (ibfd, isection, obfd, osection))
1799d19d7d58SLionel Sambuc bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
1800d19d7d58SLionel Sambuc 
1801d19d7d58SLionel Sambuc bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
1802d19d7d58SLionel Sambuc 
1803d19d7d58SLionel Sambuc /* Extracted from archures.c.  */
1804d19d7d58SLionel Sambuc enum bfd_architecture
1805d19d7d58SLionel Sambuc {
1806d19d7d58SLionel Sambuc   bfd_arch_unknown,   /* File arch not known.  */
1807d19d7d58SLionel Sambuc   bfd_arch_obscure,   /* Arch known, not one of these.  */
1808d19d7d58SLionel Sambuc   bfd_arch_m68k,      /* Motorola 68xxx */
1809d19d7d58SLionel Sambuc #define bfd_mach_m68000 1
1810d19d7d58SLionel Sambuc #define bfd_mach_m68008 2
1811d19d7d58SLionel Sambuc #define bfd_mach_m68010 3
1812d19d7d58SLionel Sambuc #define bfd_mach_m68020 4
1813d19d7d58SLionel Sambuc #define bfd_mach_m68030 5
1814d19d7d58SLionel Sambuc #define bfd_mach_m68040 6
1815d19d7d58SLionel Sambuc #define bfd_mach_m68060 7
1816d19d7d58SLionel Sambuc #define bfd_mach_cpu32  8
1817d19d7d58SLionel Sambuc #define bfd_mach_fido   9
1818d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_a_nodiv 10
1819d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_a 11
1820d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_a_mac 12
1821d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_a_emac 13
1822d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_aplus 14
1823d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_aplus_mac 15
1824d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_aplus_emac 16
1825d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_b_nousp 17
1826d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_b_nousp_mac 18
1827d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_b_nousp_emac 19
1828d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_b 20
1829d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_b_mac 21
1830d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_b_emac 22
1831d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_b_float 23
1832d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_b_float_mac 24
1833d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_b_float_emac 25
1834d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_c 26
1835d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_c_mac 27
1836d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_c_emac 28
1837d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_c_nodiv 29
1838d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_c_nodiv_mac 30
1839d19d7d58SLionel Sambuc #define bfd_mach_mcf_isa_c_nodiv_emac 31
1840d19d7d58SLionel Sambuc   bfd_arch_vax,       /* DEC Vax */
1841d19d7d58SLionel Sambuc   bfd_arch_i960,      /* Intel 960 */
1842d19d7d58SLionel Sambuc     /* The order of the following is important.
1843d19d7d58SLionel Sambuc        lower number indicates a machine type that
1844d19d7d58SLionel Sambuc        only accepts a subset of the instructions
1845d19d7d58SLionel Sambuc        available to machines with higher numbers.
1846d19d7d58SLionel Sambuc        The exception is the "ca", which is
1847d19d7d58SLionel Sambuc        incompatible with all other machines except
1848d19d7d58SLionel Sambuc        "core".  */
1849d19d7d58SLionel Sambuc 
1850d19d7d58SLionel Sambuc #define bfd_mach_i960_core      1
1851d19d7d58SLionel Sambuc #define bfd_mach_i960_ka_sa     2
1852d19d7d58SLionel Sambuc #define bfd_mach_i960_kb_sb     3
1853d19d7d58SLionel Sambuc #define bfd_mach_i960_mc        4
1854d19d7d58SLionel Sambuc #define bfd_mach_i960_xa        5
1855d19d7d58SLionel Sambuc #define bfd_mach_i960_ca        6
1856d19d7d58SLionel Sambuc #define bfd_mach_i960_jx        7
1857d19d7d58SLionel Sambuc #define bfd_mach_i960_hx        8
1858d19d7d58SLionel Sambuc 
1859d19d7d58SLionel Sambuc   bfd_arch_or32,      /* OpenRISC 32 */
1860d19d7d58SLionel Sambuc 
1861d19d7d58SLionel Sambuc   bfd_arch_sparc,     /* SPARC */
1862d19d7d58SLionel Sambuc #define bfd_mach_sparc                 1
1863d19d7d58SLionel Sambuc /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
1864d19d7d58SLionel Sambuc #define bfd_mach_sparc_sparclet        2
1865d19d7d58SLionel Sambuc #define bfd_mach_sparc_sparclite       3
1866d19d7d58SLionel Sambuc #define bfd_mach_sparc_v8plus          4
1867d19d7d58SLionel Sambuc #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
1868d19d7d58SLionel Sambuc #define bfd_mach_sparc_sparclite_le    6
1869d19d7d58SLionel Sambuc #define bfd_mach_sparc_v9              7
1870d19d7d58SLionel Sambuc #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
1871d19d7d58SLionel Sambuc #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
1872d19d7d58SLionel Sambuc #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
1873d19d7d58SLionel Sambuc /* Nonzero if MACH has the v9 instruction set.  */
1874d19d7d58SLionel Sambuc #define bfd_mach_sparc_v9_p(mach) \
1875d19d7d58SLionel Sambuc   ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
1876d19d7d58SLionel Sambuc    && (mach) != bfd_mach_sparc_sparclite_le)
1877d19d7d58SLionel Sambuc /* Nonzero if MACH is a 64 bit sparc architecture.  */
1878d19d7d58SLionel Sambuc #define bfd_mach_sparc_64bit_p(mach) \
1879d19d7d58SLionel Sambuc   ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
1880d19d7d58SLionel Sambuc   bfd_arch_spu,       /* PowerPC SPU */
1881d19d7d58SLionel Sambuc #define bfd_mach_spu           256
1882d19d7d58SLionel Sambuc   bfd_arch_mips,      /* MIPS Rxxxx */
1883d19d7d58SLionel Sambuc #define bfd_mach_mips3000              3000
1884d19d7d58SLionel Sambuc #define bfd_mach_mips3900              3900
1885d19d7d58SLionel Sambuc #define bfd_mach_mips4000              4000
1886d19d7d58SLionel Sambuc #define bfd_mach_mips4010              4010
1887d19d7d58SLionel Sambuc #define bfd_mach_mips4100              4100
1888d19d7d58SLionel Sambuc #define bfd_mach_mips4111              4111
1889d19d7d58SLionel Sambuc #define bfd_mach_mips4120              4120
1890d19d7d58SLionel Sambuc #define bfd_mach_mips4300              4300
1891d19d7d58SLionel Sambuc #define bfd_mach_mips4400              4400
1892d19d7d58SLionel Sambuc #define bfd_mach_mips4600              4600
1893d19d7d58SLionel Sambuc #define bfd_mach_mips4650              4650
1894d19d7d58SLionel Sambuc #define bfd_mach_mips5000              5000
1895d19d7d58SLionel Sambuc #define bfd_mach_mips5400              5400
1896d19d7d58SLionel Sambuc #define bfd_mach_mips5500              5500
1897d19d7d58SLionel Sambuc #define bfd_mach_mips6000              6000
1898d19d7d58SLionel Sambuc #define bfd_mach_mips7000              7000
1899d19d7d58SLionel Sambuc #define bfd_mach_mips8000              8000
1900d19d7d58SLionel Sambuc #define bfd_mach_mips9000              9000
1901d19d7d58SLionel Sambuc #define bfd_mach_mips10000             10000
1902d19d7d58SLionel Sambuc #define bfd_mach_mips12000             12000
1903d19d7d58SLionel Sambuc #define bfd_mach_mips14000             14000
1904d19d7d58SLionel Sambuc #define bfd_mach_mips16000             16000
1905d19d7d58SLionel Sambuc #define bfd_mach_mips16                16
1906d19d7d58SLionel Sambuc #define bfd_mach_mips5                 5
1907d19d7d58SLionel Sambuc #define bfd_mach_mips_loongson_2e      3001
1908d19d7d58SLionel Sambuc #define bfd_mach_mips_loongson_2f      3002
1909c566d462SLionel Sambuc #define bfd_mach_mips_loongson_3a      3003
1910d19d7d58SLionel Sambuc #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
1911d19d7d58SLionel Sambuc #define bfd_mach_mips_octeon           6501
1912*c9ea9e7aSLionel Sambuc #define bfd_mach_mips_octeonp          6601
1913*c9ea9e7aSLionel Sambuc #define bfd_mach_mips_octeon2          6502
1914d19d7d58SLionel Sambuc #define bfd_mach_mips_xlr              887682   /* decimal 'XLR'  */
1915d19d7d58SLionel Sambuc #define bfd_mach_mipsisa32             32
1916d19d7d58SLionel Sambuc #define bfd_mach_mipsisa32r2           33
1917d19d7d58SLionel Sambuc #define bfd_mach_mipsisa64             64
1918d19d7d58SLionel Sambuc #define bfd_mach_mipsisa64r2           65
1919c566d462SLionel Sambuc #define bfd_mach_mips_micromips        96
1920d19d7d58SLionel Sambuc   bfd_arch_i386,      /* Intel 386 */
1921c566d462SLionel Sambuc #define bfd_mach_i386_intel_syntax     (1 << 0)
1922c566d462SLionel Sambuc #define bfd_mach_i386_i8086            (1 << 1)
1923c566d462SLionel Sambuc #define bfd_mach_i386_i386             (1 << 2)
1924c566d462SLionel Sambuc #define bfd_mach_x86_64                (1 << 3)
1925c566d462SLionel Sambuc #define bfd_mach_x64_32                (1 << 4)
1926c566d462SLionel Sambuc #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
1927c566d462SLionel Sambuc #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
1928c566d462SLionel Sambuc #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
1929d19d7d58SLionel Sambuc   bfd_arch_l1om,   /* Intel L1OM */
1930c566d462SLionel Sambuc #define bfd_mach_l1om                  (1 << 5)
1931c566d462SLionel Sambuc #define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
1932c566d462SLionel Sambuc   bfd_arch_k1om,   /* Intel K1OM */
1933c566d462SLionel Sambuc #define bfd_mach_k1om                  (1 << 6)
1934c566d462SLionel Sambuc #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
1935d19d7d58SLionel Sambuc   bfd_arch_we32k,     /* AT&T WE32xxx */
1936d19d7d58SLionel Sambuc   bfd_arch_tahoe,     /* CCI/Harris Tahoe */
1937d19d7d58SLionel Sambuc   bfd_arch_i860,      /* Intel 860 */
1938d19d7d58SLionel Sambuc   bfd_arch_i370,      /* IBM 360/370 Mainframes */
1939d19d7d58SLionel Sambuc   bfd_arch_romp,      /* IBM ROMP PC/RT */
1940d19d7d58SLionel Sambuc   bfd_arch_convex,    /* Convex */
1941d19d7d58SLionel Sambuc   bfd_arch_m88k,      /* Motorola 88xxx */
1942d19d7d58SLionel Sambuc   bfd_arch_m98k,      /* Motorola 98xxx */
1943d19d7d58SLionel Sambuc   bfd_arch_pyramid,   /* Pyramid Technology */
1944d19d7d58SLionel Sambuc   bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
1945d19d7d58SLionel Sambuc #define bfd_mach_h8300    1
1946d19d7d58SLionel Sambuc #define bfd_mach_h8300h   2
1947d19d7d58SLionel Sambuc #define bfd_mach_h8300s   3
1948d19d7d58SLionel Sambuc #define bfd_mach_h8300hn  4
1949d19d7d58SLionel Sambuc #define bfd_mach_h8300sn  5
1950d19d7d58SLionel Sambuc #define bfd_mach_h8300sx  6
1951d19d7d58SLionel Sambuc #define bfd_mach_h8300sxn 7
1952d19d7d58SLionel Sambuc   bfd_arch_pdp11,     /* DEC PDP-11 */
1953d19d7d58SLionel Sambuc   bfd_arch_plugin,
1954d19d7d58SLionel Sambuc   bfd_arch_powerpc,   /* PowerPC */
1955d19d7d58SLionel Sambuc #define bfd_mach_ppc           32
1956d19d7d58SLionel Sambuc #define bfd_mach_ppc64         64
1957d19d7d58SLionel Sambuc #define bfd_mach_ppc_403       403
1958d19d7d58SLionel Sambuc #define bfd_mach_ppc_403gc     4030
1959d19d7d58SLionel Sambuc #define bfd_mach_ppc_405       405
1960d19d7d58SLionel Sambuc #define bfd_mach_ppc_505       505
1961d19d7d58SLionel Sambuc #define bfd_mach_ppc_601       601
1962d19d7d58SLionel Sambuc #define bfd_mach_ppc_602       602
1963d19d7d58SLionel Sambuc #define bfd_mach_ppc_603       603
1964d19d7d58SLionel Sambuc #define bfd_mach_ppc_ec603e    6031
1965d19d7d58SLionel Sambuc #define bfd_mach_ppc_604       604
1966d19d7d58SLionel Sambuc #define bfd_mach_ppc_620       620
1967d19d7d58SLionel Sambuc #define bfd_mach_ppc_630       630
1968d19d7d58SLionel Sambuc #define bfd_mach_ppc_750       750
1969d19d7d58SLionel Sambuc #define bfd_mach_ppc_860       860
1970d19d7d58SLionel Sambuc #define bfd_mach_ppc_a35       35
1971d19d7d58SLionel Sambuc #define bfd_mach_ppc_rs64ii    642
1972d19d7d58SLionel Sambuc #define bfd_mach_ppc_rs64iii   643
1973d19d7d58SLionel Sambuc #define bfd_mach_ppc_7400      7400
1974d19d7d58SLionel Sambuc #define bfd_mach_ppc_e500      500
1975d19d7d58SLionel Sambuc #define bfd_mach_ppc_e500mc    5001
1976d19d7d58SLionel Sambuc #define bfd_mach_ppc_e500mc64  5005
1977*c9ea9e7aSLionel Sambuc #define bfd_mach_ppc_e5500     5006
1978*c9ea9e7aSLionel Sambuc #define bfd_mach_ppc_e6500     5007
1979d19d7d58SLionel Sambuc #define bfd_mach_ppc_titan     83
1980*c9ea9e7aSLionel Sambuc #define bfd_mach_ppc_vle       84
1981d19d7d58SLionel Sambuc   bfd_arch_rs6000,    /* IBM RS/6000 */
1982d19d7d58SLionel Sambuc #define bfd_mach_rs6k          6000
1983d19d7d58SLionel Sambuc #define bfd_mach_rs6k_rs1      6001
1984d19d7d58SLionel Sambuc #define bfd_mach_rs6k_rsc      6003
1985d19d7d58SLionel Sambuc #define bfd_mach_rs6k_rs2      6002
1986d19d7d58SLionel Sambuc   bfd_arch_hppa,      /* HP PA RISC */
1987d19d7d58SLionel Sambuc #define bfd_mach_hppa10        10
1988d19d7d58SLionel Sambuc #define bfd_mach_hppa11        11
1989d19d7d58SLionel Sambuc #define bfd_mach_hppa20        20
1990d19d7d58SLionel Sambuc #define bfd_mach_hppa20w       25
1991d19d7d58SLionel Sambuc   bfd_arch_d10v,      /* Mitsubishi D10V */
1992d19d7d58SLionel Sambuc #define bfd_mach_d10v          1
1993d19d7d58SLionel Sambuc #define bfd_mach_d10v_ts2      2
1994d19d7d58SLionel Sambuc #define bfd_mach_d10v_ts3      3
1995d19d7d58SLionel Sambuc   bfd_arch_d30v,      /* Mitsubishi D30V */
1996d19d7d58SLionel Sambuc   bfd_arch_dlx,       /* DLX */
1997d19d7d58SLionel Sambuc   bfd_arch_m68hc11,   /* Motorola 68HC11 */
1998d19d7d58SLionel Sambuc   bfd_arch_m68hc12,   /* Motorola 68HC12 */
1999d19d7d58SLionel Sambuc #define bfd_mach_m6812_default 0
2000d19d7d58SLionel Sambuc #define bfd_mach_m6812         1
2001d19d7d58SLionel Sambuc #define bfd_mach_m6812s        2
2002*c9ea9e7aSLionel Sambuc   bfd_arch_m9s12x,   /* Freescale S12X */
2003*c9ea9e7aSLionel Sambuc   bfd_arch_m9s12xg,  /* Freescale XGATE */
2004d19d7d58SLionel Sambuc   bfd_arch_z8k,       /* Zilog Z8000 */
2005d19d7d58SLionel Sambuc #define bfd_mach_z8001         1
2006d19d7d58SLionel Sambuc #define bfd_mach_z8002         2
2007d19d7d58SLionel Sambuc   bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
2008d19d7d58SLionel Sambuc   bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
2009d19d7d58SLionel Sambuc #define bfd_mach_sh            1
2010d19d7d58SLionel Sambuc #define bfd_mach_sh2        0x20
2011d19d7d58SLionel Sambuc #define bfd_mach_sh_dsp     0x2d
2012d19d7d58SLionel Sambuc #define bfd_mach_sh2a       0x2a
2013d19d7d58SLionel Sambuc #define bfd_mach_sh2a_nofpu 0x2b
2014d19d7d58SLionel Sambuc #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
2015d19d7d58SLionel Sambuc #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
2016d19d7d58SLionel Sambuc #define bfd_mach_sh2a_or_sh4  0x2a3
2017d19d7d58SLionel Sambuc #define bfd_mach_sh2a_or_sh3e 0x2a4
2018d19d7d58SLionel Sambuc #define bfd_mach_sh2e       0x2e
2019d19d7d58SLionel Sambuc #define bfd_mach_sh3        0x30
2020d19d7d58SLionel Sambuc #define bfd_mach_sh3_nommu  0x31
2021d19d7d58SLionel Sambuc #define bfd_mach_sh3_dsp    0x3d
2022d19d7d58SLionel Sambuc #define bfd_mach_sh3e       0x3e
2023d19d7d58SLionel Sambuc #define bfd_mach_sh4        0x40
2024d19d7d58SLionel Sambuc #define bfd_mach_sh4_nofpu  0x41
2025d19d7d58SLionel Sambuc #define bfd_mach_sh4_nommu_nofpu  0x42
2026d19d7d58SLionel Sambuc #define bfd_mach_sh4a       0x4a
2027d19d7d58SLionel Sambuc #define bfd_mach_sh4a_nofpu 0x4b
2028d19d7d58SLionel Sambuc #define bfd_mach_sh4al_dsp  0x4d
2029d19d7d58SLionel Sambuc #define bfd_mach_sh5        0x50
2030d19d7d58SLionel Sambuc   bfd_arch_alpha,     /* Dec Alpha */
2031d19d7d58SLionel Sambuc #define bfd_mach_alpha_ev4  0x10
2032d19d7d58SLionel Sambuc #define bfd_mach_alpha_ev5  0x20
2033d19d7d58SLionel Sambuc #define bfd_mach_alpha_ev6  0x30
2034d19d7d58SLionel Sambuc   bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
2035d19d7d58SLionel Sambuc #define bfd_mach_arm_unknown   0
2036d19d7d58SLionel Sambuc #define bfd_mach_arm_2         1
2037d19d7d58SLionel Sambuc #define bfd_mach_arm_2a        2
2038d19d7d58SLionel Sambuc #define bfd_mach_arm_3         3
2039d19d7d58SLionel Sambuc #define bfd_mach_arm_3M        4
2040d19d7d58SLionel Sambuc #define bfd_mach_arm_4         5
2041d19d7d58SLionel Sambuc #define bfd_mach_arm_4T        6
2042d19d7d58SLionel Sambuc #define bfd_mach_arm_5         7
2043d19d7d58SLionel Sambuc #define bfd_mach_arm_5T        8
2044d19d7d58SLionel Sambuc #define bfd_mach_arm_5TE       9
2045d19d7d58SLionel Sambuc #define bfd_mach_arm_XScale    10
2046d19d7d58SLionel Sambuc #define bfd_mach_arm_ep9312    11
2047d19d7d58SLionel Sambuc #define bfd_mach_arm_iWMMXt    12
2048d19d7d58SLionel Sambuc #define bfd_mach_arm_iWMMXt2   13
2049d19d7d58SLionel Sambuc   bfd_arch_ns32k,     /* National Semiconductors ns32000 */
2050d19d7d58SLionel Sambuc   bfd_arch_w65,       /* WDC 65816 */
2051d19d7d58SLionel Sambuc   bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
2052d19d7d58SLionel Sambuc   bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
2053d19d7d58SLionel Sambuc #define bfd_mach_tic3x         30
2054d19d7d58SLionel Sambuc #define bfd_mach_tic4x         40
2055d19d7d58SLionel Sambuc   bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
2056d19d7d58SLionel Sambuc   bfd_arch_tic6x,     /* Texas Instruments TMS320C6X */
2057d19d7d58SLionel Sambuc   bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
2058d19d7d58SLionel Sambuc   bfd_arch_v850,      /* NEC V850 */
2059d19d7d58SLionel Sambuc #define bfd_mach_v850          1
2060d19d7d58SLionel Sambuc #define bfd_mach_v850e         'E'
2061d19d7d58SLionel Sambuc #define bfd_mach_v850e1        '1'
2062d19d7d58SLionel Sambuc #define bfd_mach_v850e2        0x4532
2063d19d7d58SLionel Sambuc #define bfd_mach_v850e2v3      0x45325633
2064d19d7d58SLionel Sambuc   bfd_arch_arc,       /* ARC Cores */
2065d19d7d58SLionel Sambuc #define bfd_mach_arc_5         5
2066d19d7d58SLionel Sambuc #define bfd_mach_arc_6         6
2067d19d7d58SLionel Sambuc #define bfd_mach_arc_7         7
2068d19d7d58SLionel Sambuc #define bfd_mach_arc_8         8
2069d19d7d58SLionel Sambuc  bfd_arch_m32c,     /* Renesas M16C/M32C.  */
2070d19d7d58SLionel Sambuc #define bfd_mach_m16c        0x75
2071d19d7d58SLionel Sambuc #define bfd_mach_m32c        0x78
2072d19d7d58SLionel Sambuc   bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
2073d19d7d58SLionel Sambuc #define bfd_mach_m32r          1 /* For backwards compatibility.  */
2074d19d7d58SLionel Sambuc #define bfd_mach_m32rx         'x'
2075d19d7d58SLionel Sambuc #define bfd_mach_m32r2         '2'
2076d19d7d58SLionel Sambuc   bfd_arch_mn10200,   /* Matsushita MN10200 */
2077d19d7d58SLionel Sambuc   bfd_arch_mn10300,   /* Matsushita MN10300 */
2078d19d7d58SLionel Sambuc #define bfd_mach_mn10300               300
2079d19d7d58SLionel Sambuc #define bfd_mach_am33          330
2080d19d7d58SLionel Sambuc #define bfd_mach_am33_2        332
2081d19d7d58SLionel Sambuc   bfd_arch_fr30,
2082d19d7d58SLionel Sambuc #define bfd_mach_fr30          0x46523330
2083d19d7d58SLionel Sambuc   bfd_arch_frv,
2084d19d7d58SLionel Sambuc #define bfd_mach_frv           1
2085d19d7d58SLionel Sambuc #define bfd_mach_frvsimple     2
2086d19d7d58SLionel Sambuc #define bfd_mach_fr300         300
2087d19d7d58SLionel Sambuc #define bfd_mach_fr400         400
2088d19d7d58SLionel Sambuc #define bfd_mach_fr450         450
2089d19d7d58SLionel Sambuc #define bfd_mach_frvtomcat     499     /* fr500 prototype */
2090d19d7d58SLionel Sambuc #define bfd_mach_fr500         500
2091d19d7d58SLionel Sambuc #define bfd_mach_fr550         550
2092d19d7d58SLionel Sambuc   bfd_arch_moxie,       /* The moxie processor */
2093d19d7d58SLionel Sambuc #define bfd_mach_moxie         1
2094d19d7d58SLionel Sambuc   bfd_arch_mcore,
2095d19d7d58SLionel Sambuc   bfd_arch_mep,
2096d19d7d58SLionel Sambuc #define bfd_mach_mep           1
2097d19d7d58SLionel Sambuc #define bfd_mach_mep_h1        0x6831
2098d19d7d58SLionel Sambuc #define bfd_mach_mep_c5        0x6335
2099d19d7d58SLionel Sambuc   bfd_arch_ia64,      /* HP/Intel ia64 */
2100d19d7d58SLionel Sambuc #define bfd_mach_ia64_elf64    64
2101d19d7d58SLionel Sambuc #define bfd_mach_ia64_elf32    32
2102d19d7d58SLionel Sambuc   bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
2103d19d7d58SLionel Sambuc #define bfd_mach_ip2022        1
2104d19d7d58SLionel Sambuc #define bfd_mach_ip2022ext     2
2105d19d7d58SLionel Sambuc  bfd_arch_iq2000,     /* Vitesse IQ2000.  */
2106d19d7d58SLionel Sambuc #define bfd_mach_iq2000        1
2107d19d7d58SLionel Sambuc #define bfd_mach_iq10          2
2108*c9ea9e7aSLionel Sambuc   bfd_arch_epiphany,   /* Adapteva EPIPHANY */
2109*c9ea9e7aSLionel Sambuc #define bfd_mach_epiphany16    1
2110*c9ea9e7aSLionel Sambuc #define bfd_mach_epiphany32    2
2111d19d7d58SLionel Sambuc   bfd_arch_mt,
2112d19d7d58SLionel Sambuc #define bfd_mach_ms1           1
2113d19d7d58SLionel Sambuc #define bfd_mach_mrisc2        2
2114d19d7d58SLionel Sambuc #define bfd_mach_ms2           3
2115d19d7d58SLionel Sambuc   bfd_arch_pj,
2116d19d7d58SLionel Sambuc   bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
2117d19d7d58SLionel Sambuc #define bfd_mach_avr1          1
2118d19d7d58SLionel Sambuc #define bfd_mach_avr2          2
2119d19d7d58SLionel Sambuc #define bfd_mach_avr25         25
2120d19d7d58SLionel Sambuc #define bfd_mach_avr3          3
2121d19d7d58SLionel Sambuc #define bfd_mach_avr31         31
2122d19d7d58SLionel Sambuc #define bfd_mach_avr35         35
2123d19d7d58SLionel Sambuc #define bfd_mach_avr4          4
2124d19d7d58SLionel Sambuc #define bfd_mach_avr5          5
2125d19d7d58SLionel Sambuc #define bfd_mach_avr51         51
2126d19d7d58SLionel Sambuc #define bfd_mach_avr6          6
2127c566d462SLionel Sambuc #define bfd_mach_avrxmega1 101
2128c566d462SLionel Sambuc #define bfd_mach_avrxmega2 102
2129c566d462SLionel Sambuc #define bfd_mach_avrxmega3 103
2130c566d462SLionel Sambuc #define bfd_mach_avrxmega4 104
2131c566d462SLionel Sambuc #define bfd_mach_avrxmega5 105
2132c566d462SLionel Sambuc #define bfd_mach_avrxmega6 106
2133c566d462SLionel Sambuc #define bfd_mach_avrxmega7 107
2134d19d7d58SLionel Sambuc   bfd_arch_bfin,        /* ADI Blackfin */
2135d19d7d58SLionel Sambuc #define bfd_mach_bfin          1
2136d19d7d58SLionel Sambuc   bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
2137d19d7d58SLionel Sambuc #define bfd_mach_cr16          1
2138d19d7d58SLionel Sambuc   bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
2139d19d7d58SLionel Sambuc #define bfd_mach_cr16c         1
2140d19d7d58SLionel Sambuc   bfd_arch_crx,       /*  National Semiconductor CRX.  */
2141d19d7d58SLionel Sambuc #define bfd_mach_crx           1
2142d19d7d58SLionel Sambuc   bfd_arch_cris,      /* Axis CRIS */
2143d19d7d58SLionel Sambuc #define bfd_mach_cris_v0_v10   255
2144d19d7d58SLionel Sambuc #define bfd_mach_cris_v32      32
2145d19d7d58SLionel Sambuc #define bfd_mach_cris_v10_v32  1032
2146*c9ea9e7aSLionel Sambuc   bfd_arch_rl78,
2147*c9ea9e7aSLionel Sambuc #define bfd_mach_rl78  0x75
2148d19d7d58SLionel Sambuc   bfd_arch_rx,        /* Renesas RX.  */
2149d19d7d58SLionel Sambuc #define bfd_mach_rx            0x75
2150d19d7d58SLionel Sambuc   bfd_arch_s390,      /* IBM s390 */
2151d19d7d58SLionel Sambuc #define bfd_mach_s390_31       31
2152d19d7d58SLionel Sambuc #define bfd_mach_s390_64       64
2153d19d7d58SLionel Sambuc   bfd_arch_score,     /* Sunplus score */
2154d19d7d58SLionel Sambuc #define bfd_mach_score3         3
2155d19d7d58SLionel Sambuc #define bfd_mach_score7         7
2156d19d7d58SLionel Sambuc   bfd_arch_openrisc,  /* OpenRISC */
2157d19d7d58SLionel Sambuc   bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
2158d19d7d58SLionel Sambuc   bfd_arch_xstormy16,
2159d19d7d58SLionel Sambuc #define bfd_mach_xstormy16     1
2160d19d7d58SLionel Sambuc   bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
2161d19d7d58SLionel Sambuc #define bfd_mach_msp11          11
2162d19d7d58SLionel Sambuc #define bfd_mach_msp110         110
2163d19d7d58SLionel Sambuc #define bfd_mach_msp12          12
2164d19d7d58SLionel Sambuc #define bfd_mach_msp13          13
2165d19d7d58SLionel Sambuc #define bfd_mach_msp14          14
2166d19d7d58SLionel Sambuc #define bfd_mach_msp15          15
2167d19d7d58SLionel Sambuc #define bfd_mach_msp16          16
2168d19d7d58SLionel Sambuc #define bfd_mach_msp21          21
2169d19d7d58SLionel Sambuc #define bfd_mach_msp31          31
2170d19d7d58SLionel Sambuc #define bfd_mach_msp32          32
2171d19d7d58SLionel Sambuc #define bfd_mach_msp33          33
2172d19d7d58SLionel Sambuc #define bfd_mach_msp41          41
2173d19d7d58SLionel Sambuc #define bfd_mach_msp42          42
2174d19d7d58SLionel Sambuc #define bfd_mach_msp43          43
2175d19d7d58SLionel Sambuc #define bfd_mach_msp44          44
2176d19d7d58SLionel Sambuc   bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
2177d19d7d58SLionel Sambuc #define bfd_mach_xc16x         1
2178d19d7d58SLionel Sambuc #define bfd_mach_xc16xl        2
2179d19d7d58SLionel Sambuc #define bfd_mach_xc16xs        3
2180*c9ea9e7aSLionel Sambuc   bfd_arch_xgate,   /* Freescale XGATE */
2181*c9ea9e7aSLionel Sambuc #define bfd_mach_xgate         1
2182d19d7d58SLionel Sambuc   bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
2183d19d7d58SLionel Sambuc #define bfd_mach_xtensa        1
2184d19d7d58SLionel Sambuc   bfd_arch_z80,
2185d19d7d58SLionel Sambuc #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
2186d19d7d58SLionel Sambuc #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
2187d19d7d58SLionel Sambuc #define bfd_mach_z80full        7 /* All undocumented instructions.  */
2188d19d7d58SLionel Sambuc #define bfd_mach_r800           11 /* R800: successor with multiplication.  */
2189d19d7d58SLionel Sambuc   bfd_arch_lm32,      /* Lattice Mico32 */
2190d19d7d58SLionel Sambuc #define bfd_mach_lm32      1
2191d19d7d58SLionel Sambuc   bfd_arch_microblaze,/* Xilinx MicroBlaze. */
2192c566d462SLionel Sambuc   bfd_arch_tilepro,   /* Tilera TILEPro */
2193c566d462SLionel Sambuc   bfd_arch_tilegx, /* Tilera TILE-Gx */
2194c566d462SLionel Sambuc #define bfd_mach_tilepro   1
2195c566d462SLionel Sambuc #define bfd_mach_tilegx    1
2196*c9ea9e7aSLionel Sambuc #define bfd_mach_tilegx32  2
2197*c9ea9e7aSLionel Sambuc   bfd_arch_aarch64,   /* AArch64  */
2198*c9ea9e7aSLionel Sambuc #define bfd_mach_aarch64 0
2199d19d7d58SLionel Sambuc   bfd_arch_last
2200d19d7d58SLionel Sambuc   };
2201d19d7d58SLionel Sambuc 
2202d19d7d58SLionel Sambuc typedef struct bfd_arch_info
2203d19d7d58SLionel Sambuc {
2204d19d7d58SLionel Sambuc   int bits_per_word;
2205d19d7d58SLionel Sambuc   int bits_per_address;
2206d19d7d58SLionel Sambuc   int bits_per_byte;
2207d19d7d58SLionel Sambuc   enum bfd_architecture arch;
2208d19d7d58SLionel Sambuc   unsigned long mach;
2209d19d7d58SLionel Sambuc   const char *arch_name;
2210d19d7d58SLionel Sambuc   const char *printable_name;
2211d19d7d58SLionel Sambuc   unsigned int section_align_power;
2212d19d7d58SLionel Sambuc   /* TRUE if this is the default machine for the architecture.
2213d19d7d58SLionel Sambuc      The default arch should be the first entry for an arch so that
2214d19d7d58SLionel Sambuc      all the entries for that arch can be accessed via <<next>>.  */
2215d19d7d58SLionel Sambuc   bfd_boolean the_default;
2216d19d7d58SLionel Sambuc   const struct bfd_arch_info * (*compatible)
2217d19d7d58SLionel Sambuc     (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
2218d19d7d58SLionel Sambuc 
2219d19d7d58SLionel Sambuc   bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
2220d19d7d58SLionel Sambuc 
2221*c9ea9e7aSLionel Sambuc   /* Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
2222*c9ea9e7aSLionel Sambuc      IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
2223*c9ea9e7aSLionel Sambuc      TRUE, the buffer contains code.  */
2224*c9ea9e7aSLionel Sambuc   void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
2225*c9ea9e7aSLionel Sambuc                  bfd_boolean code);
2226*c9ea9e7aSLionel Sambuc 
2227d19d7d58SLionel Sambuc   const struct bfd_arch_info *next;
2228d19d7d58SLionel Sambuc }
2229d19d7d58SLionel Sambuc bfd_arch_info_type;
2230d19d7d58SLionel Sambuc 
2231d19d7d58SLionel Sambuc const char *bfd_printable_name (bfd *abfd);
2232d19d7d58SLionel Sambuc 
2233d19d7d58SLionel Sambuc const bfd_arch_info_type *bfd_scan_arch (const char *string);
2234d19d7d58SLionel Sambuc 
2235d19d7d58SLionel Sambuc const char **bfd_arch_list (void);
2236d19d7d58SLionel Sambuc 
2237d19d7d58SLionel Sambuc const bfd_arch_info_type *bfd_arch_get_compatible
2238d19d7d58SLionel Sambuc    (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
2239d19d7d58SLionel Sambuc 
2240d19d7d58SLionel Sambuc void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
2241d19d7d58SLionel Sambuc 
2242d19d7d58SLionel Sambuc enum bfd_architecture bfd_get_arch (bfd *abfd);
2243d19d7d58SLionel Sambuc 
2244d19d7d58SLionel Sambuc unsigned long bfd_get_mach (bfd *abfd);
2245d19d7d58SLionel Sambuc 
2246d19d7d58SLionel Sambuc unsigned int bfd_arch_bits_per_byte (bfd *abfd);
2247d19d7d58SLionel Sambuc 
2248d19d7d58SLionel Sambuc unsigned int bfd_arch_bits_per_address (bfd *abfd);
2249d19d7d58SLionel Sambuc 
2250d19d7d58SLionel Sambuc const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
2251d19d7d58SLionel Sambuc 
2252d19d7d58SLionel Sambuc const bfd_arch_info_type *bfd_lookup_arch
2253d19d7d58SLionel Sambuc    (enum bfd_architecture arch, unsigned long machine);
2254d19d7d58SLionel Sambuc 
2255d19d7d58SLionel Sambuc const char *bfd_printable_arch_mach
2256d19d7d58SLionel Sambuc    (enum bfd_architecture arch, unsigned long machine);
2257d19d7d58SLionel Sambuc 
2258d19d7d58SLionel Sambuc unsigned int bfd_octets_per_byte (bfd *abfd);
2259d19d7d58SLionel Sambuc 
2260d19d7d58SLionel Sambuc unsigned int bfd_arch_mach_octets_per_byte
2261d19d7d58SLionel Sambuc    (enum bfd_architecture arch, unsigned long machine);
2262d19d7d58SLionel Sambuc 
2263d19d7d58SLionel Sambuc /* Extracted from reloc.c.  */
2264d19d7d58SLionel Sambuc typedef enum bfd_reloc_status
2265d19d7d58SLionel Sambuc {
2266d19d7d58SLionel Sambuc   /* No errors detected.  */
2267d19d7d58SLionel Sambuc   bfd_reloc_ok,
2268d19d7d58SLionel Sambuc 
2269d19d7d58SLionel Sambuc   /* The relocation was performed, but there was an overflow.  */
2270d19d7d58SLionel Sambuc   bfd_reloc_overflow,
2271d19d7d58SLionel Sambuc 
2272d19d7d58SLionel Sambuc   /* The address to relocate was not within the section supplied.  */
2273d19d7d58SLionel Sambuc   bfd_reloc_outofrange,
2274d19d7d58SLionel Sambuc 
2275d19d7d58SLionel Sambuc   /* Used by special functions.  */
2276d19d7d58SLionel Sambuc   bfd_reloc_continue,
2277d19d7d58SLionel Sambuc 
2278d19d7d58SLionel Sambuc   /* Unsupported relocation size requested.  */
2279d19d7d58SLionel Sambuc   bfd_reloc_notsupported,
2280d19d7d58SLionel Sambuc 
2281d19d7d58SLionel Sambuc   /* Unused.  */
2282d19d7d58SLionel Sambuc   bfd_reloc_other,
2283d19d7d58SLionel Sambuc 
2284d19d7d58SLionel Sambuc   /* The symbol to relocate against was undefined.  */
2285d19d7d58SLionel Sambuc   bfd_reloc_undefined,
2286d19d7d58SLionel Sambuc 
2287d19d7d58SLionel Sambuc   /* The relocation was performed, but may not be ok - presently
2288d19d7d58SLionel Sambuc      generated only when linking i960 coff files with i960 b.out
2289d19d7d58SLionel Sambuc      symbols.  If this type is returned, the error_message argument
2290d19d7d58SLionel Sambuc      to bfd_perform_relocation will be set.  */
2291d19d7d58SLionel Sambuc   bfd_reloc_dangerous
2292d19d7d58SLionel Sambuc  }
2293d19d7d58SLionel Sambuc  bfd_reloc_status_type;
2294d19d7d58SLionel Sambuc 
2295d19d7d58SLionel Sambuc 
2296d19d7d58SLionel Sambuc typedef struct reloc_cache_entry
2297d19d7d58SLionel Sambuc {
2298d19d7d58SLionel Sambuc   /* A pointer into the canonical table of pointers.  */
2299d19d7d58SLionel Sambuc   struct bfd_symbol **sym_ptr_ptr;
2300d19d7d58SLionel Sambuc 
2301d19d7d58SLionel Sambuc   /* offset in section.  */
2302d19d7d58SLionel Sambuc   bfd_size_type address;
2303d19d7d58SLionel Sambuc 
2304d19d7d58SLionel Sambuc   /* addend for relocation value.  */
2305d19d7d58SLionel Sambuc   bfd_vma addend;
2306d19d7d58SLionel Sambuc 
2307d19d7d58SLionel Sambuc   /* Pointer to how to perform the required relocation.  */
2308d19d7d58SLionel Sambuc   reloc_howto_type *howto;
2309d19d7d58SLionel Sambuc 
2310d19d7d58SLionel Sambuc }
2311d19d7d58SLionel Sambuc arelent;
2312d19d7d58SLionel Sambuc 
2313d19d7d58SLionel Sambuc enum complain_overflow
2314d19d7d58SLionel Sambuc {
2315d19d7d58SLionel Sambuc   /* Do not complain on overflow.  */
2316d19d7d58SLionel Sambuc   complain_overflow_dont,
2317d19d7d58SLionel Sambuc 
2318d19d7d58SLionel Sambuc   /* Complain if the value overflows when considered as a signed
2319d19d7d58SLionel Sambuc      number one bit larger than the field.  ie. A bitfield of N bits
2320d19d7d58SLionel Sambuc      is allowed to represent -2**n to 2**n-1.  */
2321d19d7d58SLionel Sambuc   complain_overflow_bitfield,
2322d19d7d58SLionel Sambuc 
2323d19d7d58SLionel Sambuc   /* Complain if the value overflows when considered as a signed
2324d19d7d58SLionel Sambuc      number.  */
2325d19d7d58SLionel Sambuc   complain_overflow_signed,
2326d19d7d58SLionel Sambuc 
2327d19d7d58SLionel Sambuc   /* Complain if the value overflows when considered as an
2328d19d7d58SLionel Sambuc      unsigned number.  */
2329d19d7d58SLionel Sambuc   complain_overflow_unsigned
2330d19d7d58SLionel Sambuc };
2331d19d7d58SLionel Sambuc 
2332d19d7d58SLionel Sambuc struct reloc_howto_struct
2333d19d7d58SLionel Sambuc {
2334d19d7d58SLionel Sambuc   /*  The type field has mainly a documentary use - the back end can
2335d19d7d58SLionel Sambuc       do what it wants with it, though normally the back end's
2336d19d7d58SLionel Sambuc       external idea of what a reloc number is stored
2337d19d7d58SLionel Sambuc       in this field.  For example, a PC relative word relocation
2338d19d7d58SLionel Sambuc       in a coff environment has the type 023 - because that's
2339d19d7d58SLionel Sambuc       what the outside world calls a R_PCRWORD reloc.  */
2340d19d7d58SLionel Sambuc   unsigned int type;
2341d19d7d58SLionel Sambuc 
2342d19d7d58SLionel Sambuc   /*  The value the final relocation is shifted right by.  This drops
2343d19d7d58SLionel Sambuc       unwanted data from the relocation.  */
2344d19d7d58SLionel Sambuc   unsigned int rightshift;
2345d19d7d58SLionel Sambuc 
2346d19d7d58SLionel Sambuc   /*  The size of the item to be relocated.  This is *not* a
2347d19d7d58SLionel Sambuc       power-of-two measure.  To get the number of bytes operated
2348d19d7d58SLionel Sambuc       on by a type of relocation, use bfd_get_reloc_size.  */
2349d19d7d58SLionel Sambuc   int size;
2350d19d7d58SLionel Sambuc 
2351d19d7d58SLionel Sambuc   /*  The number of bits in the item to be relocated.  This is used
2352d19d7d58SLionel Sambuc       when doing overflow checking.  */
2353d19d7d58SLionel Sambuc   unsigned int bitsize;
2354d19d7d58SLionel Sambuc 
2355d19d7d58SLionel Sambuc   /*  The relocation is relative to the field being relocated.  */
2356d19d7d58SLionel Sambuc   bfd_boolean pc_relative;
2357d19d7d58SLionel Sambuc 
2358d19d7d58SLionel Sambuc   /*  The bit position of the reloc value in the destination.
2359d19d7d58SLionel Sambuc       The relocated value is left shifted by this amount.  */
2360d19d7d58SLionel Sambuc   unsigned int bitpos;
2361d19d7d58SLionel Sambuc 
2362d19d7d58SLionel Sambuc   /* What type of overflow error should be checked for when
2363d19d7d58SLionel Sambuc      relocating.  */
2364d19d7d58SLionel Sambuc   enum complain_overflow complain_on_overflow;
2365d19d7d58SLionel Sambuc 
2366d19d7d58SLionel Sambuc   /* If this field is non null, then the supplied function is
2367d19d7d58SLionel Sambuc      called rather than the normal function.  This allows really
2368d19d7d58SLionel Sambuc      strange relocation methods to be accommodated (e.g., i960 callj
2369d19d7d58SLionel Sambuc      instructions).  */
2370d19d7d58SLionel Sambuc   bfd_reloc_status_type (*special_function)
2371d19d7d58SLionel Sambuc     (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
2372d19d7d58SLionel Sambuc      bfd *, char **);
2373d19d7d58SLionel Sambuc 
2374d19d7d58SLionel Sambuc   /* The textual name of the relocation type.  */
2375d19d7d58SLionel Sambuc   char *name;
2376d19d7d58SLionel Sambuc 
2377d19d7d58SLionel Sambuc   /* Some formats record a relocation addend in the section contents
2378d19d7d58SLionel Sambuc      rather than with the relocation.  For ELF formats this is the
2379d19d7d58SLionel Sambuc      distinction between USE_REL and USE_RELA (though the code checks
2380d19d7d58SLionel Sambuc      for USE_REL == 1/0).  The value of this field is TRUE if the
2381d19d7d58SLionel Sambuc      addend is recorded with the section contents; when performing a
2382d19d7d58SLionel Sambuc      partial link (ld -r) the section contents (the data) will be
2383d19d7d58SLionel Sambuc      modified.  The value of this field is FALSE if addends are
2384d19d7d58SLionel Sambuc      recorded with the relocation (in arelent.addend); when performing
2385d19d7d58SLionel Sambuc      a partial link the relocation will be modified.
2386d19d7d58SLionel Sambuc      All relocations for all ELF USE_RELA targets should set this field
2387d19d7d58SLionel Sambuc      to FALSE (values of TRUE should be looked on with suspicion).
2388d19d7d58SLionel Sambuc      However, the converse is not true: not all relocations of all ELF
2389d19d7d58SLionel Sambuc      USE_REL targets set this field to TRUE.  Why this is so is peculiar
2390d19d7d58SLionel Sambuc      to each particular target.  For relocs that aren't used in partial
2391d19d7d58SLionel Sambuc      links (e.g. GOT stuff) it doesn't matter what this is set to.  */
2392d19d7d58SLionel Sambuc   bfd_boolean partial_inplace;
2393d19d7d58SLionel Sambuc 
2394d19d7d58SLionel Sambuc   /* src_mask selects the part of the instruction (or data) to be used
2395d19d7d58SLionel Sambuc      in the relocation sum.  If the target relocations don't have an
2396d19d7d58SLionel Sambuc      addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
2397d19d7d58SLionel Sambuc      dst_mask to extract the addend from the section contents.  If
2398d19d7d58SLionel Sambuc      relocations do have an addend in the reloc, eg. ELF USE_RELA, this
2399d19d7d58SLionel Sambuc      field should be zero.  Non-zero values for ELF USE_RELA targets are
2400d19d7d58SLionel Sambuc      bogus as in those cases the value in the dst_mask part of the
2401d19d7d58SLionel Sambuc      section contents should be treated as garbage.  */
2402d19d7d58SLionel Sambuc   bfd_vma src_mask;
2403d19d7d58SLionel Sambuc 
2404d19d7d58SLionel Sambuc   /* dst_mask selects which parts of the instruction (or data) are
2405d19d7d58SLionel Sambuc      replaced with a relocated value.  */
2406d19d7d58SLionel Sambuc   bfd_vma dst_mask;
2407d19d7d58SLionel Sambuc 
2408d19d7d58SLionel Sambuc   /* When some formats create PC relative instructions, they leave
2409d19d7d58SLionel Sambuc      the value of the pc of the place being relocated in the offset
2410d19d7d58SLionel Sambuc      slot of the instruction, so that a PC relative relocation can
2411d19d7d58SLionel Sambuc      be made just by adding in an ordinary offset (e.g., sun3 a.out).
2412d19d7d58SLionel Sambuc      Some formats leave the displacement part of an instruction
2413d19d7d58SLionel Sambuc      empty (e.g., m88k bcs); this flag signals the fact.  */
2414d19d7d58SLionel Sambuc   bfd_boolean pcrel_offset;
2415d19d7d58SLionel Sambuc };
2416d19d7d58SLionel Sambuc 
2417d19d7d58SLionel Sambuc #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
2418d19d7d58SLionel Sambuc   { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
2419d19d7d58SLionel Sambuc #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
2420d19d7d58SLionel Sambuc   HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
2421d19d7d58SLionel Sambuc          NAME, FALSE, 0, 0, IN)
2422d19d7d58SLionel Sambuc 
2423d19d7d58SLionel Sambuc #define EMPTY_HOWTO(C) \
2424d19d7d58SLionel Sambuc   HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
2425d19d7d58SLionel Sambuc          NULL, FALSE, 0, 0, FALSE)
2426d19d7d58SLionel Sambuc 
2427d19d7d58SLionel Sambuc #define HOWTO_PREPARE(relocation, symbol)               \
2428d19d7d58SLionel Sambuc   {                                                     \
2429d19d7d58SLionel Sambuc     if (symbol != NULL)                                 \
2430d19d7d58SLionel Sambuc       {                                                 \
2431d19d7d58SLionel Sambuc         if (bfd_is_com_section (symbol->section))       \
2432d19d7d58SLionel Sambuc           {                                             \
2433d19d7d58SLionel Sambuc             relocation = 0;                             \
2434d19d7d58SLionel Sambuc           }                                             \
2435d19d7d58SLionel Sambuc         else                                            \
2436d19d7d58SLionel Sambuc           {                                             \
2437d19d7d58SLionel Sambuc             relocation = symbol->value;                 \
2438d19d7d58SLionel Sambuc           }                                             \
2439d19d7d58SLionel Sambuc       }                                                 \
2440d19d7d58SLionel Sambuc   }
2441d19d7d58SLionel Sambuc 
2442d19d7d58SLionel Sambuc unsigned int bfd_get_reloc_size (reloc_howto_type *);
2443d19d7d58SLionel Sambuc 
2444d19d7d58SLionel Sambuc typedef struct relent_chain
2445d19d7d58SLionel Sambuc {
2446d19d7d58SLionel Sambuc   arelent relent;
2447d19d7d58SLionel Sambuc   struct relent_chain *next;
2448d19d7d58SLionel Sambuc }
2449d19d7d58SLionel Sambuc arelent_chain;
2450d19d7d58SLionel Sambuc 
2451d19d7d58SLionel Sambuc bfd_reloc_status_type bfd_check_overflow
2452d19d7d58SLionel Sambuc    (enum complain_overflow how,
2453d19d7d58SLionel Sambuc     unsigned int bitsize,
2454d19d7d58SLionel Sambuc     unsigned int rightshift,
2455d19d7d58SLionel Sambuc     unsigned int addrsize,
2456d19d7d58SLionel Sambuc     bfd_vma relocation);
2457d19d7d58SLionel Sambuc 
2458d19d7d58SLionel Sambuc bfd_reloc_status_type bfd_perform_relocation
2459d19d7d58SLionel Sambuc    (bfd *abfd,
2460d19d7d58SLionel Sambuc     arelent *reloc_entry,
2461d19d7d58SLionel Sambuc     void *data,
2462d19d7d58SLionel Sambuc     asection *input_section,
2463d19d7d58SLionel Sambuc     bfd *output_bfd,
2464d19d7d58SLionel Sambuc     char **error_message);
2465d19d7d58SLionel Sambuc 
2466d19d7d58SLionel Sambuc bfd_reloc_status_type bfd_install_relocation
2467d19d7d58SLionel Sambuc    (bfd *abfd,
2468d19d7d58SLionel Sambuc     arelent *reloc_entry,
2469d19d7d58SLionel Sambuc     void *data, bfd_vma data_start,
2470d19d7d58SLionel Sambuc     asection *input_section,
2471d19d7d58SLionel Sambuc     char **error_message);
2472d19d7d58SLionel Sambuc 
2473d19d7d58SLionel Sambuc enum bfd_reloc_code_real {
2474d19d7d58SLionel Sambuc   _dummy_first_bfd_reloc_code_real,
2475d19d7d58SLionel Sambuc 
2476d19d7d58SLionel Sambuc 
2477d19d7d58SLionel Sambuc /* Basic absolute relocations of N bits.  */
2478d19d7d58SLionel Sambuc   BFD_RELOC_64,
2479d19d7d58SLionel Sambuc   BFD_RELOC_32,
2480d19d7d58SLionel Sambuc   BFD_RELOC_26,
2481d19d7d58SLionel Sambuc   BFD_RELOC_24,
2482d19d7d58SLionel Sambuc   BFD_RELOC_16,
2483d19d7d58SLionel Sambuc   BFD_RELOC_14,
2484d19d7d58SLionel Sambuc   BFD_RELOC_8,
2485d19d7d58SLionel Sambuc 
2486d19d7d58SLionel Sambuc /* PC-relative relocations.  Sometimes these are relative to the address
2487d19d7d58SLionel Sambuc of the relocation itself; sometimes they are relative to the start of
2488d19d7d58SLionel Sambuc the section containing the relocation.  It depends on the specific target.
2489d19d7d58SLionel Sambuc 
2490d19d7d58SLionel Sambuc The 24-bit relocation is used in some Intel 960 configurations.  */
2491d19d7d58SLionel Sambuc   BFD_RELOC_64_PCREL,
2492d19d7d58SLionel Sambuc   BFD_RELOC_32_PCREL,
2493d19d7d58SLionel Sambuc   BFD_RELOC_24_PCREL,
2494d19d7d58SLionel Sambuc   BFD_RELOC_16_PCREL,
2495d19d7d58SLionel Sambuc   BFD_RELOC_12_PCREL,
2496d19d7d58SLionel Sambuc   BFD_RELOC_8_PCREL,
2497d19d7d58SLionel Sambuc 
2498d19d7d58SLionel Sambuc /* Section relative relocations.  Some targets need this for DWARF2.  */
2499d19d7d58SLionel Sambuc   BFD_RELOC_32_SECREL,
2500d19d7d58SLionel Sambuc 
2501d19d7d58SLionel Sambuc /* For ELF.  */
2502d19d7d58SLionel Sambuc   BFD_RELOC_32_GOT_PCREL,
2503d19d7d58SLionel Sambuc   BFD_RELOC_16_GOT_PCREL,
2504d19d7d58SLionel Sambuc   BFD_RELOC_8_GOT_PCREL,
2505d19d7d58SLionel Sambuc   BFD_RELOC_32_GOTOFF,
2506d19d7d58SLionel Sambuc   BFD_RELOC_16_GOTOFF,
2507d19d7d58SLionel Sambuc   BFD_RELOC_LO16_GOTOFF,
2508d19d7d58SLionel Sambuc   BFD_RELOC_HI16_GOTOFF,
2509d19d7d58SLionel Sambuc   BFD_RELOC_HI16_S_GOTOFF,
2510d19d7d58SLionel Sambuc   BFD_RELOC_8_GOTOFF,
2511d19d7d58SLionel Sambuc   BFD_RELOC_64_PLT_PCREL,
2512d19d7d58SLionel Sambuc   BFD_RELOC_32_PLT_PCREL,
2513d19d7d58SLionel Sambuc   BFD_RELOC_24_PLT_PCREL,
2514d19d7d58SLionel Sambuc   BFD_RELOC_16_PLT_PCREL,
2515d19d7d58SLionel Sambuc   BFD_RELOC_8_PLT_PCREL,
2516d19d7d58SLionel Sambuc   BFD_RELOC_64_PLTOFF,
2517d19d7d58SLionel Sambuc   BFD_RELOC_32_PLTOFF,
2518d19d7d58SLionel Sambuc   BFD_RELOC_16_PLTOFF,
2519d19d7d58SLionel Sambuc   BFD_RELOC_LO16_PLTOFF,
2520d19d7d58SLionel Sambuc   BFD_RELOC_HI16_PLTOFF,
2521d19d7d58SLionel Sambuc   BFD_RELOC_HI16_S_PLTOFF,
2522d19d7d58SLionel Sambuc   BFD_RELOC_8_PLTOFF,
2523d19d7d58SLionel Sambuc 
2524d19d7d58SLionel Sambuc /* Relocations used by 68K ELF.  */
2525d19d7d58SLionel Sambuc   BFD_RELOC_68K_GLOB_DAT,
2526d19d7d58SLionel Sambuc   BFD_RELOC_68K_JMP_SLOT,
2527d19d7d58SLionel Sambuc   BFD_RELOC_68K_RELATIVE,
2528d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_GD32,
2529d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_GD16,
2530d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_GD8,
2531d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_LDM32,
2532d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_LDM16,
2533d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_LDM8,
2534d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_LDO32,
2535d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_LDO16,
2536d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_LDO8,
2537d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_IE32,
2538d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_IE16,
2539d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_IE8,
2540d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_LE32,
2541d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_LE16,
2542d19d7d58SLionel Sambuc   BFD_RELOC_68K_TLS_LE8,
2543d19d7d58SLionel Sambuc 
2544d19d7d58SLionel Sambuc /* Linkage-table relative.  */
2545d19d7d58SLionel Sambuc   BFD_RELOC_32_BASEREL,
2546d19d7d58SLionel Sambuc   BFD_RELOC_16_BASEREL,
2547d19d7d58SLionel Sambuc   BFD_RELOC_LO16_BASEREL,
2548d19d7d58SLionel Sambuc   BFD_RELOC_HI16_BASEREL,
2549d19d7d58SLionel Sambuc   BFD_RELOC_HI16_S_BASEREL,
2550d19d7d58SLionel Sambuc   BFD_RELOC_8_BASEREL,
2551d19d7d58SLionel Sambuc   BFD_RELOC_RVA,
2552d19d7d58SLionel Sambuc 
2553d19d7d58SLionel Sambuc /* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
2554d19d7d58SLionel Sambuc   BFD_RELOC_8_FFnn,
2555d19d7d58SLionel Sambuc 
2556d19d7d58SLionel Sambuc /* These PC-relative relocations are stored as word displacements --
2557d19d7d58SLionel Sambuc i.e., byte displacements shifted right two bits.  The 30-bit word
2558d19d7d58SLionel Sambuc displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
2559d19d7d58SLionel Sambuc SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
2560d19d7d58SLionel Sambuc signed 16-bit displacement is used on the MIPS, and the 23-bit
2561d19d7d58SLionel Sambuc displacement is used on the Alpha.  */
2562d19d7d58SLionel Sambuc   BFD_RELOC_32_PCREL_S2,
2563d19d7d58SLionel Sambuc   BFD_RELOC_16_PCREL_S2,
2564d19d7d58SLionel Sambuc   BFD_RELOC_23_PCREL_S2,
2565d19d7d58SLionel Sambuc 
2566d19d7d58SLionel Sambuc /* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
2567d19d7d58SLionel Sambuc the target word.  These are used on the SPARC.  */
2568d19d7d58SLionel Sambuc   BFD_RELOC_HI22,
2569d19d7d58SLionel Sambuc   BFD_RELOC_LO10,
2570d19d7d58SLionel Sambuc 
2571d19d7d58SLionel Sambuc /* For systems that allocate a Global Pointer register, these are
2572d19d7d58SLionel Sambuc displacements off that register.  These relocation types are
2573d19d7d58SLionel Sambuc handled specially, because the value the register will have is
2574d19d7d58SLionel Sambuc decided relatively late.  */
2575d19d7d58SLionel Sambuc   BFD_RELOC_GPREL16,
2576d19d7d58SLionel Sambuc   BFD_RELOC_GPREL32,
2577d19d7d58SLionel Sambuc 
2578d19d7d58SLionel Sambuc /* Reloc types used for i960/b.out.  */
2579d19d7d58SLionel Sambuc   BFD_RELOC_I960_CALLJ,
2580d19d7d58SLionel Sambuc 
2581d19d7d58SLionel Sambuc /* SPARC ELF relocations.  There is probably some overlap with other
2582d19d7d58SLionel Sambuc relocation types already defined.  */
2583d19d7d58SLionel Sambuc   BFD_RELOC_NONE,
2584d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_WDISP22,
2585d19d7d58SLionel Sambuc   BFD_RELOC_SPARC22,
2586d19d7d58SLionel Sambuc   BFD_RELOC_SPARC13,
2587d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_GOT10,
2588d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_GOT13,
2589d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_GOT22,
2590d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_PC10,
2591d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_PC22,
2592d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_WPLT30,
2593d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_COPY,
2594d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_GLOB_DAT,
2595d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_JMP_SLOT,
2596d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_RELATIVE,
2597d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_UA16,
2598d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_UA32,
2599d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_UA64,
2600d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_HIX22,
2601d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_LOX10,
2602d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_OP_HIX22,
2603d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_OP_LOX10,
2604d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_OP,
2605d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_JMP_IREL,
2606d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_IRELATIVE,
2607d19d7d58SLionel Sambuc 
2608d19d7d58SLionel Sambuc /* I think these are specific to SPARC a.out (e.g., Sun 4).  */
2609d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_BASE13,
2610d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_BASE22,
2611d19d7d58SLionel Sambuc 
2612d19d7d58SLionel Sambuc /* SPARC64 relocations  */
2613d19d7d58SLionel Sambuc #define BFD_RELOC_SPARC_64 BFD_RELOC_64
2614d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_10,
2615d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_11,
2616d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_OLO10,
2617d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_HH22,
2618d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_HM10,
2619d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_LM22,
2620d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_PC_HH22,
2621d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_PC_HM10,
2622d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_PC_LM22,
2623d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_WDISP16,
2624d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_WDISP19,
2625d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_7,
2626d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_6,
2627d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_5,
2628d19d7d58SLionel Sambuc #define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
2629d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_PLT32,
2630d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_PLT64,
2631d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_HIX22,
2632d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_LOX10,
2633d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_H44,
2634d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_M44,
2635d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_L44,
2636d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_REGISTER,
2637*c9ea9e7aSLionel Sambuc   BFD_RELOC_SPARC_H34,
2638*c9ea9e7aSLionel Sambuc   BFD_RELOC_SPARC_SIZE32,
2639*c9ea9e7aSLionel Sambuc   BFD_RELOC_SPARC_SIZE64,
2640*c9ea9e7aSLionel Sambuc   BFD_RELOC_SPARC_WDISP10,
2641d19d7d58SLionel Sambuc 
2642d19d7d58SLionel Sambuc /* SPARC little endian relocation  */
2643d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_REV32,
2644d19d7d58SLionel Sambuc 
2645d19d7d58SLionel Sambuc /* SPARC TLS relocations  */
2646d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_GD_HI22,
2647d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_GD_LO10,
2648d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_GD_ADD,
2649d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_GD_CALL,
2650d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_LDM_HI22,
2651d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_LDM_LO10,
2652d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_LDM_ADD,
2653d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_LDM_CALL,
2654d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_LDO_HIX22,
2655d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_LDO_LOX10,
2656d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_LDO_ADD,
2657d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_HI22,
2658d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_LO10,
2659d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_LD,
2660d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_LDX,
2661d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_ADD,
2662d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_LE_HIX22,
2663d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_LE_LOX10,
2664d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_DTPMOD32,
2665d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_DTPMOD64,
2666d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_DTPOFF32,
2667d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_DTPOFF64,
2668d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_TPOFF32,
2669d19d7d58SLionel Sambuc   BFD_RELOC_SPARC_TLS_TPOFF64,
2670d19d7d58SLionel Sambuc 
2671d19d7d58SLionel Sambuc /* SPU Relocations.  */
2672d19d7d58SLionel Sambuc   BFD_RELOC_SPU_IMM7,
2673d19d7d58SLionel Sambuc   BFD_RELOC_SPU_IMM8,
2674d19d7d58SLionel Sambuc   BFD_RELOC_SPU_IMM10,
2675d19d7d58SLionel Sambuc   BFD_RELOC_SPU_IMM10W,
2676d19d7d58SLionel Sambuc   BFD_RELOC_SPU_IMM16,
2677d19d7d58SLionel Sambuc   BFD_RELOC_SPU_IMM16W,
2678d19d7d58SLionel Sambuc   BFD_RELOC_SPU_IMM18,
2679d19d7d58SLionel Sambuc   BFD_RELOC_SPU_PCREL9a,
2680d19d7d58SLionel Sambuc   BFD_RELOC_SPU_PCREL9b,
2681d19d7d58SLionel Sambuc   BFD_RELOC_SPU_PCREL16,
2682d19d7d58SLionel Sambuc   BFD_RELOC_SPU_LO16,
2683d19d7d58SLionel Sambuc   BFD_RELOC_SPU_HI16,
2684d19d7d58SLionel Sambuc   BFD_RELOC_SPU_PPU32,
2685d19d7d58SLionel Sambuc   BFD_RELOC_SPU_PPU64,
2686d19d7d58SLionel Sambuc   BFD_RELOC_SPU_ADD_PIC,
2687d19d7d58SLionel Sambuc 
2688d19d7d58SLionel Sambuc /* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
2689d19d7d58SLionel Sambuc "addend" in some special way.
2690d19d7d58SLionel Sambuc For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
2691d19d7d58SLionel Sambuc writing; when reading, it will be the absolute section symbol.  The
2692d19d7d58SLionel Sambuc addend is the displacement in bytes of the "lda" instruction from
2693d19d7d58SLionel Sambuc the "ldah" instruction (which is at the address of this reloc).  */
2694d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_GPDISP_HI16,
2695d19d7d58SLionel Sambuc 
2696d19d7d58SLionel Sambuc /* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
2697d19d7d58SLionel Sambuc with GPDISP_HI16 relocs.  The addend is ignored when writing the
2698d19d7d58SLionel Sambuc relocations out, and is filled in with the file's GP value on
2699d19d7d58SLionel Sambuc reading, for convenience.  */
2700d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_GPDISP_LO16,
2701d19d7d58SLionel Sambuc 
2702d19d7d58SLionel Sambuc /* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
2703d19d7d58SLionel Sambuc relocation except that there is no accompanying GPDISP_LO16
2704d19d7d58SLionel Sambuc relocation.  */
2705d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_GPDISP,
2706d19d7d58SLionel Sambuc 
2707d19d7d58SLionel Sambuc /* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
2708d19d7d58SLionel Sambuc the assembler turns it into a LDQ instruction to load the address of
2709d19d7d58SLionel Sambuc the symbol, and then fills in a register in the real instruction.
2710d19d7d58SLionel Sambuc 
2711d19d7d58SLionel Sambuc The LITERAL reloc, at the LDQ instruction, refers to the .lita
2712d19d7d58SLionel Sambuc section symbol.  The addend is ignored when writing, but is filled
2713d19d7d58SLionel Sambuc in with the file's GP value on reading, for convenience, as with the
2714d19d7d58SLionel Sambuc GPDISP_LO16 reloc.
2715d19d7d58SLionel Sambuc 
2716d19d7d58SLionel Sambuc The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
2717d19d7d58SLionel Sambuc It should refer to the symbol to be referenced, as with 16_GOTOFF,
2718d19d7d58SLionel Sambuc but it generates output not based on the position within the .got
2719d19d7d58SLionel Sambuc section, but relative to the GP value chosen for the file during the
2720d19d7d58SLionel Sambuc final link stage.
2721d19d7d58SLionel Sambuc 
2722d19d7d58SLionel Sambuc The LITUSE reloc, on the instruction using the loaded address, gives
2723d19d7d58SLionel Sambuc information to the linker that it might be able to use to optimize
2724d19d7d58SLionel Sambuc away some literal section references.  The symbol is ignored (read
2725d19d7d58SLionel Sambuc as the absolute section symbol), and the "addend" indicates the type
2726d19d7d58SLionel Sambuc of instruction using the register:
2727d19d7d58SLionel Sambuc 1 - "memory" fmt insn
2728d19d7d58SLionel Sambuc 2 - byte-manipulation (byte offset reg)
2729d19d7d58SLionel Sambuc 3 - jsr (target of branch)  */
2730d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_LITERAL,
2731d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_ELF_LITERAL,
2732d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_LITUSE,
2733d19d7d58SLionel Sambuc 
2734d19d7d58SLionel Sambuc /* The HINT relocation indicates a value that should be filled into the
2735d19d7d58SLionel Sambuc "hint" field of a jmp/jsr/ret instruction, for possible branch-
2736d19d7d58SLionel Sambuc prediction logic which may be provided on some processors.  */
2737d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_HINT,
2738d19d7d58SLionel Sambuc 
2739d19d7d58SLionel Sambuc /* The LINKAGE relocation outputs a linkage pair in the object file,
2740d19d7d58SLionel Sambuc which is filled by the linker.  */
2741d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_LINKAGE,
2742d19d7d58SLionel Sambuc 
2743d19d7d58SLionel Sambuc /* The CODEADDR relocation outputs a STO_CA in the object file,
2744d19d7d58SLionel Sambuc which is filled by the linker.  */
2745d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_CODEADDR,
2746d19d7d58SLionel Sambuc 
2747d19d7d58SLionel Sambuc /* The GPREL_HI/LO relocations together form a 32-bit offset from the
2748d19d7d58SLionel Sambuc GP register.  */
2749d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_GPREL_HI16,
2750d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_GPREL_LO16,
2751d19d7d58SLionel Sambuc 
2752d19d7d58SLionel Sambuc /* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
2753d19d7d58SLionel Sambuc share a common GP, and the target address is adjusted for
2754d19d7d58SLionel Sambuc STO_ALPHA_STD_GPLOAD.  */
2755d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_BRSGP,
2756d19d7d58SLionel Sambuc 
2757d19d7d58SLionel Sambuc /* The NOP relocation outputs a NOP if the longword displacement
2758d19d7d58SLionel Sambuc between two procedure entry points is < 2^21.  */
2759d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_NOP,
2760d19d7d58SLionel Sambuc 
2761d19d7d58SLionel Sambuc /* The BSR relocation outputs a BSR if the longword displacement
2762d19d7d58SLionel Sambuc between two procedure entry points is < 2^21.  */
2763d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_BSR,
2764d19d7d58SLionel Sambuc 
2765d19d7d58SLionel Sambuc /* The LDA relocation outputs a LDA if the longword displacement
2766d19d7d58SLionel Sambuc between two procedure entry points is < 2^16.  */
2767d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_LDA,
2768d19d7d58SLionel Sambuc 
2769d19d7d58SLionel Sambuc /* The BOH relocation outputs a BSR if the longword displacement
2770d19d7d58SLionel Sambuc between two procedure entry points is < 2^21, or else a hint.  */
2771d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_BOH,
2772d19d7d58SLionel Sambuc 
2773d19d7d58SLionel Sambuc /* Alpha thread-local storage relocations.  */
2774d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_TLSGD,
2775d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_TLSLDM,
2776d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_DTPMOD64,
2777d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_GOTDTPREL16,
2778d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_DTPREL64,
2779d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_DTPREL_HI16,
2780d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_DTPREL_LO16,
2781d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_DTPREL16,
2782d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_GOTTPREL16,
2783d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_TPREL64,
2784d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_TPREL_HI16,
2785d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_TPREL_LO16,
2786d19d7d58SLionel Sambuc   BFD_RELOC_ALPHA_TPREL16,
2787d19d7d58SLionel Sambuc 
2788c566d462SLionel Sambuc /* The MIPS jump instruction.  */
2789d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_JMP,
2790c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_JMP,
2791d19d7d58SLionel Sambuc 
2792d19d7d58SLionel Sambuc /* The MIPS16 jump instruction.  */
2793d19d7d58SLionel Sambuc   BFD_RELOC_MIPS16_JMP,
2794d19d7d58SLionel Sambuc 
2795d19d7d58SLionel Sambuc /* MIPS16 GP relative reloc.  */
2796d19d7d58SLionel Sambuc   BFD_RELOC_MIPS16_GPREL,
2797d19d7d58SLionel Sambuc 
2798d19d7d58SLionel Sambuc /* High 16 bits of 32-bit value; simple reloc.  */
2799d19d7d58SLionel Sambuc   BFD_RELOC_HI16,
2800d19d7d58SLionel Sambuc 
2801d19d7d58SLionel Sambuc /* High 16 bits of 32-bit value but the low 16 bits will be sign
2802d19d7d58SLionel Sambuc extended and added to form the final result.  If the low 16
2803d19d7d58SLionel Sambuc bits form a negative number, we need to add one to the high value
2804d19d7d58SLionel Sambuc to compensate for the borrow when the low bits are added.  */
2805d19d7d58SLionel Sambuc   BFD_RELOC_HI16_S,
2806d19d7d58SLionel Sambuc 
2807d19d7d58SLionel Sambuc /* Low 16 bits.  */
2808d19d7d58SLionel Sambuc   BFD_RELOC_LO16,
2809d19d7d58SLionel Sambuc 
2810d19d7d58SLionel Sambuc /* High 16 bits of 32-bit pc-relative value  */
2811d19d7d58SLionel Sambuc   BFD_RELOC_HI16_PCREL,
2812d19d7d58SLionel Sambuc 
2813d19d7d58SLionel Sambuc /* High 16 bits of 32-bit pc-relative value, adjusted  */
2814d19d7d58SLionel Sambuc   BFD_RELOC_HI16_S_PCREL,
2815d19d7d58SLionel Sambuc 
2816d19d7d58SLionel Sambuc /* Low 16 bits of pc-relative value  */
2817d19d7d58SLionel Sambuc   BFD_RELOC_LO16_PCREL,
2818d19d7d58SLionel Sambuc 
2819d19d7d58SLionel Sambuc /* Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
2820d19d7d58SLionel Sambuc 16-bit immediate fields  */
2821d19d7d58SLionel Sambuc   BFD_RELOC_MIPS16_GOT16,
2822d19d7d58SLionel Sambuc   BFD_RELOC_MIPS16_CALL16,
2823d19d7d58SLionel Sambuc 
2824d19d7d58SLionel Sambuc /* MIPS16 high 16 bits of 32-bit value.  */
2825d19d7d58SLionel Sambuc   BFD_RELOC_MIPS16_HI16,
2826d19d7d58SLionel Sambuc 
2827d19d7d58SLionel Sambuc /* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
2828d19d7d58SLionel Sambuc extended and added to form the final result.  If the low 16
2829d19d7d58SLionel Sambuc bits form a negative number, we need to add one to the high value
2830d19d7d58SLionel Sambuc to compensate for the borrow when the low bits are added.  */
2831d19d7d58SLionel Sambuc   BFD_RELOC_MIPS16_HI16_S,
2832d19d7d58SLionel Sambuc 
2833d19d7d58SLionel Sambuc /* MIPS16 low 16 bits.  */
2834d19d7d58SLionel Sambuc   BFD_RELOC_MIPS16_LO16,
2835d19d7d58SLionel Sambuc 
2836*c9ea9e7aSLionel Sambuc /* MIPS16 TLS relocations  */
2837*c9ea9e7aSLionel Sambuc   BFD_RELOC_MIPS16_TLS_GD,
2838*c9ea9e7aSLionel Sambuc   BFD_RELOC_MIPS16_TLS_LDM,
2839*c9ea9e7aSLionel Sambuc   BFD_RELOC_MIPS16_TLS_DTPREL_HI16,
2840*c9ea9e7aSLionel Sambuc   BFD_RELOC_MIPS16_TLS_DTPREL_LO16,
2841*c9ea9e7aSLionel Sambuc   BFD_RELOC_MIPS16_TLS_GOTTPREL,
2842*c9ea9e7aSLionel Sambuc   BFD_RELOC_MIPS16_TLS_TPREL_HI16,
2843*c9ea9e7aSLionel Sambuc   BFD_RELOC_MIPS16_TLS_TPREL_LO16,
2844*c9ea9e7aSLionel Sambuc 
2845d19d7d58SLionel Sambuc /* Relocation against a MIPS literal section.  */
2846d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_LITERAL,
2847c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_LITERAL,
2848c566d462SLionel Sambuc 
2849c566d462SLionel Sambuc /* microMIPS PC-relative relocations.  */
2850c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_7_PCREL_S1,
2851c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_10_PCREL_S1,
2852c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_16_PCREL_S1,
2853c566d462SLionel Sambuc 
2854c566d462SLionel Sambuc /* microMIPS versions of generic BFD relocs.  */
2855c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_GPREL16,
2856c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_HI16,
2857c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_HI16_S,
2858c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_LO16,
2859d19d7d58SLionel Sambuc 
2860d19d7d58SLionel Sambuc /* MIPS ELF relocations.  */
2861d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_GOT16,
2862c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_GOT16,
2863d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_CALL16,
2864c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_CALL16,
2865d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_GOT_HI16,
2866c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_HI16,
2867d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_GOT_LO16,
2868c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_LO16,
2869d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_CALL_HI16,
2870c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_CALL_HI16,
2871d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_CALL_LO16,
2872c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_CALL_LO16,
2873d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_SUB,
2874c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_SUB,
2875d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_GOT_PAGE,
2876c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_PAGE,
2877d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_GOT_OFST,
2878c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_OFST,
2879d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_GOT_DISP,
2880c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_DISP,
2881d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_SHIFT5,
2882d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_SHIFT6,
2883d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_INSERT_A,
2884d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_INSERT_B,
2885d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_DELETE,
2886d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_HIGHEST,
2887c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_HIGHEST,
2888d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_HIGHER,
2889c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_HIGHER,
2890d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_SCN_DISP,
2891c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_SCN_DISP,
2892d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_REL16,
2893d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_RELGOT,
2894d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_JALR,
2895c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_JALR,
2896d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPMOD32,
2897d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPREL32,
2898d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPMOD64,
2899d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPREL64,
2900d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_GD,
2901c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_GD,
2902d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_LDM,
2903c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_LDM,
2904d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPREL_HI16,
2905c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16,
2906d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPREL_LO16,
2907c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16,
2908d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_GOTTPREL,
2909c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_GOTTPREL,
2910d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_TPREL32,
2911d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_TPREL64,
2912d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_TPREL_HI16,
2913c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_TPREL_HI16,
2914d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_TLS_TPREL_LO16,
2915c566d462SLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_TPREL_LO16,
2916d19d7d58SLionel Sambuc 
2917d19d7d58SLionel Sambuc 
2918d19d7d58SLionel Sambuc /* MIPS ELF relocations (VxWorks and PLT extensions).  */
2919d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_COPY,
2920d19d7d58SLionel Sambuc   BFD_RELOC_MIPS_JUMP_SLOT,
2921d19d7d58SLionel Sambuc 
2922d19d7d58SLionel Sambuc 
2923d19d7d58SLionel Sambuc /* Moxie ELF relocations.  */
2924d19d7d58SLionel Sambuc   BFD_RELOC_MOXIE_10_PCREL,
2925d19d7d58SLionel Sambuc 
2926d19d7d58SLionel Sambuc 
2927d19d7d58SLionel Sambuc /* Fujitsu Frv Relocations.  */
2928d19d7d58SLionel Sambuc   BFD_RELOC_FRV_LABEL16,
2929d19d7d58SLionel Sambuc   BFD_RELOC_FRV_LABEL24,
2930d19d7d58SLionel Sambuc   BFD_RELOC_FRV_LO16,
2931d19d7d58SLionel Sambuc   BFD_RELOC_FRV_HI16,
2932d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GPREL12,
2933d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GPRELU12,
2934d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GPREL32,
2935d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GPRELHI,
2936d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GPRELLO,
2937d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOT12,
2938d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTHI,
2939d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTLO,
2940d19d7d58SLionel Sambuc   BFD_RELOC_FRV_FUNCDESC,
2941d19d7d58SLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOT12,
2942d19d7d58SLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTHI,
2943d19d7d58SLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTLO,
2944d19d7d58SLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_VALUE,
2945d19d7d58SLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
2946d19d7d58SLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
2947d19d7d58SLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
2948d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTOFF12,
2949d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTOFFHI,
2950d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTOFFLO,
2951d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GETTLSOFF,
2952d19d7d58SLionel Sambuc   BFD_RELOC_FRV_TLSDESC_VALUE,
2953d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTTLSDESC12,
2954d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTTLSDESCHI,
2955d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTTLSDESCLO,
2956d19d7d58SLionel Sambuc   BFD_RELOC_FRV_TLSMOFF12,
2957d19d7d58SLionel Sambuc   BFD_RELOC_FRV_TLSMOFFHI,
2958d19d7d58SLionel Sambuc   BFD_RELOC_FRV_TLSMOFFLO,
2959d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTTLSOFF12,
2960d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTTLSOFFHI,
2961d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GOTTLSOFFLO,
2962d19d7d58SLionel Sambuc   BFD_RELOC_FRV_TLSOFF,
2963d19d7d58SLionel Sambuc   BFD_RELOC_FRV_TLSDESC_RELAX,
2964d19d7d58SLionel Sambuc   BFD_RELOC_FRV_GETTLSOFF_RELAX,
2965d19d7d58SLionel Sambuc   BFD_RELOC_FRV_TLSOFF_RELAX,
2966d19d7d58SLionel Sambuc   BFD_RELOC_FRV_TLSMOFF,
2967d19d7d58SLionel Sambuc 
2968d19d7d58SLionel Sambuc 
2969d19d7d58SLionel Sambuc /* This is a 24bit GOT-relative reloc for the mn10300.  */
2970d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_GOTOFF24,
2971d19d7d58SLionel Sambuc 
2972d19d7d58SLionel Sambuc /* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
2973d19d7d58SLionel Sambuc in the instruction.  */
2974d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_GOT32,
2975d19d7d58SLionel Sambuc 
2976d19d7d58SLionel Sambuc /* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
2977d19d7d58SLionel Sambuc in the instruction.  */
2978d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_GOT24,
2979d19d7d58SLionel Sambuc 
2980d19d7d58SLionel Sambuc /* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
2981d19d7d58SLionel Sambuc in the instruction.  */
2982d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_GOT16,
2983d19d7d58SLionel Sambuc 
2984d19d7d58SLionel Sambuc /* Copy symbol at runtime.  */
2985d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_COPY,
2986d19d7d58SLionel Sambuc 
2987d19d7d58SLionel Sambuc /* Create GOT entry.  */
2988d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_GLOB_DAT,
2989d19d7d58SLionel Sambuc 
2990d19d7d58SLionel Sambuc /* Create PLT entry.  */
2991d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_JMP_SLOT,
2992d19d7d58SLionel Sambuc 
2993d19d7d58SLionel Sambuc /* Adjust by program base.  */
2994d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_RELATIVE,
2995d19d7d58SLionel Sambuc 
2996d19d7d58SLionel Sambuc /* Together with another reloc targeted at the same location,
2997d19d7d58SLionel Sambuc allows for a value that is the difference of two symbols
2998d19d7d58SLionel Sambuc in the same section.  */
2999d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_SYM_DIFF,
3000d19d7d58SLionel Sambuc 
3001d19d7d58SLionel Sambuc /* The addend of this reloc is an alignment power that must
3002d19d7d58SLionel Sambuc be honoured at the offset's location, regardless of linker
3003d19d7d58SLionel Sambuc relaxation.  */
3004d19d7d58SLionel Sambuc   BFD_RELOC_MN10300_ALIGN,
3005d19d7d58SLionel Sambuc 
3006*c9ea9e7aSLionel Sambuc /* Various TLS-related relocations.  */
3007*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_TLS_GD,
3008*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_TLS_LD,
3009*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_TLS_LDO,
3010*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_TLS_GOTIE,
3011*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_TLS_IE,
3012*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_TLS_LE,
3013*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_TLS_DTPMOD,
3014*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_TLS_DTPOFF,
3015*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_TLS_TPOFF,
3016*c9ea9e7aSLionel Sambuc 
3017*c9ea9e7aSLionel Sambuc /* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
3018*c9ea9e7aSLionel Sambuc instruction.  */
3019*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_32_PCREL,
3020*c9ea9e7aSLionel Sambuc 
3021*c9ea9e7aSLionel Sambuc /* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
3022*c9ea9e7aSLionel Sambuc instruction.  */
3023*c9ea9e7aSLionel Sambuc   BFD_RELOC_MN10300_16_PCREL,
3024*c9ea9e7aSLionel Sambuc 
3025d19d7d58SLionel Sambuc 
3026d19d7d58SLionel Sambuc /* i386/elf relocations  */
3027d19d7d58SLionel Sambuc   BFD_RELOC_386_GOT32,
3028d19d7d58SLionel Sambuc   BFD_RELOC_386_PLT32,
3029d19d7d58SLionel Sambuc   BFD_RELOC_386_COPY,
3030d19d7d58SLionel Sambuc   BFD_RELOC_386_GLOB_DAT,
3031d19d7d58SLionel Sambuc   BFD_RELOC_386_JUMP_SLOT,
3032d19d7d58SLionel Sambuc   BFD_RELOC_386_RELATIVE,
3033d19d7d58SLionel Sambuc   BFD_RELOC_386_GOTOFF,
3034d19d7d58SLionel Sambuc   BFD_RELOC_386_GOTPC,
3035d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_TPOFF,
3036d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_IE,
3037d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_GOTIE,
3038d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_LE,
3039d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_GD,
3040d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_LDM,
3041d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_LDO_32,
3042d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_IE_32,
3043d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_LE_32,
3044d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_DTPMOD32,
3045d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_DTPOFF32,
3046d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_TPOFF32,
3047d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_GOTDESC,
3048d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_DESC_CALL,
3049d19d7d58SLionel Sambuc   BFD_RELOC_386_TLS_DESC,
3050d19d7d58SLionel Sambuc   BFD_RELOC_386_IRELATIVE,
3051d19d7d58SLionel Sambuc 
3052d19d7d58SLionel Sambuc /* x86-64/elf relocations  */
3053d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOT32,
3054d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_PLT32,
3055d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_COPY,
3056d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GLOB_DAT,
3057d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_JUMP_SLOT,
3058d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_RELATIVE,
3059d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOTPCREL,
3060d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_32S,
3061d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_DTPMOD64,
3062d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_DTPOFF64,
3063d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_TPOFF64,
3064d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_TLSGD,
3065d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_TLSLD,
3066d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_DTPOFF32,
3067d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOTTPOFF,
3068d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_TPOFF32,
3069d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOTOFF64,
3070d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOTPC32,
3071d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOT64,
3072d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOTPCREL64,
3073d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOTPC64,
3074d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOTPLT64,
3075d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_PLTOFF64,
3076d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_GOTPC32_TLSDESC,
3077d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_TLSDESC_CALL,
3078d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_TLSDESC,
3079d19d7d58SLionel Sambuc   BFD_RELOC_X86_64_IRELATIVE,
3080d19d7d58SLionel Sambuc 
3081d19d7d58SLionel Sambuc /* ns32k relocations  */
3082d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_IMM_8,
3083d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_IMM_16,
3084d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_IMM_32,
3085d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_IMM_8_PCREL,
3086d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_IMM_16_PCREL,
3087d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_IMM_32_PCREL,
3088d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_DISP_8,
3089d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_DISP_16,
3090d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_DISP_32,
3091d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_DISP_8_PCREL,
3092d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_DISP_16_PCREL,
3093d19d7d58SLionel Sambuc   BFD_RELOC_NS32K_DISP_32_PCREL,
3094d19d7d58SLionel Sambuc 
3095d19d7d58SLionel Sambuc /* PDP11 relocations  */
3096d19d7d58SLionel Sambuc   BFD_RELOC_PDP11_DISP_8_PCREL,
3097d19d7d58SLionel Sambuc   BFD_RELOC_PDP11_DISP_6_PCREL,
3098d19d7d58SLionel Sambuc 
3099d19d7d58SLionel Sambuc /* Picojava relocs.  Not all of these appear in object files.  */
3100d19d7d58SLionel Sambuc   BFD_RELOC_PJ_CODE_HI16,
3101d19d7d58SLionel Sambuc   BFD_RELOC_PJ_CODE_LO16,
3102d19d7d58SLionel Sambuc   BFD_RELOC_PJ_CODE_DIR16,
3103d19d7d58SLionel Sambuc   BFD_RELOC_PJ_CODE_DIR32,
3104d19d7d58SLionel Sambuc   BFD_RELOC_PJ_CODE_REL16,
3105d19d7d58SLionel Sambuc   BFD_RELOC_PJ_CODE_REL32,
3106d19d7d58SLionel Sambuc 
3107d19d7d58SLionel Sambuc /* Power(rs6000) and PowerPC relocations.  */
3108d19d7d58SLionel Sambuc   BFD_RELOC_PPC_B26,
3109d19d7d58SLionel Sambuc   BFD_RELOC_PPC_BA26,
3110d19d7d58SLionel Sambuc   BFD_RELOC_PPC_TOC16,
3111d19d7d58SLionel Sambuc   BFD_RELOC_PPC_B16,
3112d19d7d58SLionel Sambuc   BFD_RELOC_PPC_B16_BRTAKEN,
3113d19d7d58SLionel Sambuc   BFD_RELOC_PPC_B16_BRNTAKEN,
3114d19d7d58SLionel Sambuc   BFD_RELOC_PPC_BA16,
3115d19d7d58SLionel Sambuc   BFD_RELOC_PPC_BA16_BRTAKEN,
3116d19d7d58SLionel Sambuc   BFD_RELOC_PPC_BA16_BRNTAKEN,
3117d19d7d58SLionel Sambuc   BFD_RELOC_PPC_COPY,
3118d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GLOB_DAT,
3119d19d7d58SLionel Sambuc   BFD_RELOC_PPC_JMP_SLOT,
3120d19d7d58SLionel Sambuc   BFD_RELOC_PPC_RELATIVE,
3121d19d7d58SLionel Sambuc   BFD_RELOC_PPC_LOCAL24PC,
3122d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR32,
3123d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR16,
3124d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR16_LO,
3125d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR16_HI,
3126d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR16_HA,
3127d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_SDAI16,
3128d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_SDA2I16,
3129d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_SDA2REL,
3130d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_SDA21,
3131d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_MRKREF,
3132d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_RELSEC16,
3133d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_RELST_LO,
3134d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_RELST_HI,
3135d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_RELST_HA,
3136d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_BIT_FLD,
3137d19d7d58SLionel Sambuc   BFD_RELOC_PPC_EMB_RELSDA,
3138*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_REL8,
3139*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_REL15,
3140*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_REL24,
3141*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_LO16A,
3142*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_LO16D,
3143*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_HI16A,
3144*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_HI16D,
3145*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_HA16A,
3146*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_HA16D,
3147*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_SDA21,
3148*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_SDA21_LO,
3149*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_LO16A,
3150*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_LO16D,
3151*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_HI16A,
3152*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_HI16D,
3153*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_HA16A,
3154*c9ea9e7aSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_HA16D,
3155d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_HIGHER,
3156d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_HIGHER_S,
3157d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_HIGHEST,
3158d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_HIGHEST_S,
3159d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TOC16_LO,
3160d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TOC16_HI,
3161d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TOC16_HA,
3162d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TOC,
3163d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16,
3164d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_LO,
3165d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_HI,
3166d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_HA,
3167d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_ADDR16_DS,
3168d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_ADDR16_LO_DS,
3169d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_GOT16_DS,
3170d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_GOT16_LO_DS,
3171d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_PLT16_LO_DS,
3172d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_SECTOFF_DS,
3173d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_SECTOFF_LO_DS,
3174d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TOC16_DS,
3175d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TOC16_LO_DS,
3176d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_DS,
3177d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_LO_DS,
3178d19d7d58SLionel Sambuc 
3179d19d7d58SLionel Sambuc /* PowerPC and PowerPC64 thread-local storage relocations.  */
3180d19d7d58SLionel Sambuc   BFD_RELOC_PPC_TLS,
3181d19d7d58SLionel Sambuc   BFD_RELOC_PPC_TLSGD,
3182d19d7d58SLionel Sambuc   BFD_RELOC_PPC_TLSLD,
3183d19d7d58SLionel Sambuc   BFD_RELOC_PPC_DTPMOD,
3184d19d7d58SLionel Sambuc   BFD_RELOC_PPC_TPREL16,
3185d19d7d58SLionel Sambuc   BFD_RELOC_PPC_TPREL16_LO,
3186d19d7d58SLionel Sambuc   BFD_RELOC_PPC_TPREL16_HI,
3187d19d7d58SLionel Sambuc   BFD_RELOC_PPC_TPREL16_HA,
3188d19d7d58SLionel Sambuc   BFD_RELOC_PPC_TPREL,
3189d19d7d58SLionel Sambuc   BFD_RELOC_PPC_DTPREL16,
3190d19d7d58SLionel Sambuc   BFD_RELOC_PPC_DTPREL16_LO,
3191d19d7d58SLionel Sambuc   BFD_RELOC_PPC_DTPREL16_HI,
3192d19d7d58SLionel Sambuc   BFD_RELOC_PPC_DTPREL16_HA,
3193d19d7d58SLionel Sambuc   BFD_RELOC_PPC_DTPREL,
3194d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TLSGD16,
3195d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TLSGD16_LO,
3196d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TLSGD16_HI,
3197d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TLSGD16_HA,
3198d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TLSLD16,
3199d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TLSLD16_LO,
3200d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TLSLD16_HI,
3201d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TLSLD16_HA,
3202d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TPREL16,
3203d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TPREL16_LO,
3204d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TPREL16_HI,
3205d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_TPREL16_HA,
3206d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_DTPREL16,
3207d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_DTPREL16_LO,
3208d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_DTPREL16_HI,
3209d19d7d58SLionel Sambuc   BFD_RELOC_PPC_GOT_DTPREL16_HA,
3210d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TPREL16_DS,
3211d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TPREL16_LO_DS,
3212d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TPREL16_HIGHER,
3213d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TPREL16_HIGHERA,
3214d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TPREL16_HIGHEST,
3215d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_TPREL16_HIGHESTA,
3216d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_DS,
3217d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_LO_DS,
3218d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_HIGHER,
3219d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_HIGHERA,
3220d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_HIGHEST,
3221d19d7d58SLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
3222d19d7d58SLionel Sambuc 
3223d19d7d58SLionel Sambuc /* IBM 370/390 relocations  */
3224d19d7d58SLionel Sambuc   BFD_RELOC_I370_D12,
3225d19d7d58SLionel Sambuc 
3226d19d7d58SLionel Sambuc /* The type of reloc used to build a constructor table - at the moment
3227d19d7d58SLionel Sambuc probably a 32 bit wide absolute relocation, but the target can choose.
3228d19d7d58SLionel Sambuc It generally does map to one of the other relocation types.  */
3229d19d7d58SLionel Sambuc   BFD_RELOC_CTOR,
3230d19d7d58SLionel Sambuc 
3231d19d7d58SLionel Sambuc /* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
3232d19d7d58SLionel Sambuc not stored in the instruction.  */
3233d19d7d58SLionel Sambuc   BFD_RELOC_ARM_PCREL_BRANCH,
3234d19d7d58SLionel Sambuc 
3235d19d7d58SLionel Sambuc /* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
3236d19d7d58SLionel Sambuc not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
3237d19d7d58SLionel Sambuc field in the instruction.  */
3238d19d7d58SLionel Sambuc   BFD_RELOC_ARM_PCREL_BLX,
3239d19d7d58SLionel Sambuc 
3240d19d7d58SLionel Sambuc /* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
3241d19d7d58SLionel Sambuc not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
3242d19d7d58SLionel Sambuc field in the instruction.  */
3243d19d7d58SLionel Sambuc   BFD_RELOC_THUMB_PCREL_BLX,
3244d19d7d58SLionel Sambuc 
3245d19d7d58SLionel Sambuc /* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
3246d19d7d58SLionel Sambuc   BFD_RELOC_ARM_PCREL_CALL,
3247d19d7d58SLionel Sambuc 
3248d19d7d58SLionel Sambuc /* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
3249d19d7d58SLionel Sambuc   BFD_RELOC_ARM_PCREL_JUMP,
3250d19d7d58SLionel Sambuc 
3251d19d7d58SLionel Sambuc /* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
3252d19d7d58SLionel Sambuc The lowest bit must be zero and is not stored in the instruction.
3253d19d7d58SLionel Sambuc Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
3254d19d7d58SLionel Sambuc "nn" one smaller in all cases.  Note further that BRANCH23
3255d19d7d58SLionel Sambuc corresponds to R_ARM_THM_CALL.  */
3256d19d7d58SLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH7,
3257d19d7d58SLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH9,
3258d19d7d58SLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH12,
3259d19d7d58SLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH20,
3260d19d7d58SLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH23,
3261d19d7d58SLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH25,
3262d19d7d58SLionel Sambuc 
3263d19d7d58SLionel Sambuc /* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
3264d19d7d58SLionel Sambuc   BFD_RELOC_ARM_OFFSET_IMM,
3265d19d7d58SLionel Sambuc 
3266d19d7d58SLionel Sambuc /* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
3267d19d7d58SLionel Sambuc   BFD_RELOC_ARM_THUMB_OFFSET,
3268d19d7d58SLionel Sambuc 
3269d19d7d58SLionel Sambuc /* Pc-relative or absolute relocation depending on target.  Used for
3270d19d7d58SLionel Sambuc entries in .init_array sections.  */
3271d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TARGET1,
3272d19d7d58SLionel Sambuc 
3273d19d7d58SLionel Sambuc /* Read-only segment base relative address.  */
3274d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ROSEGREL32,
3275d19d7d58SLionel Sambuc 
3276d19d7d58SLionel Sambuc /* Data segment base relative address.  */
3277d19d7d58SLionel Sambuc   BFD_RELOC_ARM_SBREL32,
3278d19d7d58SLionel Sambuc 
3279d19d7d58SLionel Sambuc /* This reloc is used for references to RTTI data from exception handling
3280d19d7d58SLionel Sambuc tables.  The actual definition depends on the target.  It may be a
3281d19d7d58SLionel Sambuc pc-relative or some form of GOT-indirect relocation.  */
3282d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TARGET2,
3283d19d7d58SLionel Sambuc 
3284d19d7d58SLionel Sambuc /* 31-bit PC relative address.  */
3285d19d7d58SLionel Sambuc   BFD_RELOC_ARM_PREL31,
3286d19d7d58SLionel Sambuc 
3287d19d7d58SLionel Sambuc /* Low and High halfword relocations for MOVW and MOVT instructions.  */
3288d19d7d58SLionel Sambuc   BFD_RELOC_ARM_MOVW,
3289d19d7d58SLionel Sambuc   BFD_RELOC_ARM_MOVT,
3290d19d7d58SLionel Sambuc   BFD_RELOC_ARM_MOVW_PCREL,
3291d19d7d58SLionel Sambuc   BFD_RELOC_ARM_MOVT_PCREL,
3292d19d7d58SLionel Sambuc   BFD_RELOC_ARM_THUMB_MOVW,
3293d19d7d58SLionel Sambuc   BFD_RELOC_ARM_THUMB_MOVT,
3294d19d7d58SLionel Sambuc   BFD_RELOC_ARM_THUMB_MOVW_PCREL,
3295d19d7d58SLionel Sambuc   BFD_RELOC_ARM_THUMB_MOVT_PCREL,
3296d19d7d58SLionel Sambuc 
3297d19d7d58SLionel Sambuc /* Relocations for setting up GOTs and PLTs for shared libraries.  */
3298d19d7d58SLionel Sambuc   BFD_RELOC_ARM_JUMP_SLOT,
3299d19d7d58SLionel Sambuc   BFD_RELOC_ARM_GLOB_DAT,
3300d19d7d58SLionel Sambuc   BFD_RELOC_ARM_GOT32,
3301d19d7d58SLionel Sambuc   BFD_RELOC_ARM_PLT32,
3302d19d7d58SLionel Sambuc   BFD_RELOC_ARM_RELATIVE,
3303d19d7d58SLionel Sambuc   BFD_RELOC_ARM_GOTOFF,
3304d19d7d58SLionel Sambuc   BFD_RELOC_ARM_GOTPC,
3305d19d7d58SLionel Sambuc   BFD_RELOC_ARM_GOT_PREL,
3306d19d7d58SLionel Sambuc 
3307d19d7d58SLionel Sambuc /* ARM thread-local storage relocations.  */
3308d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TLS_GD32,
3309d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TLS_LDO32,
3310d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TLS_LDM32,
3311d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TLS_DTPOFF32,
3312d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TLS_DTPMOD32,
3313d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TLS_TPOFF32,
3314d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TLS_IE32,
3315d19d7d58SLionel Sambuc   BFD_RELOC_ARM_TLS_LE32,
3316c566d462SLionel Sambuc   BFD_RELOC_ARM_TLS_GOTDESC,
3317c566d462SLionel Sambuc   BFD_RELOC_ARM_TLS_CALL,
3318c566d462SLionel Sambuc   BFD_RELOC_ARM_THM_TLS_CALL,
3319c566d462SLionel Sambuc   BFD_RELOC_ARM_TLS_DESCSEQ,
3320c566d462SLionel Sambuc   BFD_RELOC_ARM_THM_TLS_DESCSEQ,
3321c566d462SLionel Sambuc   BFD_RELOC_ARM_TLS_DESC,
3322d19d7d58SLionel Sambuc 
3323d19d7d58SLionel Sambuc /* ARM group relocations.  */
3324d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G0_NC,
3325d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G0,
3326d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G1_NC,
3327d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G1,
3328d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G2,
3329d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDR_PC_G0,
3330d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDR_PC_G1,
3331d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDR_PC_G2,
3332d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDRS_PC_G0,
3333d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDRS_PC_G1,
3334d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDRS_PC_G2,
3335d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDC_PC_G0,
3336d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDC_PC_G1,
3337d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDC_PC_G2,
3338d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G0_NC,
3339d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G0,
3340d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G1_NC,
3341d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G1,
3342d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G2,
3343d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDR_SB_G0,
3344d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDR_SB_G1,
3345d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDR_SB_G2,
3346d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDRS_SB_G0,
3347d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDRS_SB_G1,
3348d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDRS_SB_G2,
3349d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDC_SB_G0,
3350d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDC_SB_G1,
3351d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDC_SB_G2,
3352d19d7d58SLionel Sambuc 
3353d19d7d58SLionel Sambuc /* Annotation of BX instructions.  */
3354d19d7d58SLionel Sambuc   BFD_RELOC_ARM_V4BX,
3355d19d7d58SLionel Sambuc 
3356c566d462SLionel Sambuc /* ARM support for STT_GNU_IFUNC.  */
3357c566d462SLionel Sambuc   BFD_RELOC_ARM_IRELATIVE,
3358c566d462SLionel Sambuc 
3359d19d7d58SLionel Sambuc /* These relocs are only used within the ARM assembler.  They are not
3360d19d7d58SLionel Sambuc (at present) written to any object files.  */
3361d19d7d58SLionel Sambuc   BFD_RELOC_ARM_IMMEDIATE,
3362d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ADRL_IMMEDIATE,
3363d19d7d58SLionel Sambuc   BFD_RELOC_ARM_T32_IMMEDIATE,
3364d19d7d58SLionel Sambuc   BFD_RELOC_ARM_T32_ADD_IMM,
3365d19d7d58SLionel Sambuc   BFD_RELOC_ARM_T32_IMM12,
3366d19d7d58SLionel Sambuc   BFD_RELOC_ARM_T32_ADD_PC12,
3367d19d7d58SLionel Sambuc   BFD_RELOC_ARM_SHIFT_IMM,
3368d19d7d58SLionel Sambuc   BFD_RELOC_ARM_SMC,
3369d19d7d58SLionel Sambuc   BFD_RELOC_ARM_HVC,
3370d19d7d58SLionel Sambuc   BFD_RELOC_ARM_SWI,
3371d19d7d58SLionel Sambuc   BFD_RELOC_ARM_MULTI,
3372d19d7d58SLionel Sambuc   BFD_RELOC_ARM_CP_OFF_IMM,
3373d19d7d58SLionel Sambuc   BFD_RELOC_ARM_CP_OFF_IMM_S2,
3374d19d7d58SLionel Sambuc   BFD_RELOC_ARM_T32_CP_OFF_IMM,
3375d19d7d58SLionel Sambuc   BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
3376d19d7d58SLionel Sambuc   BFD_RELOC_ARM_ADR_IMM,
3377d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LDR_IMM,
3378d19d7d58SLionel Sambuc   BFD_RELOC_ARM_LITERAL,
3379d19d7d58SLionel Sambuc   BFD_RELOC_ARM_IN_POOL,
3380d19d7d58SLionel Sambuc   BFD_RELOC_ARM_OFFSET_IMM8,
3381d19d7d58SLionel Sambuc   BFD_RELOC_ARM_T32_OFFSET_U8,
3382d19d7d58SLionel Sambuc   BFD_RELOC_ARM_T32_OFFSET_IMM,
3383d19d7d58SLionel Sambuc   BFD_RELOC_ARM_HWLITERAL,
3384d19d7d58SLionel Sambuc   BFD_RELOC_ARM_THUMB_ADD,
3385d19d7d58SLionel Sambuc   BFD_RELOC_ARM_THUMB_IMM,
3386d19d7d58SLionel Sambuc   BFD_RELOC_ARM_THUMB_SHIFT,
3387d19d7d58SLionel Sambuc 
3388d19d7d58SLionel Sambuc /* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
3389d19d7d58SLionel Sambuc   BFD_RELOC_SH_PCDISP8BY2,
3390d19d7d58SLionel Sambuc   BFD_RELOC_SH_PCDISP12BY2,
3391d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM3,
3392d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM3U,
3393d19d7d58SLionel Sambuc   BFD_RELOC_SH_DISP12,
3394d19d7d58SLionel Sambuc   BFD_RELOC_SH_DISP12BY2,
3395d19d7d58SLionel Sambuc   BFD_RELOC_SH_DISP12BY4,
3396d19d7d58SLionel Sambuc   BFD_RELOC_SH_DISP12BY8,
3397d19d7d58SLionel Sambuc   BFD_RELOC_SH_DISP20,
3398d19d7d58SLionel Sambuc   BFD_RELOC_SH_DISP20BY8,
3399d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM4,
3400d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM4BY2,
3401d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM4BY4,
3402d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM8,
3403d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM8BY2,
3404d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM8BY4,
3405d19d7d58SLionel Sambuc   BFD_RELOC_SH_PCRELIMM8BY2,
3406d19d7d58SLionel Sambuc   BFD_RELOC_SH_PCRELIMM8BY4,
3407d19d7d58SLionel Sambuc   BFD_RELOC_SH_SWITCH16,
3408d19d7d58SLionel Sambuc   BFD_RELOC_SH_SWITCH32,
3409d19d7d58SLionel Sambuc   BFD_RELOC_SH_USES,
3410d19d7d58SLionel Sambuc   BFD_RELOC_SH_COUNT,
3411d19d7d58SLionel Sambuc   BFD_RELOC_SH_ALIGN,
3412d19d7d58SLionel Sambuc   BFD_RELOC_SH_CODE,
3413d19d7d58SLionel Sambuc   BFD_RELOC_SH_DATA,
3414d19d7d58SLionel Sambuc   BFD_RELOC_SH_LABEL,
3415d19d7d58SLionel Sambuc   BFD_RELOC_SH_LOOP_START,
3416d19d7d58SLionel Sambuc   BFD_RELOC_SH_LOOP_END,
3417d19d7d58SLionel Sambuc   BFD_RELOC_SH_COPY,
3418d19d7d58SLionel Sambuc   BFD_RELOC_SH_GLOB_DAT,
3419d19d7d58SLionel Sambuc   BFD_RELOC_SH_JMP_SLOT,
3420d19d7d58SLionel Sambuc   BFD_RELOC_SH_RELATIVE,
3421d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPC,
3422d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOT_LOW16,
3423d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOT_MEDLOW16,
3424d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOT_MEDHI16,
3425d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOT_HI16,
3426d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPLT_LOW16,
3427d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPLT_MEDLOW16,
3428d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPLT_MEDHI16,
3429d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPLT_HI16,
3430d19d7d58SLionel Sambuc   BFD_RELOC_SH_PLT_LOW16,
3431d19d7d58SLionel Sambuc   BFD_RELOC_SH_PLT_MEDLOW16,
3432d19d7d58SLionel Sambuc   BFD_RELOC_SH_PLT_MEDHI16,
3433d19d7d58SLionel Sambuc   BFD_RELOC_SH_PLT_HI16,
3434d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTOFF_LOW16,
3435d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTOFF_MEDLOW16,
3436d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTOFF_MEDHI16,
3437d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTOFF_HI16,
3438d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPC_LOW16,
3439d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPC_MEDLOW16,
3440d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPC_MEDHI16,
3441d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPC_HI16,
3442d19d7d58SLionel Sambuc   BFD_RELOC_SH_COPY64,
3443d19d7d58SLionel Sambuc   BFD_RELOC_SH_GLOB_DAT64,
3444d19d7d58SLionel Sambuc   BFD_RELOC_SH_JMP_SLOT64,
3445d19d7d58SLionel Sambuc   BFD_RELOC_SH_RELATIVE64,
3446d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOT10BY4,
3447d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOT10BY8,
3448d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPLT10BY4,
3449d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPLT10BY8,
3450d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTPLT32,
3451d19d7d58SLionel Sambuc   BFD_RELOC_SH_SHMEDIA_CODE,
3452d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMU5,
3453d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMS6,
3454d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMS6BY32,
3455d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMU6,
3456d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMS10,
3457d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMS10BY2,
3458d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMS10BY4,
3459d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMS10BY8,
3460d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMS16,
3461d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMMU16,
3462d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM_LOW16,
3463d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM_LOW16_PCREL,
3464d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM_MEDLOW16,
3465d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
3466d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM_MEDHI16,
3467d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM_MEDHI16_PCREL,
3468d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM_HI16,
3469d19d7d58SLionel Sambuc   BFD_RELOC_SH_IMM_HI16_PCREL,
3470d19d7d58SLionel Sambuc   BFD_RELOC_SH_PT_16,
3471d19d7d58SLionel Sambuc   BFD_RELOC_SH_TLS_GD_32,
3472d19d7d58SLionel Sambuc   BFD_RELOC_SH_TLS_LD_32,
3473d19d7d58SLionel Sambuc   BFD_RELOC_SH_TLS_LDO_32,
3474d19d7d58SLionel Sambuc   BFD_RELOC_SH_TLS_IE_32,
3475d19d7d58SLionel Sambuc   BFD_RELOC_SH_TLS_LE_32,
3476d19d7d58SLionel Sambuc   BFD_RELOC_SH_TLS_DTPMOD32,
3477d19d7d58SLionel Sambuc   BFD_RELOC_SH_TLS_DTPOFF32,
3478d19d7d58SLionel Sambuc   BFD_RELOC_SH_TLS_TPOFF32,
3479d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOT20,
3480d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTOFF20,
3481d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTFUNCDESC,
3482d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTFUNCDESC20,
3483d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTOFFFUNCDESC,
3484d19d7d58SLionel Sambuc   BFD_RELOC_SH_GOTOFFFUNCDESC20,
3485d19d7d58SLionel Sambuc   BFD_RELOC_SH_FUNCDESC,
3486d19d7d58SLionel Sambuc 
3487d19d7d58SLionel Sambuc /* ARC Cores relocs.
3488d19d7d58SLionel Sambuc ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
3489d19d7d58SLionel Sambuc not stored in the instruction.  The high 20 bits are installed in bits 26
3490d19d7d58SLionel Sambuc through 7 of the instruction.  */
3491d19d7d58SLionel Sambuc   BFD_RELOC_ARC_B22_PCREL,
3492d19d7d58SLionel Sambuc 
3493d19d7d58SLionel Sambuc /* ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
3494d19d7d58SLionel Sambuc stored in the instruction.  The high 24 bits are installed in bits 23
3495d19d7d58SLionel Sambuc through 0.  */
3496d19d7d58SLionel Sambuc   BFD_RELOC_ARC_B26,
3497d19d7d58SLionel Sambuc 
3498d19d7d58SLionel Sambuc /* ADI Blackfin 16 bit immediate absolute reloc.  */
3499d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_16_IMM,
3500d19d7d58SLionel Sambuc 
3501d19d7d58SLionel Sambuc /* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
3502d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_16_HIGH,
3503d19d7d58SLionel Sambuc 
3504d19d7d58SLionel Sambuc /* ADI Blackfin 'a' part of LSETUP.  */
3505d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_4_PCREL,
3506d19d7d58SLionel Sambuc 
3507d19d7d58SLionel Sambuc /* ADI Blackfin.  */
3508d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_5_PCREL,
3509d19d7d58SLionel Sambuc 
3510d19d7d58SLionel Sambuc /* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
3511d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_16_LOW,
3512d19d7d58SLionel Sambuc 
3513d19d7d58SLionel Sambuc /* ADI Blackfin.  */
3514d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_10_PCREL,
3515d19d7d58SLionel Sambuc 
3516d19d7d58SLionel Sambuc /* ADI Blackfin 'b' part of LSETUP.  */
3517d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_11_PCREL,
3518d19d7d58SLionel Sambuc 
3519d19d7d58SLionel Sambuc /* ADI Blackfin.  */
3520d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_12_PCREL_JUMP,
3521d19d7d58SLionel Sambuc 
3522d19d7d58SLionel Sambuc /* ADI Blackfin Short jump, pcrel.  */
3523d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_12_PCREL_JUMP_S,
3524d19d7d58SLionel Sambuc 
3525d19d7d58SLionel Sambuc /* ADI Blackfin Call.x not implemented.  */
3526d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_24_PCREL_CALL_X,
3527d19d7d58SLionel Sambuc 
3528d19d7d58SLionel Sambuc /* ADI Blackfin Long Jump pcrel.  */
3529d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_24_PCREL_JUMP_L,
3530d19d7d58SLionel Sambuc 
3531d19d7d58SLionel Sambuc /* ADI Blackfin FD-PIC relocations.  */
3532d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_GOT17M4,
3533d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_GOTHI,
3534d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_GOTLO,
3535d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC,
3536d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
3537d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTHI,
3538d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTLO,
3539d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_VALUE,
3540d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
3541d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
3542d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
3543d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_GOTOFF17M4,
3544d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_GOTOFFHI,
3545d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_GOTOFFLO,
3546d19d7d58SLionel Sambuc 
3547d19d7d58SLionel Sambuc /* ADI Blackfin GOT relocation.  */
3548d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_GOT,
3549d19d7d58SLionel Sambuc 
3550d19d7d58SLionel Sambuc /* ADI Blackfin PLTPC relocation.  */
3551d19d7d58SLionel Sambuc   BFD_RELOC_BFIN_PLTPC,
3552d19d7d58SLionel Sambuc 
3553d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3554d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_PUSH,
3555d19d7d58SLionel Sambuc 
3556d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3557d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_CONST,
3558d19d7d58SLionel Sambuc 
3559d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3560d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_ADD,
3561d19d7d58SLionel Sambuc 
3562d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3563d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_SUB,
3564d19d7d58SLionel Sambuc 
3565d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3566d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_MULT,
3567d19d7d58SLionel Sambuc 
3568d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3569d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_DIV,
3570d19d7d58SLionel Sambuc 
3571d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3572d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_MOD,
3573d19d7d58SLionel Sambuc 
3574d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3575d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_LSHIFT,
3576d19d7d58SLionel Sambuc 
3577d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3578d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_RSHIFT,
3579d19d7d58SLionel Sambuc 
3580d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3581d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_AND,
3582d19d7d58SLionel Sambuc 
3583d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3584d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_OR,
3585d19d7d58SLionel Sambuc 
3586d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3587d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_XOR,
3588d19d7d58SLionel Sambuc 
3589d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3590d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_LAND,
3591d19d7d58SLionel Sambuc 
3592d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3593d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_LOR,
3594d19d7d58SLionel Sambuc 
3595d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3596d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_LEN,
3597d19d7d58SLionel Sambuc 
3598d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3599d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_NEG,
3600d19d7d58SLionel Sambuc 
3601d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3602d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_COMP,
3603d19d7d58SLionel Sambuc 
3604d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3605d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_PAGE,
3606d19d7d58SLionel Sambuc 
3607d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3608d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_HWPAGE,
3609d19d7d58SLionel Sambuc 
3610d19d7d58SLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3611d19d7d58SLionel Sambuc   BFD_ARELOC_BFIN_ADDR,
3612d19d7d58SLionel Sambuc 
3613d19d7d58SLionel Sambuc /* Mitsubishi D10V relocs.
3614d19d7d58SLionel Sambuc This is a 10-bit reloc with the right 2 bits
3615d19d7d58SLionel Sambuc assumed to be 0.  */
3616d19d7d58SLionel Sambuc   BFD_RELOC_D10V_10_PCREL_R,
3617d19d7d58SLionel Sambuc 
3618d19d7d58SLionel Sambuc /* Mitsubishi D10V relocs.
3619d19d7d58SLionel Sambuc This is a 10-bit reloc with the right 2 bits
3620d19d7d58SLionel Sambuc assumed to be 0.  This is the same as the previous reloc
3621d19d7d58SLionel Sambuc except it is in the left container, i.e.,
3622d19d7d58SLionel Sambuc shifted left 15 bits.  */
3623d19d7d58SLionel Sambuc   BFD_RELOC_D10V_10_PCREL_L,
3624d19d7d58SLionel Sambuc 
3625d19d7d58SLionel Sambuc /* This is an 18-bit reloc with the right 2 bits
3626d19d7d58SLionel Sambuc assumed to be 0.  */
3627d19d7d58SLionel Sambuc   BFD_RELOC_D10V_18,
3628d19d7d58SLionel Sambuc 
3629d19d7d58SLionel Sambuc /* This is an 18-bit reloc with the right 2 bits
3630d19d7d58SLionel Sambuc assumed to be 0.  */
3631d19d7d58SLionel Sambuc   BFD_RELOC_D10V_18_PCREL,
3632d19d7d58SLionel Sambuc 
3633d19d7d58SLionel Sambuc /* Mitsubishi D30V relocs.
3634d19d7d58SLionel Sambuc This is a 6-bit absolute reloc.  */
3635d19d7d58SLionel Sambuc   BFD_RELOC_D30V_6,
3636d19d7d58SLionel Sambuc 
3637d19d7d58SLionel Sambuc /* This is a 6-bit pc-relative reloc with
3638d19d7d58SLionel Sambuc the right 3 bits assumed to be 0.  */
3639d19d7d58SLionel Sambuc   BFD_RELOC_D30V_9_PCREL,
3640d19d7d58SLionel Sambuc 
3641d19d7d58SLionel Sambuc /* This is a 6-bit pc-relative reloc with
3642d19d7d58SLionel Sambuc the right 3 bits assumed to be 0. Same
3643d19d7d58SLionel Sambuc as the previous reloc but on the right side
3644d19d7d58SLionel Sambuc of the container.  */
3645d19d7d58SLionel Sambuc   BFD_RELOC_D30V_9_PCREL_R,
3646d19d7d58SLionel Sambuc 
3647d19d7d58SLionel Sambuc /* This is a 12-bit absolute reloc with the
3648d19d7d58SLionel Sambuc right 3 bitsassumed to be 0.  */
3649d19d7d58SLionel Sambuc   BFD_RELOC_D30V_15,
3650d19d7d58SLionel Sambuc 
3651d19d7d58SLionel Sambuc /* This is a 12-bit pc-relative reloc with
3652d19d7d58SLionel Sambuc the right 3 bits assumed to be 0.  */
3653d19d7d58SLionel Sambuc   BFD_RELOC_D30V_15_PCREL,
3654d19d7d58SLionel Sambuc 
3655d19d7d58SLionel Sambuc /* This is a 12-bit pc-relative reloc with
3656d19d7d58SLionel Sambuc the right 3 bits assumed to be 0. Same
3657d19d7d58SLionel Sambuc as the previous reloc but on the right side
3658d19d7d58SLionel Sambuc of the container.  */
3659d19d7d58SLionel Sambuc   BFD_RELOC_D30V_15_PCREL_R,
3660d19d7d58SLionel Sambuc 
3661d19d7d58SLionel Sambuc /* This is an 18-bit absolute reloc with
3662d19d7d58SLionel Sambuc the right 3 bits assumed to be 0.  */
3663d19d7d58SLionel Sambuc   BFD_RELOC_D30V_21,
3664d19d7d58SLionel Sambuc 
3665d19d7d58SLionel Sambuc /* This is an 18-bit pc-relative reloc with
3666d19d7d58SLionel Sambuc the right 3 bits assumed to be 0.  */
3667d19d7d58SLionel Sambuc   BFD_RELOC_D30V_21_PCREL,
3668d19d7d58SLionel Sambuc 
3669d19d7d58SLionel Sambuc /* This is an 18-bit pc-relative reloc with
3670d19d7d58SLionel Sambuc the right 3 bits assumed to be 0. Same
3671d19d7d58SLionel Sambuc as the previous reloc but on the right side
3672d19d7d58SLionel Sambuc of the container.  */
3673d19d7d58SLionel Sambuc   BFD_RELOC_D30V_21_PCREL_R,
3674d19d7d58SLionel Sambuc 
3675d19d7d58SLionel Sambuc /* This is a 32-bit absolute reloc.  */
3676d19d7d58SLionel Sambuc   BFD_RELOC_D30V_32,
3677d19d7d58SLionel Sambuc 
3678d19d7d58SLionel Sambuc /* This is a 32-bit pc-relative reloc.  */
3679d19d7d58SLionel Sambuc   BFD_RELOC_D30V_32_PCREL,
3680d19d7d58SLionel Sambuc 
3681d19d7d58SLionel Sambuc /* DLX relocs  */
3682d19d7d58SLionel Sambuc   BFD_RELOC_DLX_HI16_S,
3683d19d7d58SLionel Sambuc 
3684d19d7d58SLionel Sambuc /* DLX relocs  */
3685d19d7d58SLionel Sambuc   BFD_RELOC_DLX_LO16,
3686d19d7d58SLionel Sambuc 
3687d19d7d58SLionel Sambuc /* DLX relocs  */
3688d19d7d58SLionel Sambuc   BFD_RELOC_DLX_JMP26,
3689d19d7d58SLionel Sambuc 
3690d19d7d58SLionel Sambuc /* Renesas M16C/M32C Relocations.  */
3691d19d7d58SLionel Sambuc   BFD_RELOC_M32C_HI8,
3692d19d7d58SLionel Sambuc   BFD_RELOC_M32C_RL_JUMP,
3693d19d7d58SLionel Sambuc   BFD_RELOC_M32C_RL_1ADDR,
3694d19d7d58SLionel Sambuc   BFD_RELOC_M32C_RL_2ADDR,
3695d19d7d58SLionel Sambuc 
3696d19d7d58SLionel Sambuc /* Renesas M32R (formerly Mitsubishi M32R) relocs.
3697d19d7d58SLionel Sambuc This is a 24 bit absolute address.  */
3698d19d7d58SLionel Sambuc   BFD_RELOC_M32R_24,
3699d19d7d58SLionel Sambuc 
3700d19d7d58SLionel Sambuc /* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
3701d19d7d58SLionel Sambuc   BFD_RELOC_M32R_10_PCREL,
3702d19d7d58SLionel Sambuc 
3703d19d7d58SLionel Sambuc /* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
3704d19d7d58SLionel Sambuc   BFD_RELOC_M32R_18_PCREL,
3705d19d7d58SLionel Sambuc 
3706d19d7d58SLionel Sambuc /* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
3707d19d7d58SLionel Sambuc   BFD_RELOC_M32R_26_PCREL,
3708d19d7d58SLionel Sambuc 
3709d19d7d58SLionel Sambuc /* This is a 16-bit reloc containing the high 16 bits of an address
3710d19d7d58SLionel Sambuc used when the lower 16 bits are treated as unsigned.  */
3711d19d7d58SLionel Sambuc   BFD_RELOC_M32R_HI16_ULO,
3712d19d7d58SLionel Sambuc 
3713d19d7d58SLionel Sambuc /* This is a 16-bit reloc containing the high 16 bits of an address
3714d19d7d58SLionel Sambuc used when the lower 16 bits are treated as signed.  */
3715d19d7d58SLionel Sambuc   BFD_RELOC_M32R_HI16_SLO,
3716d19d7d58SLionel Sambuc 
3717d19d7d58SLionel Sambuc /* This is a 16-bit reloc containing the lower 16 bits of an address.  */
3718d19d7d58SLionel Sambuc   BFD_RELOC_M32R_LO16,
3719d19d7d58SLionel Sambuc 
3720d19d7d58SLionel Sambuc /* This is a 16-bit reloc containing the small data area offset for use in
3721d19d7d58SLionel Sambuc add3, load, and store instructions.  */
3722d19d7d58SLionel Sambuc   BFD_RELOC_M32R_SDA16,
3723d19d7d58SLionel Sambuc 
3724d19d7d58SLionel Sambuc /* For PIC.  */
3725d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOT24,
3726d19d7d58SLionel Sambuc   BFD_RELOC_M32R_26_PLTREL,
3727d19d7d58SLionel Sambuc   BFD_RELOC_M32R_COPY,
3728d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GLOB_DAT,
3729d19d7d58SLionel Sambuc   BFD_RELOC_M32R_JMP_SLOT,
3730d19d7d58SLionel Sambuc   BFD_RELOC_M32R_RELATIVE,
3731d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOTOFF,
3732d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOTOFF_HI_ULO,
3733d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOTOFF_HI_SLO,
3734d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOTOFF_LO,
3735d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOTPC24,
3736d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOT16_HI_ULO,
3737d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOT16_HI_SLO,
3738d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOT16_LO,
3739d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOTPC_HI_ULO,
3740d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOTPC_HI_SLO,
3741d19d7d58SLionel Sambuc   BFD_RELOC_M32R_GOTPC_LO,
3742d19d7d58SLionel Sambuc 
3743d19d7d58SLionel Sambuc /* This is a 9-bit reloc  */
3744d19d7d58SLionel Sambuc   BFD_RELOC_V850_9_PCREL,
3745d19d7d58SLionel Sambuc 
3746d19d7d58SLionel Sambuc /* This is a 22-bit reloc  */
3747d19d7d58SLionel Sambuc   BFD_RELOC_V850_22_PCREL,
3748d19d7d58SLionel Sambuc 
3749d19d7d58SLionel Sambuc /* This is a 16 bit offset from the short data area pointer.  */
3750d19d7d58SLionel Sambuc   BFD_RELOC_V850_SDA_16_16_OFFSET,
3751d19d7d58SLionel Sambuc 
3752d19d7d58SLionel Sambuc /* This is a 16 bit offset (of which only 15 bits are used) from the
3753d19d7d58SLionel Sambuc short data area pointer.  */
3754d19d7d58SLionel Sambuc   BFD_RELOC_V850_SDA_15_16_OFFSET,
3755d19d7d58SLionel Sambuc 
3756d19d7d58SLionel Sambuc /* This is a 16 bit offset from the zero data area pointer.  */
3757d19d7d58SLionel Sambuc   BFD_RELOC_V850_ZDA_16_16_OFFSET,
3758d19d7d58SLionel Sambuc 
3759d19d7d58SLionel Sambuc /* This is a 16 bit offset (of which only 15 bits are used) from the
3760d19d7d58SLionel Sambuc zero data area pointer.  */
3761d19d7d58SLionel Sambuc   BFD_RELOC_V850_ZDA_15_16_OFFSET,
3762d19d7d58SLionel Sambuc 
3763d19d7d58SLionel Sambuc /* This is an 8 bit offset (of which only 6 bits are used) from the
3764d19d7d58SLionel Sambuc tiny data area pointer.  */
3765d19d7d58SLionel Sambuc   BFD_RELOC_V850_TDA_6_8_OFFSET,
3766d19d7d58SLionel Sambuc 
3767d19d7d58SLionel Sambuc /* This is an 8bit offset (of which only 7 bits are used) from the tiny
3768d19d7d58SLionel Sambuc data area pointer.  */
3769d19d7d58SLionel Sambuc   BFD_RELOC_V850_TDA_7_8_OFFSET,
3770d19d7d58SLionel Sambuc 
3771d19d7d58SLionel Sambuc /* This is a 7 bit offset from the tiny data area pointer.  */
3772d19d7d58SLionel Sambuc   BFD_RELOC_V850_TDA_7_7_OFFSET,
3773d19d7d58SLionel Sambuc 
3774d19d7d58SLionel Sambuc /* This is a 16 bit offset from the tiny data area pointer.  */
3775d19d7d58SLionel Sambuc   BFD_RELOC_V850_TDA_16_16_OFFSET,
3776d19d7d58SLionel Sambuc 
3777d19d7d58SLionel Sambuc /* This is a 5 bit offset (of which only 4 bits are used) from the tiny
3778d19d7d58SLionel Sambuc data area pointer.  */
3779d19d7d58SLionel Sambuc   BFD_RELOC_V850_TDA_4_5_OFFSET,
3780d19d7d58SLionel Sambuc 
3781d19d7d58SLionel Sambuc /* This is a 4 bit offset from the tiny data area pointer.  */
3782d19d7d58SLionel Sambuc   BFD_RELOC_V850_TDA_4_4_OFFSET,
3783d19d7d58SLionel Sambuc 
3784d19d7d58SLionel Sambuc /* This is a 16 bit offset from the short data area pointer, with the
3785d19d7d58SLionel Sambuc bits placed non-contiguously in the instruction.  */
3786d19d7d58SLionel Sambuc   BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
3787d19d7d58SLionel Sambuc 
3788d19d7d58SLionel Sambuc /* This is a 16 bit offset from the zero data area pointer, with the
3789d19d7d58SLionel Sambuc bits placed non-contiguously in the instruction.  */
3790d19d7d58SLionel Sambuc   BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
3791d19d7d58SLionel Sambuc 
3792d19d7d58SLionel Sambuc /* This is a 6 bit offset from the call table base pointer.  */
3793d19d7d58SLionel Sambuc   BFD_RELOC_V850_CALLT_6_7_OFFSET,
3794d19d7d58SLionel Sambuc 
3795d19d7d58SLionel Sambuc /* This is a 16 bit offset from the call table base pointer.  */
3796d19d7d58SLionel Sambuc   BFD_RELOC_V850_CALLT_16_16_OFFSET,
3797d19d7d58SLionel Sambuc 
3798d19d7d58SLionel Sambuc /* Used for relaxing indirect function calls.  */
3799d19d7d58SLionel Sambuc   BFD_RELOC_V850_LONGCALL,
3800d19d7d58SLionel Sambuc 
3801d19d7d58SLionel Sambuc /* Used for relaxing indirect jumps.  */
3802d19d7d58SLionel Sambuc   BFD_RELOC_V850_LONGJUMP,
3803d19d7d58SLionel Sambuc 
3804d19d7d58SLionel Sambuc /* Used to maintain alignment whilst relaxing.  */
3805d19d7d58SLionel Sambuc   BFD_RELOC_V850_ALIGN,
3806d19d7d58SLionel Sambuc 
3807d19d7d58SLionel Sambuc /* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
3808d19d7d58SLionel Sambuc instructions.  */
3809d19d7d58SLionel Sambuc   BFD_RELOC_V850_LO16_SPLIT_OFFSET,
3810d19d7d58SLionel Sambuc 
3811d19d7d58SLionel Sambuc /* This is a 16-bit reloc.  */
3812d19d7d58SLionel Sambuc   BFD_RELOC_V850_16_PCREL,
3813d19d7d58SLionel Sambuc 
3814d19d7d58SLionel Sambuc /* This is a 17-bit reloc.  */
3815d19d7d58SLionel Sambuc   BFD_RELOC_V850_17_PCREL,
3816d19d7d58SLionel Sambuc 
3817d19d7d58SLionel Sambuc /* This is a 23-bit reloc.  */
3818d19d7d58SLionel Sambuc   BFD_RELOC_V850_23,
3819d19d7d58SLionel Sambuc 
3820d19d7d58SLionel Sambuc /* This is a 32-bit reloc.  */
3821d19d7d58SLionel Sambuc   BFD_RELOC_V850_32_PCREL,
3822d19d7d58SLionel Sambuc 
3823d19d7d58SLionel Sambuc /* This is a 32-bit reloc.  */
3824d19d7d58SLionel Sambuc   BFD_RELOC_V850_32_ABS,
3825d19d7d58SLionel Sambuc 
3826d19d7d58SLionel Sambuc /* This is a 16-bit reloc.  */
3827d19d7d58SLionel Sambuc   BFD_RELOC_V850_16_SPLIT_OFFSET,
3828d19d7d58SLionel Sambuc 
3829d19d7d58SLionel Sambuc /* This is a 16-bit reloc.  */
3830d19d7d58SLionel Sambuc   BFD_RELOC_V850_16_S1,
3831d19d7d58SLionel Sambuc 
3832d19d7d58SLionel Sambuc /* Low 16 bits. 16 bit shifted by 1.  */
3833d19d7d58SLionel Sambuc   BFD_RELOC_V850_LO16_S1,
3834d19d7d58SLionel Sambuc 
3835d19d7d58SLionel Sambuc /* This is a 16 bit offset from the call table base pointer.  */
3836d19d7d58SLionel Sambuc   BFD_RELOC_V850_CALLT_15_16_OFFSET,
3837d19d7d58SLionel Sambuc 
3838d19d7d58SLionel Sambuc /* DSO relocations.  */
3839d19d7d58SLionel Sambuc   BFD_RELOC_V850_32_GOTPCREL,
3840d19d7d58SLionel Sambuc 
3841d19d7d58SLionel Sambuc /* DSO relocations.  */
3842d19d7d58SLionel Sambuc   BFD_RELOC_V850_16_GOT,
3843d19d7d58SLionel Sambuc 
3844d19d7d58SLionel Sambuc /* DSO relocations.  */
3845d19d7d58SLionel Sambuc   BFD_RELOC_V850_32_GOT,
3846d19d7d58SLionel Sambuc 
3847d19d7d58SLionel Sambuc /* DSO relocations.  */
3848d19d7d58SLionel Sambuc   BFD_RELOC_V850_22_PLT_PCREL,
3849d19d7d58SLionel Sambuc 
3850d19d7d58SLionel Sambuc /* DSO relocations.  */
3851d19d7d58SLionel Sambuc   BFD_RELOC_V850_32_PLT_PCREL,
3852d19d7d58SLionel Sambuc 
3853d19d7d58SLionel Sambuc /* DSO relocations.  */
3854d19d7d58SLionel Sambuc   BFD_RELOC_V850_COPY,
3855d19d7d58SLionel Sambuc 
3856d19d7d58SLionel Sambuc /* DSO relocations.  */
3857d19d7d58SLionel Sambuc   BFD_RELOC_V850_GLOB_DAT,
3858d19d7d58SLionel Sambuc 
3859d19d7d58SLionel Sambuc /* DSO relocations.  */
3860d19d7d58SLionel Sambuc   BFD_RELOC_V850_JMP_SLOT,
3861d19d7d58SLionel Sambuc 
3862d19d7d58SLionel Sambuc /* DSO relocations.  */
3863d19d7d58SLionel Sambuc   BFD_RELOC_V850_RELATIVE,
3864d19d7d58SLionel Sambuc 
3865d19d7d58SLionel Sambuc /* DSO relocations.  */
3866d19d7d58SLionel Sambuc   BFD_RELOC_V850_16_GOTOFF,
3867d19d7d58SLionel Sambuc 
3868d19d7d58SLionel Sambuc /* DSO relocations.  */
3869d19d7d58SLionel Sambuc   BFD_RELOC_V850_32_GOTOFF,
3870d19d7d58SLionel Sambuc 
3871d19d7d58SLionel Sambuc /* start code.  */
3872d19d7d58SLionel Sambuc   BFD_RELOC_V850_CODE,
3873d19d7d58SLionel Sambuc 
3874d19d7d58SLionel Sambuc /* start data in text.  */
3875d19d7d58SLionel Sambuc   BFD_RELOC_V850_DATA,
3876d19d7d58SLionel Sambuc 
3877d19d7d58SLionel Sambuc /* This is a 8bit DP reloc for the tms320c30, where the most
3878d19d7d58SLionel Sambuc significant 8 bits of a 24 bit word are placed into the least
3879d19d7d58SLionel Sambuc significant 8 bits of the opcode.  */
3880d19d7d58SLionel Sambuc   BFD_RELOC_TIC30_LDP,
3881d19d7d58SLionel Sambuc 
3882d19d7d58SLionel Sambuc /* This is a 7bit reloc for the tms320c54x, where the least
3883d19d7d58SLionel Sambuc significant 7 bits of a 16 bit word are placed into the least
3884d19d7d58SLionel Sambuc significant 7 bits of the opcode.  */
3885d19d7d58SLionel Sambuc   BFD_RELOC_TIC54X_PARTLS7,
3886d19d7d58SLionel Sambuc 
3887d19d7d58SLionel Sambuc /* This is a 9bit DP reloc for the tms320c54x, where the most
3888d19d7d58SLionel Sambuc significant 9 bits of a 16 bit word are placed into the least
3889d19d7d58SLionel Sambuc significant 9 bits of the opcode.  */
3890d19d7d58SLionel Sambuc   BFD_RELOC_TIC54X_PARTMS9,
3891d19d7d58SLionel Sambuc 
3892d19d7d58SLionel Sambuc /* This is an extended address 23-bit reloc for the tms320c54x.  */
3893d19d7d58SLionel Sambuc   BFD_RELOC_TIC54X_23,
3894d19d7d58SLionel Sambuc 
3895d19d7d58SLionel Sambuc /* This is a 16-bit reloc for the tms320c54x, where the least
3896d19d7d58SLionel Sambuc significant 16 bits of a 23-bit extended address are placed into
3897d19d7d58SLionel Sambuc the opcode.  */
3898d19d7d58SLionel Sambuc   BFD_RELOC_TIC54X_16_OF_23,
3899d19d7d58SLionel Sambuc 
3900d19d7d58SLionel Sambuc /* This is a reloc for the tms320c54x, where the most
3901d19d7d58SLionel Sambuc significant 7 bits of a 23-bit extended address are placed into
3902d19d7d58SLionel Sambuc the opcode.  */
3903d19d7d58SLionel Sambuc   BFD_RELOC_TIC54X_MS7_OF_23,
3904d19d7d58SLionel Sambuc 
3905d19d7d58SLionel Sambuc /* TMS320C6000 relocations.  */
3906d19d7d58SLionel Sambuc   BFD_RELOC_C6000_PCR_S21,
3907d19d7d58SLionel Sambuc   BFD_RELOC_C6000_PCR_S12,
3908d19d7d58SLionel Sambuc   BFD_RELOC_C6000_PCR_S10,
3909d19d7d58SLionel Sambuc   BFD_RELOC_C6000_PCR_S7,
3910d19d7d58SLionel Sambuc   BFD_RELOC_C6000_ABS_S16,
3911d19d7d58SLionel Sambuc   BFD_RELOC_C6000_ABS_L16,
3912d19d7d58SLionel Sambuc   BFD_RELOC_C6000_ABS_H16,
3913d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_U15_B,
3914d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_U15_H,
3915d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_U15_W,
3916d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_S16,
3917d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_L16_B,
3918d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_L16_H,
3919d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_L16_W,
3920d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_H16_B,
3921d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_H16_H,
3922d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_H16_W,
3923d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_GOT_U15_W,
3924d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_GOT_L16_W,
3925d19d7d58SLionel Sambuc   BFD_RELOC_C6000_SBR_GOT_H16_W,
3926d19d7d58SLionel Sambuc   BFD_RELOC_C6000_DSBT_INDEX,
3927d19d7d58SLionel Sambuc   BFD_RELOC_C6000_PREL31,
3928d19d7d58SLionel Sambuc   BFD_RELOC_C6000_COPY,
3929c566d462SLionel Sambuc   BFD_RELOC_C6000_JUMP_SLOT,
3930c566d462SLionel Sambuc   BFD_RELOC_C6000_EHTYPE,
3931c566d462SLionel Sambuc   BFD_RELOC_C6000_PCR_H16,
3932c566d462SLionel Sambuc   BFD_RELOC_C6000_PCR_L16,
3933d19d7d58SLionel Sambuc   BFD_RELOC_C6000_ALIGN,
3934d19d7d58SLionel Sambuc   BFD_RELOC_C6000_FPHEAD,
3935d19d7d58SLionel Sambuc   BFD_RELOC_C6000_NOCMP,
3936d19d7d58SLionel Sambuc 
3937d19d7d58SLionel Sambuc /* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
3938d19d7d58SLionel Sambuc   BFD_RELOC_FR30_48,
3939d19d7d58SLionel Sambuc 
3940d19d7d58SLionel Sambuc /* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
3941d19d7d58SLionel Sambuc two sections.  */
3942d19d7d58SLionel Sambuc   BFD_RELOC_FR30_20,
3943d19d7d58SLionel Sambuc 
3944d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
3945d19d7d58SLionel Sambuc 4 bits.  */
3946d19d7d58SLionel Sambuc   BFD_RELOC_FR30_6_IN_4,
3947d19d7d58SLionel Sambuc 
3948d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
3949d19d7d58SLionel Sambuc into 8 bits.  */
3950d19d7d58SLionel Sambuc   BFD_RELOC_FR30_8_IN_8,
3951d19d7d58SLionel Sambuc 
3952d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
3953d19d7d58SLionel Sambuc into 8 bits.  */
3954d19d7d58SLionel Sambuc   BFD_RELOC_FR30_9_IN_8,
3955d19d7d58SLionel Sambuc 
3956d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
3957d19d7d58SLionel Sambuc into 8 bits.  */
3958d19d7d58SLionel Sambuc   BFD_RELOC_FR30_10_IN_8,
3959d19d7d58SLionel Sambuc 
3960d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
3961d19d7d58SLionel Sambuc short offset into 8 bits.  */
3962d19d7d58SLionel Sambuc   BFD_RELOC_FR30_9_PCREL,
3963d19d7d58SLionel Sambuc 
3964d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
3965d19d7d58SLionel Sambuc short offset into 11 bits.  */
3966d19d7d58SLionel Sambuc   BFD_RELOC_FR30_12_PCREL,
3967d19d7d58SLionel Sambuc 
3968d19d7d58SLionel Sambuc /* Motorola Mcore relocations.  */
3969d19d7d58SLionel Sambuc   BFD_RELOC_MCORE_PCREL_IMM8BY4,
3970d19d7d58SLionel Sambuc   BFD_RELOC_MCORE_PCREL_IMM11BY2,
3971d19d7d58SLionel Sambuc   BFD_RELOC_MCORE_PCREL_IMM4BY2,
3972d19d7d58SLionel Sambuc   BFD_RELOC_MCORE_PCREL_32,
3973d19d7d58SLionel Sambuc   BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
3974d19d7d58SLionel Sambuc   BFD_RELOC_MCORE_RVA,
3975d19d7d58SLionel Sambuc 
3976d19d7d58SLionel Sambuc /* Toshiba Media Processor Relocations.  */
3977d19d7d58SLionel Sambuc   BFD_RELOC_MEP_8,
3978d19d7d58SLionel Sambuc   BFD_RELOC_MEP_16,
3979d19d7d58SLionel Sambuc   BFD_RELOC_MEP_32,
3980d19d7d58SLionel Sambuc   BFD_RELOC_MEP_PCREL8A2,
3981d19d7d58SLionel Sambuc   BFD_RELOC_MEP_PCREL12A2,
3982d19d7d58SLionel Sambuc   BFD_RELOC_MEP_PCREL17A2,
3983d19d7d58SLionel Sambuc   BFD_RELOC_MEP_PCREL24A2,
3984d19d7d58SLionel Sambuc   BFD_RELOC_MEP_PCABS24A2,
3985d19d7d58SLionel Sambuc   BFD_RELOC_MEP_LOW16,
3986d19d7d58SLionel Sambuc   BFD_RELOC_MEP_HI16U,
3987d19d7d58SLionel Sambuc   BFD_RELOC_MEP_HI16S,
3988d19d7d58SLionel Sambuc   BFD_RELOC_MEP_GPREL,
3989d19d7d58SLionel Sambuc   BFD_RELOC_MEP_TPREL,
3990d19d7d58SLionel Sambuc   BFD_RELOC_MEP_TPREL7,
3991d19d7d58SLionel Sambuc   BFD_RELOC_MEP_TPREL7A2,
3992d19d7d58SLionel Sambuc   BFD_RELOC_MEP_TPREL7A4,
3993d19d7d58SLionel Sambuc   BFD_RELOC_MEP_UIMM24,
3994d19d7d58SLionel Sambuc   BFD_RELOC_MEP_ADDR24A4,
3995d19d7d58SLionel Sambuc   BFD_RELOC_MEP_GNU_VTINHERIT,
3996d19d7d58SLionel Sambuc   BFD_RELOC_MEP_GNU_VTENTRY,
3997d19d7d58SLionel Sambuc 
3998d19d7d58SLionel Sambuc 
3999d19d7d58SLionel Sambuc /* These are relocations for the GETA instruction.  */
4000d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_GETA,
4001d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_GETA_1,
4002d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_GETA_2,
4003d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_GETA_3,
4004d19d7d58SLionel Sambuc 
4005d19d7d58SLionel Sambuc /* These are relocations for a conditional branch instruction.  */
4006d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_CBRANCH,
4007d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_CBRANCH_J,
4008d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_CBRANCH_1,
4009d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_CBRANCH_2,
4010d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_CBRANCH_3,
4011d19d7d58SLionel Sambuc 
4012d19d7d58SLionel Sambuc /* These are relocations for the PUSHJ instruction.  */
4013d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_PUSHJ,
4014d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_PUSHJ_1,
4015d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_PUSHJ_2,
4016d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_PUSHJ_3,
4017d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
4018d19d7d58SLionel Sambuc 
4019d19d7d58SLionel Sambuc /* These are relocations for the JMP instruction.  */
4020d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_JMP,
4021d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_JMP_1,
4022d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_JMP_2,
4023d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_JMP_3,
4024d19d7d58SLionel Sambuc 
4025d19d7d58SLionel Sambuc /* This is a relocation for a relative address as in a GETA instruction or
4026d19d7d58SLionel Sambuc a branch.  */
4027d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_ADDR19,
4028d19d7d58SLionel Sambuc 
4029d19d7d58SLionel Sambuc /* This is a relocation for a relative address as in a JMP instruction.  */
4030d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_ADDR27,
4031d19d7d58SLionel Sambuc 
4032d19d7d58SLionel Sambuc /* This is a relocation for an instruction field that may be a general
4033d19d7d58SLionel Sambuc register or a value 0..255.  */
4034d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_REG_OR_BYTE,
4035d19d7d58SLionel Sambuc 
4036d19d7d58SLionel Sambuc /* This is a relocation for an instruction field that may be a general
4037d19d7d58SLionel Sambuc register.  */
4038d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_REG,
4039d19d7d58SLionel Sambuc 
4040d19d7d58SLionel Sambuc /* This is a relocation for two instruction fields holding a register and
4041d19d7d58SLionel Sambuc an offset, the equivalent of the relocation.  */
4042d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
4043d19d7d58SLionel Sambuc 
4044d19d7d58SLionel Sambuc /* This relocation is an assertion that the expression is not allocated as
4045d19d7d58SLionel Sambuc a global register.  It does not modify contents.  */
4046d19d7d58SLionel Sambuc   BFD_RELOC_MMIX_LOCAL,
4047d19d7d58SLionel Sambuc 
4048d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
4049d19d7d58SLionel Sambuc short offset into 7 bits.  */
4050d19d7d58SLionel Sambuc   BFD_RELOC_AVR_7_PCREL,
4051d19d7d58SLionel Sambuc 
4052d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
4053d19d7d58SLionel Sambuc short offset into 12 bits.  */
4054d19d7d58SLionel Sambuc   BFD_RELOC_AVR_13_PCREL,
4055d19d7d58SLionel Sambuc 
4056d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
4057d19d7d58SLionel Sambuc program memory address) into 16 bits.  */
4058d19d7d58SLionel Sambuc   BFD_RELOC_AVR_16_PM,
4059d19d7d58SLionel Sambuc 
4060d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4061d19d7d58SLionel Sambuc data memory address) into 8 bit immediate value of LDI insn.  */
4062d19d7d58SLionel Sambuc   BFD_RELOC_AVR_LO8_LDI,
4063d19d7d58SLionel Sambuc 
4064d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4065d19d7d58SLionel Sambuc of data memory address) into 8 bit immediate value of LDI insn.  */
4066d19d7d58SLionel Sambuc   BFD_RELOC_AVR_HI8_LDI,
4067d19d7d58SLionel Sambuc 
4068d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4069d19d7d58SLionel Sambuc of program memory address) into 8 bit immediate value of LDI insn.  */
4070d19d7d58SLionel Sambuc   BFD_RELOC_AVR_HH8_LDI,
4071d19d7d58SLionel Sambuc 
4072d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4073d19d7d58SLionel Sambuc of 32 bit value) into 8 bit immediate value of LDI insn.  */
4074d19d7d58SLionel Sambuc   BFD_RELOC_AVR_MS8_LDI,
4075d19d7d58SLionel Sambuc 
4076d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4077d19d7d58SLionel Sambuc (usually data memory address) into 8 bit immediate value of SUBI insn.  */
4078d19d7d58SLionel Sambuc   BFD_RELOC_AVR_LO8_LDI_NEG,
4079d19d7d58SLionel Sambuc 
4080d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4081d19d7d58SLionel Sambuc (high 8 bit of data memory address) into 8 bit immediate value of
4082d19d7d58SLionel Sambuc SUBI insn.  */
4083d19d7d58SLionel Sambuc   BFD_RELOC_AVR_HI8_LDI_NEG,
4084d19d7d58SLionel Sambuc 
4085d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4086d19d7d58SLionel Sambuc (most high 8 bit of program memory address) into 8 bit immediate value
4087d19d7d58SLionel Sambuc of LDI or SUBI insn.  */
4088d19d7d58SLionel Sambuc   BFD_RELOC_AVR_HH8_LDI_NEG,
4089d19d7d58SLionel Sambuc 
4090d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
4091d19d7d58SLionel Sambuc of 32 bit value) into 8 bit immediate value of LDI insn.  */
4092d19d7d58SLionel Sambuc   BFD_RELOC_AVR_MS8_LDI_NEG,
4093d19d7d58SLionel Sambuc 
4094d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4095d19d7d58SLionel Sambuc command address) into 8 bit immediate value of LDI insn.  */
4096d19d7d58SLionel Sambuc   BFD_RELOC_AVR_LO8_LDI_PM,
4097d19d7d58SLionel Sambuc 
4098d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value
4099d19d7d58SLionel Sambuc (command address) into 8 bit immediate value of LDI insn. If the address
4100d19d7d58SLionel Sambuc is beyond the 128k boundary, the linker inserts a jump stub for this reloc
4101d19d7d58SLionel Sambuc in the lower 128k.  */
4102d19d7d58SLionel Sambuc   BFD_RELOC_AVR_LO8_LDI_GS,
4103d19d7d58SLionel Sambuc 
4104d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4105d19d7d58SLionel Sambuc of command address) into 8 bit immediate value of LDI insn.  */
4106d19d7d58SLionel Sambuc   BFD_RELOC_AVR_HI8_LDI_PM,
4107d19d7d58SLionel Sambuc 
4108d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4109d19d7d58SLionel Sambuc of command address) into 8 bit immediate value of LDI insn.  If the address
4110d19d7d58SLionel Sambuc is beyond the 128k boundary, the linker inserts a jump stub for this reloc
4111d19d7d58SLionel Sambuc below 128k.  */
4112d19d7d58SLionel Sambuc   BFD_RELOC_AVR_HI8_LDI_GS,
4113d19d7d58SLionel Sambuc 
4114d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4115d19d7d58SLionel Sambuc of command address) into 8 bit immediate value of LDI insn.  */
4116d19d7d58SLionel Sambuc   BFD_RELOC_AVR_HH8_LDI_PM,
4117d19d7d58SLionel Sambuc 
4118d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4119d19d7d58SLionel Sambuc (usually command address) into 8 bit immediate value of SUBI insn.  */
4120d19d7d58SLionel Sambuc   BFD_RELOC_AVR_LO8_LDI_PM_NEG,
4121d19d7d58SLionel Sambuc 
4122d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4123d19d7d58SLionel Sambuc (high 8 bit of 16 bit command address) into 8 bit immediate value
4124d19d7d58SLionel Sambuc of SUBI insn.  */
4125d19d7d58SLionel Sambuc   BFD_RELOC_AVR_HI8_LDI_PM_NEG,
4126d19d7d58SLionel Sambuc 
4127d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4128d19d7d58SLionel Sambuc (high 6 bit of 22 bit command address) into 8 bit immediate
4129d19d7d58SLionel Sambuc value of SUBI insn.  */
4130d19d7d58SLionel Sambuc   BFD_RELOC_AVR_HH8_LDI_PM_NEG,
4131d19d7d58SLionel Sambuc 
4132d19d7d58SLionel Sambuc /* This is a 32 bit reloc for the AVR that stores 23 bit value
4133d19d7d58SLionel Sambuc into 22 bits.  */
4134d19d7d58SLionel Sambuc   BFD_RELOC_AVR_CALL,
4135d19d7d58SLionel Sambuc 
4136d19d7d58SLionel Sambuc /* This is a 16 bit reloc for the AVR that stores all needed bits
4137d19d7d58SLionel Sambuc for absolute addressing with ldi with overflow check to linktime  */
4138d19d7d58SLionel Sambuc   BFD_RELOC_AVR_LDI,
4139d19d7d58SLionel Sambuc 
4140d19d7d58SLionel Sambuc /* This is a 6 bit reloc for the AVR that stores offset for ldd/std
4141d19d7d58SLionel Sambuc instructions  */
4142d19d7d58SLionel Sambuc   BFD_RELOC_AVR_6,
4143d19d7d58SLionel Sambuc 
4144d19d7d58SLionel Sambuc /* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
4145d19d7d58SLionel Sambuc instructions  */
4146d19d7d58SLionel Sambuc   BFD_RELOC_AVR_6_ADIW,
4147d19d7d58SLionel Sambuc 
4148*c9ea9e7aSLionel Sambuc /* This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
4149*c9ea9e7aSLionel Sambuc in .byte lo8(symbol)  */
4150*c9ea9e7aSLionel Sambuc   BFD_RELOC_AVR_8_LO,
4151*c9ea9e7aSLionel Sambuc 
4152*c9ea9e7aSLionel Sambuc /* This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
4153*c9ea9e7aSLionel Sambuc in .byte hi8(symbol)  */
4154*c9ea9e7aSLionel Sambuc   BFD_RELOC_AVR_8_HI,
4155*c9ea9e7aSLionel Sambuc 
4156*c9ea9e7aSLionel Sambuc /* This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
4157*c9ea9e7aSLionel Sambuc in .byte hlo8(symbol)  */
4158*c9ea9e7aSLionel Sambuc   BFD_RELOC_AVR_8_HLO,
4159*c9ea9e7aSLionel Sambuc 
4160*c9ea9e7aSLionel Sambuc /* Renesas RL78 Relocations.  */
4161*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_NEG8,
4162*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_NEG16,
4163*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_NEG24,
4164*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_NEG32,
4165*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_16_OP,
4166*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_24_OP,
4167*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_32_OP,
4168*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_8U,
4169*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_16U,
4170*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_24U,
4171*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_DIR3U_PCREL,
4172*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_DIFF,
4173*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_GPRELB,
4174*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_GPRELW,
4175*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_GPRELL,
4176*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_SYM,
4177*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_OP_SUBTRACT,
4178*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_OP_NEG,
4179*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_OP_AND,
4180*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_OP_SHRA,
4181*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_ABS8,
4182*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_ABS16,
4183*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_ABS16_REV,
4184*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_ABS32,
4185*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_ABS32_REV,
4186*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_ABS16U,
4187*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_ABS16UW,
4188*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_ABS16UL,
4189*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_RELAX,
4190*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_HI16,
4191*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_HI8,
4192*c9ea9e7aSLionel Sambuc   BFD_RELOC_RL78_LO16,
4193*c9ea9e7aSLionel Sambuc 
4194d19d7d58SLionel Sambuc /* Renesas RX Relocations.  */
4195d19d7d58SLionel Sambuc   BFD_RELOC_RX_NEG8,
4196d19d7d58SLionel Sambuc   BFD_RELOC_RX_NEG16,
4197d19d7d58SLionel Sambuc   BFD_RELOC_RX_NEG24,
4198d19d7d58SLionel Sambuc   BFD_RELOC_RX_NEG32,
4199d19d7d58SLionel Sambuc   BFD_RELOC_RX_16_OP,
4200d19d7d58SLionel Sambuc   BFD_RELOC_RX_24_OP,
4201d19d7d58SLionel Sambuc   BFD_RELOC_RX_32_OP,
4202d19d7d58SLionel Sambuc   BFD_RELOC_RX_8U,
4203d19d7d58SLionel Sambuc   BFD_RELOC_RX_16U,
4204d19d7d58SLionel Sambuc   BFD_RELOC_RX_24U,
4205d19d7d58SLionel Sambuc   BFD_RELOC_RX_DIR3U_PCREL,
4206d19d7d58SLionel Sambuc   BFD_RELOC_RX_DIFF,
4207d19d7d58SLionel Sambuc   BFD_RELOC_RX_GPRELB,
4208d19d7d58SLionel Sambuc   BFD_RELOC_RX_GPRELW,
4209d19d7d58SLionel Sambuc   BFD_RELOC_RX_GPRELL,
4210d19d7d58SLionel Sambuc   BFD_RELOC_RX_SYM,
4211d19d7d58SLionel Sambuc   BFD_RELOC_RX_OP_SUBTRACT,
4212c566d462SLionel Sambuc   BFD_RELOC_RX_OP_NEG,
4213d19d7d58SLionel Sambuc   BFD_RELOC_RX_ABS8,
4214d19d7d58SLionel Sambuc   BFD_RELOC_RX_ABS16,
4215c566d462SLionel Sambuc   BFD_RELOC_RX_ABS16_REV,
4216d19d7d58SLionel Sambuc   BFD_RELOC_RX_ABS32,
4217c566d462SLionel Sambuc   BFD_RELOC_RX_ABS32_REV,
4218d19d7d58SLionel Sambuc   BFD_RELOC_RX_ABS16U,
4219d19d7d58SLionel Sambuc   BFD_RELOC_RX_ABS16UW,
4220d19d7d58SLionel Sambuc   BFD_RELOC_RX_ABS16UL,
4221d19d7d58SLionel Sambuc   BFD_RELOC_RX_RELAX,
4222d19d7d58SLionel Sambuc 
4223d19d7d58SLionel Sambuc /* Direct 12 bit.  */
4224d19d7d58SLionel Sambuc   BFD_RELOC_390_12,
4225d19d7d58SLionel Sambuc 
4226d19d7d58SLionel Sambuc /* 12 bit GOT offset.  */
4227d19d7d58SLionel Sambuc   BFD_RELOC_390_GOT12,
4228d19d7d58SLionel Sambuc 
4229d19d7d58SLionel Sambuc /* 32 bit PC relative PLT address.  */
4230d19d7d58SLionel Sambuc   BFD_RELOC_390_PLT32,
4231d19d7d58SLionel Sambuc 
4232d19d7d58SLionel Sambuc /* Copy symbol at runtime.  */
4233d19d7d58SLionel Sambuc   BFD_RELOC_390_COPY,
4234d19d7d58SLionel Sambuc 
4235d19d7d58SLionel Sambuc /* Create GOT entry.  */
4236d19d7d58SLionel Sambuc   BFD_RELOC_390_GLOB_DAT,
4237d19d7d58SLionel Sambuc 
4238d19d7d58SLionel Sambuc /* Create PLT entry.  */
4239d19d7d58SLionel Sambuc   BFD_RELOC_390_JMP_SLOT,
4240d19d7d58SLionel Sambuc 
4241d19d7d58SLionel Sambuc /* Adjust by program base.  */
4242d19d7d58SLionel Sambuc   BFD_RELOC_390_RELATIVE,
4243d19d7d58SLionel Sambuc 
4244d19d7d58SLionel Sambuc /* 32 bit PC relative offset to GOT.  */
4245d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTPC,
4246d19d7d58SLionel Sambuc 
4247d19d7d58SLionel Sambuc /* 16 bit GOT offset.  */
4248d19d7d58SLionel Sambuc   BFD_RELOC_390_GOT16,
4249d19d7d58SLionel Sambuc 
4250d19d7d58SLionel Sambuc /* PC relative 16 bit shifted by 1.  */
4251d19d7d58SLionel Sambuc   BFD_RELOC_390_PC16DBL,
4252d19d7d58SLionel Sambuc 
4253d19d7d58SLionel Sambuc /* 16 bit PC rel. PLT shifted by 1.  */
4254d19d7d58SLionel Sambuc   BFD_RELOC_390_PLT16DBL,
4255d19d7d58SLionel Sambuc 
4256d19d7d58SLionel Sambuc /* PC relative 32 bit shifted by 1.  */
4257d19d7d58SLionel Sambuc   BFD_RELOC_390_PC32DBL,
4258d19d7d58SLionel Sambuc 
4259d19d7d58SLionel Sambuc /* 32 bit PC rel. PLT shifted by 1.  */
4260d19d7d58SLionel Sambuc   BFD_RELOC_390_PLT32DBL,
4261d19d7d58SLionel Sambuc 
4262d19d7d58SLionel Sambuc /* 32 bit PC rel. GOT shifted by 1.  */
4263d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTPCDBL,
4264d19d7d58SLionel Sambuc 
4265d19d7d58SLionel Sambuc /* 64 bit GOT offset.  */
4266d19d7d58SLionel Sambuc   BFD_RELOC_390_GOT64,
4267d19d7d58SLionel Sambuc 
4268d19d7d58SLionel Sambuc /* 64 bit PC relative PLT address.  */
4269d19d7d58SLionel Sambuc   BFD_RELOC_390_PLT64,
4270d19d7d58SLionel Sambuc 
4271d19d7d58SLionel Sambuc /* 32 bit rel. offset to GOT entry.  */
4272d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTENT,
4273d19d7d58SLionel Sambuc 
4274d19d7d58SLionel Sambuc /* 64 bit offset to GOT.  */
4275d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTOFF64,
4276d19d7d58SLionel Sambuc 
4277d19d7d58SLionel Sambuc /* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
4278d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTPLT12,
4279d19d7d58SLionel Sambuc 
4280d19d7d58SLionel Sambuc /* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
4281d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTPLT16,
4282d19d7d58SLionel Sambuc 
4283d19d7d58SLionel Sambuc /* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
4284d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTPLT32,
4285d19d7d58SLionel Sambuc 
4286d19d7d58SLionel Sambuc /* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
4287d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTPLT64,
4288d19d7d58SLionel Sambuc 
4289d19d7d58SLionel Sambuc /* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
4290d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTPLTENT,
4291d19d7d58SLionel Sambuc 
4292d19d7d58SLionel Sambuc /* 16-bit rel. offset from the GOT to a PLT entry.  */
4293d19d7d58SLionel Sambuc   BFD_RELOC_390_PLTOFF16,
4294d19d7d58SLionel Sambuc 
4295d19d7d58SLionel Sambuc /* 32-bit rel. offset from the GOT to a PLT entry.  */
4296d19d7d58SLionel Sambuc   BFD_RELOC_390_PLTOFF32,
4297d19d7d58SLionel Sambuc 
4298d19d7d58SLionel Sambuc /* 64-bit rel. offset from the GOT to a PLT entry.  */
4299d19d7d58SLionel Sambuc   BFD_RELOC_390_PLTOFF64,
4300d19d7d58SLionel Sambuc 
4301d19d7d58SLionel Sambuc /* s390 tls relocations.  */
4302d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_LOAD,
4303d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_GDCALL,
4304d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_LDCALL,
4305d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_GD32,
4306d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_GD64,
4307d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_GOTIE12,
4308d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_GOTIE32,
4309d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_GOTIE64,
4310d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_LDM32,
4311d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_LDM64,
4312d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_IE32,
4313d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_IE64,
4314d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_IEENT,
4315d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_LE32,
4316d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_LE64,
4317d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_LDO32,
4318d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_LDO64,
4319d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_DTPMOD,
4320d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_DTPOFF,
4321d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_TPOFF,
4322d19d7d58SLionel Sambuc 
4323d19d7d58SLionel Sambuc /* Long displacement extension.  */
4324d19d7d58SLionel Sambuc   BFD_RELOC_390_20,
4325d19d7d58SLionel Sambuc   BFD_RELOC_390_GOT20,
4326d19d7d58SLionel Sambuc   BFD_RELOC_390_GOTPLT20,
4327d19d7d58SLionel Sambuc   BFD_RELOC_390_TLS_GOTIE20,
4328d19d7d58SLionel Sambuc 
4329*c9ea9e7aSLionel Sambuc /* STT_GNU_IFUNC relocation.  */
4330*c9ea9e7aSLionel Sambuc   BFD_RELOC_390_IRELATIVE,
4331*c9ea9e7aSLionel Sambuc 
4332d19d7d58SLionel Sambuc /* Score relocations
4333d19d7d58SLionel Sambuc Low 16 bit for load/store  */
4334d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_GPREL15,
4335d19d7d58SLionel Sambuc 
4336d19d7d58SLionel Sambuc /* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
4337d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_DUMMY2,
4338d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_JMP,
4339d19d7d58SLionel Sambuc 
4340d19d7d58SLionel Sambuc /* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
4341d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_BRANCH,
4342d19d7d58SLionel Sambuc 
4343d19d7d58SLionel Sambuc /* This is a 32-bit reloc for 48-bit instructions.  */
4344d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_IMM30,
4345d19d7d58SLionel Sambuc 
4346d19d7d58SLionel Sambuc /* This is a 32-bit reloc for 48-bit instructions.  */
4347d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_IMM32,
4348d19d7d58SLionel Sambuc 
4349d19d7d58SLionel Sambuc /* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
4350d19d7d58SLionel Sambuc   BFD_RELOC_SCORE16_JMP,
4351d19d7d58SLionel Sambuc 
4352d19d7d58SLionel Sambuc /* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
4353d19d7d58SLionel Sambuc   BFD_RELOC_SCORE16_BRANCH,
4354d19d7d58SLionel Sambuc 
4355d19d7d58SLionel Sambuc /* This is a 9-bit reloc with the right 1 bit assumed to be 0  */
4356d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_BCMP,
4357d19d7d58SLionel Sambuc 
4358d19d7d58SLionel Sambuc /* Undocumented Score relocs  */
4359d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_GOT15,
4360d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_GOT_LO16,
4361d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_CALL15,
4362d19d7d58SLionel Sambuc   BFD_RELOC_SCORE_DUMMY_HI16,
4363d19d7d58SLionel Sambuc 
4364d19d7d58SLionel Sambuc /* Scenix IP2K - 9-bit register number / data address  */
4365d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_FR9,
4366d19d7d58SLionel Sambuc 
4367d19d7d58SLionel Sambuc /* Scenix IP2K - 4-bit register/data bank number  */
4368d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_BANK,
4369d19d7d58SLionel Sambuc 
4370d19d7d58SLionel Sambuc /* Scenix IP2K - low 13 bits of instruction word address  */
4371d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_ADDR16CJP,
4372d19d7d58SLionel Sambuc 
4373d19d7d58SLionel Sambuc /* Scenix IP2K - high 3 bits of instruction word address  */
4374d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_PAGE3,
4375d19d7d58SLionel Sambuc 
4376d19d7d58SLionel Sambuc /* Scenix IP2K - ext/low/high 8 bits of data address  */
4377d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_LO8DATA,
4378d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_HI8DATA,
4379d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_EX8DATA,
4380d19d7d58SLionel Sambuc 
4381d19d7d58SLionel Sambuc /* Scenix IP2K - low/high 8 bits of instruction word address  */
4382d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_LO8INSN,
4383d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_HI8INSN,
4384d19d7d58SLionel Sambuc 
4385d19d7d58SLionel Sambuc /* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
4386d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_PC_SKIP,
4387d19d7d58SLionel Sambuc 
4388d19d7d58SLionel Sambuc /* Scenix IP2K - 16 bit word address in text section.  */
4389d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_TEXT,
4390d19d7d58SLionel Sambuc 
4391d19d7d58SLionel Sambuc /* Scenix IP2K - 7-bit sp or dp offset  */
4392d19d7d58SLionel Sambuc   BFD_RELOC_IP2K_FR_OFFSET,
4393d19d7d58SLionel Sambuc 
4394d19d7d58SLionel Sambuc /* Scenix VPE4K coprocessor - data/insn-space addressing  */
4395d19d7d58SLionel Sambuc   BFD_RELOC_VPE4KMATH_DATA,
4396d19d7d58SLionel Sambuc   BFD_RELOC_VPE4KMATH_INSN,
4397d19d7d58SLionel Sambuc 
4398d19d7d58SLionel Sambuc /* These two relocations are used by the linker to determine which of
4399d19d7d58SLionel Sambuc the entries in a C++ virtual function table are actually used.  When
4400d19d7d58SLionel Sambuc the --gc-sections option is given, the linker will zero out the entries
4401d19d7d58SLionel Sambuc that are not used, so that the code for those functions need not be
4402d19d7d58SLionel Sambuc included in the output.
4403d19d7d58SLionel Sambuc 
4404d19d7d58SLionel Sambuc VTABLE_INHERIT is a zero-space relocation used to describe to the
4405d19d7d58SLionel Sambuc linker the inheritance tree of a C++ virtual function table.  The
4406d19d7d58SLionel Sambuc relocation's symbol should be the parent class' vtable, and the
4407d19d7d58SLionel Sambuc relocation should be located at the child vtable.
4408d19d7d58SLionel Sambuc 
4409d19d7d58SLionel Sambuc VTABLE_ENTRY is a zero-space relocation that describes the use of a
4410d19d7d58SLionel Sambuc virtual function table entry.  The reloc's symbol should refer to the
4411d19d7d58SLionel Sambuc table of the class mentioned in the code.  Off of that base, an offset
4412d19d7d58SLionel Sambuc describes the entry that is being used.  For Rela hosts, this offset
4413d19d7d58SLionel Sambuc is stored in the reloc's addend.  For Rel hosts, we are forced to put
4414d19d7d58SLionel Sambuc this offset in the reloc's section offset.  */
4415d19d7d58SLionel Sambuc   BFD_RELOC_VTABLE_INHERIT,
4416d19d7d58SLionel Sambuc   BFD_RELOC_VTABLE_ENTRY,
4417d19d7d58SLionel Sambuc 
4418d19d7d58SLionel Sambuc /* Intel IA64 Relocations.  */
4419d19d7d58SLionel Sambuc   BFD_RELOC_IA64_IMM14,
4420d19d7d58SLionel Sambuc   BFD_RELOC_IA64_IMM22,
4421d19d7d58SLionel Sambuc   BFD_RELOC_IA64_IMM64,
4422d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DIR32MSB,
4423d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DIR32LSB,
4424d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DIR64MSB,
4425d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DIR64LSB,
4426d19d7d58SLionel Sambuc   BFD_RELOC_IA64_GPREL22,
4427d19d7d58SLionel Sambuc   BFD_RELOC_IA64_GPREL64I,
4428d19d7d58SLionel Sambuc   BFD_RELOC_IA64_GPREL32MSB,
4429d19d7d58SLionel Sambuc   BFD_RELOC_IA64_GPREL32LSB,
4430d19d7d58SLionel Sambuc   BFD_RELOC_IA64_GPREL64MSB,
4431d19d7d58SLionel Sambuc   BFD_RELOC_IA64_GPREL64LSB,
4432d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF22,
4433d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF64I,
4434d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PLTOFF22,
4435d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PLTOFF64I,
4436d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PLTOFF64MSB,
4437d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PLTOFF64LSB,
4438d19d7d58SLionel Sambuc   BFD_RELOC_IA64_FPTR64I,
4439d19d7d58SLionel Sambuc   BFD_RELOC_IA64_FPTR32MSB,
4440d19d7d58SLionel Sambuc   BFD_RELOC_IA64_FPTR32LSB,
4441d19d7d58SLionel Sambuc   BFD_RELOC_IA64_FPTR64MSB,
4442d19d7d58SLionel Sambuc   BFD_RELOC_IA64_FPTR64LSB,
4443d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL21B,
4444d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL21BI,
4445d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL21M,
4446d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL21F,
4447d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL22,
4448d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL60B,
4449d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL64I,
4450d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL32MSB,
4451d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL32LSB,
4452d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL64MSB,
4453d19d7d58SLionel Sambuc   BFD_RELOC_IA64_PCREL64LSB,
4454d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR22,
4455d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR64I,
4456d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR32MSB,
4457d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR32LSB,
4458d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR64MSB,
4459d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR64LSB,
4460d19d7d58SLionel Sambuc   BFD_RELOC_IA64_SEGREL32MSB,
4461d19d7d58SLionel Sambuc   BFD_RELOC_IA64_SEGREL32LSB,
4462d19d7d58SLionel Sambuc   BFD_RELOC_IA64_SEGREL64MSB,
4463d19d7d58SLionel Sambuc   BFD_RELOC_IA64_SEGREL64LSB,
4464d19d7d58SLionel Sambuc   BFD_RELOC_IA64_SECREL32MSB,
4465d19d7d58SLionel Sambuc   BFD_RELOC_IA64_SECREL32LSB,
4466d19d7d58SLionel Sambuc   BFD_RELOC_IA64_SECREL64MSB,
4467d19d7d58SLionel Sambuc   BFD_RELOC_IA64_SECREL64LSB,
4468d19d7d58SLionel Sambuc   BFD_RELOC_IA64_REL32MSB,
4469d19d7d58SLionel Sambuc   BFD_RELOC_IA64_REL32LSB,
4470d19d7d58SLionel Sambuc   BFD_RELOC_IA64_REL64MSB,
4471d19d7d58SLionel Sambuc   BFD_RELOC_IA64_REL64LSB,
4472d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTV32MSB,
4473d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTV32LSB,
4474d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTV64MSB,
4475d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTV64LSB,
4476d19d7d58SLionel Sambuc   BFD_RELOC_IA64_IPLTMSB,
4477d19d7d58SLionel Sambuc   BFD_RELOC_IA64_IPLTLSB,
4478d19d7d58SLionel Sambuc   BFD_RELOC_IA64_COPY,
4479d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF22X,
4480d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LDXMOV,
4481d19d7d58SLionel Sambuc   BFD_RELOC_IA64_TPREL14,
4482d19d7d58SLionel Sambuc   BFD_RELOC_IA64_TPREL22,
4483d19d7d58SLionel Sambuc   BFD_RELOC_IA64_TPREL64I,
4484d19d7d58SLionel Sambuc   BFD_RELOC_IA64_TPREL64MSB,
4485d19d7d58SLionel Sambuc   BFD_RELOC_IA64_TPREL64LSB,
4486d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF_TPREL22,
4487d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DTPMOD64MSB,
4488d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DTPMOD64LSB,
4489d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF_DTPMOD22,
4490d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DTPREL14,
4491d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DTPREL22,
4492d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DTPREL64I,
4493d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DTPREL32MSB,
4494d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DTPREL32LSB,
4495d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DTPREL64MSB,
4496d19d7d58SLionel Sambuc   BFD_RELOC_IA64_DTPREL64LSB,
4497d19d7d58SLionel Sambuc   BFD_RELOC_IA64_LTOFF_DTPREL22,
4498d19d7d58SLionel Sambuc 
4499d19d7d58SLionel Sambuc /* Motorola 68HC11 reloc.
4500d19d7d58SLionel Sambuc This is the 8 bit high part of an absolute address.  */
4501d19d7d58SLionel Sambuc   BFD_RELOC_M68HC11_HI8,
4502d19d7d58SLionel Sambuc 
4503d19d7d58SLionel Sambuc /* Motorola 68HC11 reloc.
4504d19d7d58SLionel Sambuc This is the 8 bit low part of an absolute address.  */
4505d19d7d58SLionel Sambuc   BFD_RELOC_M68HC11_LO8,
4506d19d7d58SLionel Sambuc 
4507d19d7d58SLionel Sambuc /* Motorola 68HC11 reloc.
4508d19d7d58SLionel Sambuc This is the 3 bit of a value.  */
4509d19d7d58SLionel Sambuc   BFD_RELOC_M68HC11_3B,
4510d19d7d58SLionel Sambuc 
4511d19d7d58SLionel Sambuc /* Motorola 68HC11 reloc.
4512d19d7d58SLionel Sambuc This reloc marks the beginning of a jump/call instruction.
4513d19d7d58SLionel Sambuc It is used for linker relaxation to correctly identify beginning
4514d19d7d58SLionel Sambuc of instruction and change some branches to use PC-relative
4515d19d7d58SLionel Sambuc addressing mode.  */
4516d19d7d58SLionel Sambuc   BFD_RELOC_M68HC11_RL_JUMP,
4517d19d7d58SLionel Sambuc 
4518d19d7d58SLionel Sambuc /* Motorola 68HC11 reloc.
4519d19d7d58SLionel Sambuc This reloc marks a group of several instructions that gcc generates
4520d19d7d58SLionel Sambuc and for which the linker relaxation pass can modify and/or remove
4521d19d7d58SLionel Sambuc some of them.  */
4522d19d7d58SLionel Sambuc   BFD_RELOC_M68HC11_RL_GROUP,
4523d19d7d58SLionel Sambuc 
4524d19d7d58SLionel Sambuc /* Motorola 68HC11 reloc.
4525d19d7d58SLionel Sambuc This is the 16-bit lower part of an address.  It is used for 'call'
4526d19d7d58SLionel Sambuc instruction to specify the symbol address without any special
4527d19d7d58SLionel Sambuc transformation (due to memory bank window).  */
4528d19d7d58SLionel Sambuc   BFD_RELOC_M68HC11_LO16,
4529d19d7d58SLionel Sambuc 
4530d19d7d58SLionel Sambuc /* Motorola 68HC11 reloc.
4531d19d7d58SLionel Sambuc This is a 8-bit reloc that specifies the page number of an address.
4532d19d7d58SLionel Sambuc It is used by 'call' instruction to specify the page number of
4533d19d7d58SLionel Sambuc the symbol.  */
4534d19d7d58SLionel Sambuc   BFD_RELOC_M68HC11_PAGE,
4535d19d7d58SLionel Sambuc 
4536d19d7d58SLionel Sambuc /* Motorola 68HC11 reloc.
4537d19d7d58SLionel Sambuc This is a 24-bit reloc that represents the address with a 16-bit
4538d19d7d58SLionel Sambuc value and a 8-bit page number.  The symbol address is transformed
4539d19d7d58SLionel Sambuc to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
4540d19d7d58SLionel Sambuc   BFD_RELOC_M68HC11_24,
4541d19d7d58SLionel Sambuc 
4542d19d7d58SLionel Sambuc /* Motorola 68HC12 reloc.
4543d19d7d58SLionel Sambuc This is the 5 bits of a value.  */
4544d19d7d58SLionel Sambuc   BFD_RELOC_M68HC12_5B,
4545d19d7d58SLionel Sambuc 
4546*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4547*c9ea9e7aSLionel Sambuc This reloc marks the beginning of a bra/jal instruction.  */
4548*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_RL_JUMP,
4549*c9ea9e7aSLionel Sambuc 
4550*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4551*c9ea9e7aSLionel Sambuc This reloc marks a group of several instructions that gcc generates
4552*c9ea9e7aSLionel Sambuc and for which the linker relaxation pass can modify and/or remove
4553*c9ea9e7aSLionel Sambuc some of them.  */
4554*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_RL_GROUP,
4555*c9ea9e7aSLionel Sambuc 
4556*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4557*c9ea9e7aSLionel Sambuc This is the 16-bit lower part of an address.  It is used for the '16-bit'
4558*c9ea9e7aSLionel Sambuc instructions.  */
4559*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_LO16,
4560*c9ea9e7aSLionel Sambuc 
4561*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.  */
4562*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_GPAGE,
4563*c9ea9e7aSLionel Sambuc 
4564*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.  */
4565*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_24,
4566*c9ea9e7aSLionel Sambuc 
4567*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4568*c9ea9e7aSLionel Sambuc This is a 9-bit pc-relative reloc.  */
4569*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_PCREL_9,
4570*c9ea9e7aSLionel Sambuc 
4571*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4572*c9ea9e7aSLionel Sambuc This is a 10-bit pc-relative reloc.  */
4573*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_PCREL_10,
4574*c9ea9e7aSLionel Sambuc 
4575*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4576*c9ea9e7aSLionel Sambuc This is the 16-bit lower part of an address.  It is used for the '16-bit'
4577*c9ea9e7aSLionel Sambuc instructions.  */
4578*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_IMM8_LO,
4579*c9ea9e7aSLionel Sambuc 
4580*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4581*c9ea9e7aSLionel Sambuc This is the 16-bit higher part of an address.  It is used for the '16-bit'
4582*c9ea9e7aSLionel Sambuc instructions.  */
4583*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_IMM8_HI,
4584*c9ea9e7aSLionel Sambuc 
4585*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4586*c9ea9e7aSLionel Sambuc This is a 3-bit pc-relative reloc.  */
4587*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_IMM3,
4588*c9ea9e7aSLionel Sambuc 
4589*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4590*c9ea9e7aSLionel Sambuc This is a 4-bit pc-relative reloc.  */
4591*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_IMM4,
4592*c9ea9e7aSLionel Sambuc 
4593*c9ea9e7aSLionel Sambuc /* Freescale XGATE reloc.
4594*c9ea9e7aSLionel Sambuc This is a 5-bit pc-relative reloc.  */
4595*c9ea9e7aSLionel Sambuc   BFD_RELOC_XGATE_IMM5,
4596*c9ea9e7aSLionel Sambuc 
4597*c9ea9e7aSLionel Sambuc /* Motorola 68HC12 reloc.
4598*c9ea9e7aSLionel Sambuc This is the 9 bits of a value.  */
4599*c9ea9e7aSLionel Sambuc   BFD_RELOC_M68HC12_9B,
4600*c9ea9e7aSLionel Sambuc 
4601*c9ea9e7aSLionel Sambuc /* Motorola 68HC12 reloc.
4602*c9ea9e7aSLionel Sambuc This is the 16 bits of a value.  */
4603*c9ea9e7aSLionel Sambuc   BFD_RELOC_M68HC12_16B,
4604*c9ea9e7aSLionel Sambuc 
4605*c9ea9e7aSLionel Sambuc /* Motorola 68HC12/XGATE reloc.
4606*c9ea9e7aSLionel Sambuc This is a PCREL9 branch.  */
4607*c9ea9e7aSLionel Sambuc   BFD_RELOC_M68HC12_9_PCREL,
4608*c9ea9e7aSLionel Sambuc 
4609*c9ea9e7aSLionel Sambuc /* Motorola 68HC12/XGATE reloc.
4610*c9ea9e7aSLionel Sambuc This is a PCREL10 branch.  */
4611*c9ea9e7aSLionel Sambuc   BFD_RELOC_M68HC12_10_PCREL,
4612*c9ea9e7aSLionel Sambuc 
4613*c9ea9e7aSLionel Sambuc /* Motorola 68HC12/XGATE reloc.
4614*c9ea9e7aSLionel Sambuc This is the 8 bit low part of an absolute address and immediately precedes
4615*c9ea9e7aSLionel Sambuc a matching HI8XG part.  */
4616*c9ea9e7aSLionel Sambuc   BFD_RELOC_M68HC12_LO8XG,
4617*c9ea9e7aSLionel Sambuc 
4618*c9ea9e7aSLionel Sambuc /* Motorola 68HC12/XGATE reloc.
4619*c9ea9e7aSLionel Sambuc This is the 8 bit high part of an absolute address and immediately follows
4620*c9ea9e7aSLionel Sambuc a matching LO8XG part.  */
4621*c9ea9e7aSLionel Sambuc   BFD_RELOC_M68HC12_HI8XG,
4622*c9ea9e7aSLionel Sambuc 
4623d19d7d58SLionel Sambuc /* NS CR16C Relocations.  */
4624d19d7d58SLionel Sambuc   BFD_RELOC_16C_NUM08,
4625d19d7d58SLionel Sambuc   BFD_RELOC_16C_NUM08_C,
4626d19d7d58SLionel Sambuc   BFD_RELOC_16C_NUM16,
4627d19d7d58SLionel Sambuc   BFD_RELOC_16C_NUM16_C,
4628d19d7d58SLionel Sambuc   BFD_RELOC_16C_NUM32,
4629d19d7d58SLionel Sambuc   BFD_RELOC_16C_NUM32_C,
4630d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP04,
4631d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP04_C,
4632d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP08,
4633d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP08_C,
4634d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP16,
4635d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP16_C,
4636d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP24,
4637d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP24_C,
4638d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP24a,
4639d19d7d58SLionel Sambuc   BFD_RELOC_16C_DISP24a_C,
4640d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG04,
4641d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG04_C,
4642d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG04a,
4643d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG04a_C,
4644d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG14,
4645d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG14_C,
4646d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG16,
4647d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG16_C,
4648d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG20,
4649d19d7d58SLionel Sambuc   BFD_RELOC_16C_REG20_C,
4650d19d7d58SLionel Sambuc   BFD_RELOC_16C_ABS20,
4651d19d7d58SLionel Sambuc   BFD_RELOC_16C_ABS20_C,
4652d19d7d58SLionel Sambuc   BFD_RELOC_16C_ABS24,
4653d19d7d58SLionel Sambuc   BFD_RELOC_16C_ABS24_C,
4654d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM04,
4655d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM04_C,
4656d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM16,
4657d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM16_C,
4658d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM20,
4659d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM20_C,
4660d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM24,
4661d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM24_C,
4662d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM32,
4663d19d7d58SLionel Sambuc   BFD_RELOC_16C_IMM32_C,
4664d19d7d58SLionel Sambuc 
4665d19d7d58SLionel Sambuc /* NS CR16 Relocations.  */
4666d19d7d58SLionel Sambuc   BFD_RELOC_CR16_NUM8,
4667d19d7d58SLionel Sambuc   BFD_RELOC_CR16_NUM16,
4668d19d7d58SLionel Sambuc   BFD_RELOC_CR16_NUM32,
4669d19d7d58SLionel Sambuc   BFD_RELOC_CR16_NUM32a,
4670d19d7d58SLionel Sambuc   BFD_RELOC_CR16_REGREL0,
4671d19d7d58SLionel Sambuc   BFD_RELOC_CR16_REGREL4,
4672d19d7d58SLionel Sambuc   BFD_RELOC_CR16_REGREL4a,
4673d19d7d58SLionel Sambuc   BFD_RELOC_CR16_REGREL14,
4674d19d7d58SLionel Sambuc   BFD_RELOC_CR16_REGREL14a,
4675d19d7d58SLionel Sambuc   BFD_RELOC_CR16_REGREL16,
4676d19d7d58SLionel Sambuc   BFD_RELOC_CR16_REGREL20,
4677d19d7d58SLionel Sambuc   BFD_RELOC_CR16_REGREL20a,
4678d19d7d58SLionel Sambuc   BFD_RELOC_CR16_ABS20,
4679d19d7d58SLionel Sambuc   BFD_RELOC_CR16_ABS24,
4680d19d7d58SLionel Sambuc   BFD_RELOC_CR16_IMM4,
4681d19d7d58SLionel Sambuc   BFD_RELOC_CR16_IMM8,
4682d19d7d58SLionel Sambuc   BFD_RELOC_CR16_IMM16,
4683d19d7d58SLionel Sambuc   BFD_RELOC_CR16_IMM20,
4684d19d7d58SLionel Sambuc   BFD_RELOC_CR16_IMM24,
4685d19d7d58SLionel Sambuc   BFD_RELOC_CR16_IMM32,
4686d19d7d58SLionel Sambuc   BFD_RELOC_CR16_IMM32a,
4687d19d7d58SLionel Sambuc   BFD_RELOC_CR16_DISP4,
4688d19d7d58SLionel Sambuc   BFD_RELOC_CR16_DISP8,
4689d19d7d58SLionel Sambuc   BFD_RELOC_CR16_DISP16,
4690d19d7d58SLionel Sambuc   BFD_RELOC_CR16_DISP20,
4691d19d7d58SLionel Sambuc   BFD_RELOC_CR16_DISP24,
4692d19d7d58SLionel Sambuc   BFD_RELOC_CR16_DISP24a,
4693d19d7d58SLionel Sambuc   BFD_RELOC_CR16_SWITCH8,
4694d19d7d58SLionel Sambuc   BFD_RELOC_CR16_SWITCH16,
4695d19d7d58SLionel Sambuc   BFD_RELOC_CR16_SWITCH32,
4696d19d7d58SLionel Sambuc   BFD_RELOC_CR16_GOT_REGREL20,
4697d19d7d58SLionel Sambuc   BFD_RELOC_CR16_GOTC_REGREL20,
4698d19d7d58SLionel Sambuc   BFD_RELOC_CR16_GLOB_DAT,
4699d19d7d58SLionel Sambuc 
4700d19d7d58SLionel Sambuc /* NS CRX Relocations.  */
4701d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REL4,
4702d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REL8,
4703d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REL8_CMP,
4704d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REL16,
4705d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REL24,
4706d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REL32,
4707d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REGREL12,
4708d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REGREL22,
4709d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REGREL28,
4710d19d7d58SLionel Sambuc   BFD_RELOC_CRX_REGREL32,
4711d19d7d58SLionel Sambuc   BFD_RELOC_CRX_ABS16,
4712d19d7d58SLionel Sambuc   BFD_RELOC_CRX_ABS32,
4713d19d7d58SLionel Sambuc   BFD_RELOC_CRX_NUM8,
4714d19d7d58SLionel Sambuc   BFD_RELOC_CRX_NUM16,
4715d19d7d58SLionel Sambuc   BFD_RELOC_CRX_NUM32,
4716d19d7d58SLionel Sambuc   BFD_RELOC_CRX_IMM16,
4717d19d7d58SLionel Sambuc   BFD_RELOC_CRX_IMM32,
4718d19d7d58SLionel Sambuc   BFD_RELOC_CRX_SWITCH8,
4719d19d7d58SLionel Sambuc   BFD_RELOC_CRX_SWITCH16,
4720d19d7d58SLionel Sambuc   BFD_RELOC_CRX_SWITCH32,
4721d19d7d58SLionel Sambuc 
4722d19d7d58SLionel Sambuc /* These relocs are only used within the CRIS assembler.  They are not
4723d19d7d58SLionel Sambuc (at present) written to any object files.  */
4724d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_BDISP8,
4725d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_5,
4726d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_SIGNED_6,
4727d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_6,
4728d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_SIGNED_8,
4729d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_8,
4730d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_SIGNED_16,
4731d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_16,
4732d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_LAPCQ_OFFSET,
4733d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_4,
4734d19d7d58SLionel Sambuc 
4735d19d7d58SLionel Sambuc /* Relocs used in ELF shared libraries for CRIS.  */
4736d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_COPY,
4737d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_GLOB_DAT,
4738d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_JUMP_SLOT,
4739d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_RELATIVE,
4740d19d7d58SLionel Sambuc 
4741d19d7d58SLionel Sambuc /* 32-bit offset to symbol-entry within GOT.  */
4742d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_GOT,
4743d19d7d58SLionel Sambuc 
4744d19d7d58SLionel Sambuc /* 16-bit offset to symbol-entry within GOT.  */
4745d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_16_GOT,
4746d19d7d58SLionel Sambuc 
4747d19d7d58SLionel Sambuc /* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
4748d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_GOTPLT,
4749d19d7d58SLionel Sambuc 
4750d19d7d58SLionel Sambuc /* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
4751d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_16_GOTPLT,
4752d19d7d58SLionel Sambuc 
4753d19d7d58SLionel Sambuc /* 32-bit offset to symbol, relative to GOT.  */
4754d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_GOTREL,
4755d19d7d58SLionel Sambuc 
4756d19d7d58SLionel Sambuc /* 32-bit offset to symbol with PLT entry, relative to GOT.  */
4757d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_PLT_GOTREL,
4758d19d7d58SLionel Sambuc 
4759d19d7d58SLionel Sambuc /* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
4760d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_PLT_PCREL,
4761d19d7d58SLionel Sambuc 
4762d19d7d58SLionel Sambuc /* Relocs used in TLS code for CRIS.  */
4763d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_GOT_GD,
4764d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_16_GOT_GD,
4765d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_GD,
4766d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_DTP,
4767d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_DTPREL,
4768d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_16_DTPREL,
4769d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_GOT_TPREL,
4770d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_16_GOT_TPREL,
4771d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_TPREL,
4772d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_16_TPREL,
4773d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_DTPMOD,
4774d19d7d58SLionel Sambuc   BFD_RELOC_CRIS_32_IE,
4775d19d7d58SLionel Sambuc 
4776d19d7d58SLionel Sambuc /* Intel i860 Relocations.  */
4777d19d7d58SLionel Sambuc   BFD_RELOC_860_COPY,
4778d19d7d58SLionel Sambuc   BFD_RELOC_860_GLOB_DAT,
4779d19d7d58SLionel Sambuc   BFD_RELOC_860_JUMP_SLOT,
4780d19d7d58SLionel Sambuc   BFD_RELOC_860_RELATIVE,
4781d19d7d58SLionel Sambuc   BFD_RELOC_860_PC26,
4782d19d7d58SLionel Sambuc   BFD_RELOC_860_PLT26,
4783d19d7d58SLionel Sambuc   BFD_RELOC_860_PC16,
4784d19d7d58SLionel Sambuc   BFD_RELOC_860_LOW0,
4785d19d7d58SLionel Sambuc   BFD_RELOC_860_SPLIT0,
4786d19d7d58SLionel Sambuc   BFD_RELOC_860_LOW1,
4787d19d7d58SLionel Sambuc   BFD_RELOC_860_SPLIT1,
4788d19d7d58SLionel Sambuc   BFD_RELOC_860_LOW2,
4789d19d7d58SLionel Sambuc   BFD_RELOC_860_SPLIT2,
4790d19d7d58SLionel Sambuc   BFD_RELOC_860_LOW3,
4791d19d7d58SLionel Sambuc   BFD_RELOC_860_LOGOT0,
4792d19d7d58SLionel Sambuc   BFD_RELOC_860_SPGOT0,
4793d19d7d58SLionel Sambuc   BFD_RELOC_860_LOGOT1,
4794d19d7d58SLionel Sambuc   BFD_RELOC_860_SPGOT1,
4795d19d7d58SLionel Sambuc   BFD_RELOC_860_LOGOTOFF0,
4796d19d7d58SLionel Sambuc   BFD_RELOC_860_SPGOTOFF0,
4797d19d7d58SLionel Sambuc   BFD_RELOC_860_LOGOTOFF1,
4798d19d7d58SLionel Sambuc   BFD_RELOC_860_SPGOTOFF1,
4799d19d7d58SLionel Sambuc   BFD_RELOC_860_LOGOTOFF2,
4800d19d7d58SLionel Sambuc   BFD_RELOC_860_LOGOTOFF3,
4801d19d7d58SLionel Sambuc   BFD_RELOC_860_LOPC,
4802d19d7d58SLionel Sambuc   BFD_RELOC_860_HIGHADJ,
4803d19d7d58SLionel Sambuc   BFD_RELOC_860_HAGOT,
4804d19d7d58SLionel Sambuc   BFD_RELOC_860_HAGOTOFF,
4805d19d7d58SLionel Sambuc   BFD_RELOC_860_HAPC,
4806d19d7d58SLionel Sambuc   BFD_RELOC_860_HIGH,
4807d19d7d58SLionel Sambuc   BFD_RELOC_860_HIGOT,
4808d19d7d58SLionel Sambuc   BFD_RELOC_860_HIGOTOFF,
4809d19d7d58SLionel Sambuc 
4810d19d7d58SLionel Sambuc /* OpenRISC Relocations.  */
4811d19d7d58SLionel Sambuc   BFD_RELOC_OPENRISC_ABS_26,
4812d19d7d58SLionel Sambuc   BFD_RELOC_OPENRISC_REL_26,
4813d19d7d58SLionel Sambuc 
4814d19d7d58SLionel Sambuc /* H8 elf Relocations.  */
4815d19d7d58SLionel Sambuc   BFD_RELOC_H8_DIR16A8,
4816d19d7d58SLionel Sambuc   BFD_RELOC_H8_DIR16R8,
4817d19d7d58SLionel Sambuc   BFD_RELOC_H8_DIR24A8,
4818d19d7d58SLionel Sambuc   BFD_RELOC_H8_DIR24R8,
4819d19d7d58SLionel Sambuc   BFD_RELOC_H8_DIR32A16,
4820d19d7d58SLionel Sambuc 
4821d19d7d58SLionel Sambuc /* Sony Xstormy16 Relocations.  */
4822d19d7d58SLionel Sambuc   BFD_RELOC_XSTORMY16_REL_12,
4823d19d7d58SLionel Sambuc   BFD_RELOC_XSTORMY16_12,
4824d19d7d58SLionel Sambuc   BFD_RELOC_XSTORMY16_24,
4825d19d7d58SLionel Sambuc   BFD_RELOC_XSTORMY16_FPTR16,
4826d19d7d58SLionel Sambuc 
4827d19d7d58SLionel Sambuc /* Self-describing complex relocations.  */
4828d19d7d58SLionel Sambuc   BFD_RELOC_RELC,
4829d19d7d58SLionel Sambuc 
4830d19d7d58SLionel Sambuc 
4831d19d7d58SLionel Sambuc /* Infineon Relocations.  */
4832d19d7d58SLionel Sambuc   BFD_RELOC_XC16X_PAG,
4833d19d7d58SLionel Sambuc   BFD_RELOC_XC16X_POF,
4834d19d7d58SLionel Sambuc   BFD_RELOC_XC16X_SEG,
4835d19d7d58SLionel Sambuc   BFD_RELOC_XC16X_SOF,
4836d19d7d58SLionel Sambuc 
4837d19d7d58SLionel Sambuc /* Relocations used by VAX ELF.  */
4838d19d7d58SLionel Sambuc   BFD_RELOC_VAX_GLOB_DAT,
4839d19d7d58SLionel Sambuc   BFD_RELOC_VAX_JMP_SLOT,
4840d19d7d58SLionel Sambuc   BFD_RELOC_VAX_RELATIVE,
4841d19d7d58SLionel Sambuc 
4842d19d7d58SLionel Sambuc /* Morpho MT - 16 bit immediate relocation.  */
4843d19d7d58SLionel Sambuc   BFD_RELOC_MT_PC16,
4844d19d7d58SLionel Sambuc 
4845d19d7d58SLionel Sambuc /* Morpho MT - Hi 16 bits of an address.  */
4846d19d7d58SLionel Sambuc   BFD_RELOC_MT_HI16,
4847d19d7d58SLionel Sambuc 
4848d19d7d58SLionel Sambuc /* Morpho MT - Low 16 bits of an address.  */
4849d19d7d58SLionel Sambuc   BFD_RELOC_MT_LO16,
4850d19d7d58SLionel Sambuc 
4851d19d7d58SLionel Sambuc /* Morpho MT - Used to tell the linker which vtable entries are used.  */
4852d19d7d58SLionel Sambuc   BFD_RELOC_MT_GNU_VTINHERIT,
4853d19d7d58SLionel Sambuc 
4854d19d7d58SLionel Sambuc /* Morpho MT - Used to tell the linker which vtable entries are used.  */
4855d19d7d58SLionel Sambuc   BFD_RELOC_MT_GNU_VTENTRY,
4856d19d7d58SLionel Sambuc 
4857d19d7d58SLionel Sambuc /* Morpho MT - 8 bit immediate relocation.  */
4858d19d7d58SLionel Sambuc   BFD_RELOC_MT_PCINSN8,
4859d19d7d58SLionel Sambuc 
4860d19d7d58SLionel Sambuc /* msp430 specific relocation codes  */
4861d19d7d58SLionel Sambuc   BFD_RELOC_MSP430_10_PCREL,
4862d19d7d58SLionel Sambuc   BFD_RELOC_MSP430_16_PCREL,
4863d19d7d58SLionel Sambuc   BFD_RELOC_MSP430_16,
4864d19d7d58SLionel Sambuc   BFD_RELOC_MSP430_16_PCREL_BYTE,
4865d19d7d58SLionel Sambuc   BFD_RELOC_MSP430_16_BYTE,
4866d19d7d58SLionel Sambuc   BFD_RELOC_MSP430_2X_PCREL,
4867d19d7d58SLionel Sambuc   BFD_RELOC_MSP430_RL_PCREL,
4868d19d7d58SLionel Sambuc 
4869d19d7d58SLionel Sambuc /* IQ2000 Relocations.  */
4870d19d7d58SLionel Sambuc   BFD_RELOC_IQ2000_OFFSET_16,
4871d19d7d58SLionel Sambuc   BFD_RELOC_IQ2000_OFFSET_21,
4872d19d7d58SLionel Sambuc   BFD_RELOC_IQ2000_UHI16,
4873d19d7d58SLionel Sambuc 
4874d19d7d58SLionel Sambuc /* Special Xtensa relocation used only by PLT entries in ELF shared
4875d19d7d58SLionel Sambuc objects to indicate that the runtime linker should set the value
4876d19d7d58SLionel Sambuc to one of its own internal functions or data structures.  */
4877d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_RTLD,
4878d19d7d58SLionel Sambuc 
4879d19d7d58SLionel Sambuc /* Xtensa relocations for ELF shared objects.  */
4880d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_GLOB_DAT,
4881d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_JMP_SLOT,
4882d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_RELATIVE,
4883d19d7d58SLionel Sambuc 
4884d19d7d58SLionel Sambuc /* Xtensa relocation used in ELF object files for symbols that may require
4885d19d7d58SLionel Sambuc PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
4886d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_PLT,
4887d19d7d58SLionel Sambuc 
4888d19d7d58SLionel Sambuc /* Xtensa relocations to mark the difference of two local symbols.
4889d19d7d58SLionel Sambuc These are only needed to support linker relaxation and can be ignored
4890d19d7d58SLionel Sambuc when not relaxing.  The field is set to the value of the difference
4891d19d7d58SLionel Sambuc assuming no relaxation.  The relocation encodes the position of the
4892d19d7d58SLionel Sambuc first symbol so the linker can determine whether to adjust the field
4893d19d7d58SLionel Sambuc value.  */
4894d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_DIFF8,
4895d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_DIFF16,
4896d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_DIFF32,
4897d19d7d58SLionel Sambuc 
4898d19d7d58SLionel Sambuc /* Generic Xtensa relocations for instruction operands.  Only the slot
4899d19d7d58SLionel Sambuc number is encoded in the relocation.  The relocation applies to the
4900d19d7d58SLionel Sambuc last PC-relative immediate operand, or if there are no PC-relative
4901d19d7d58SLionel Sambuc immediates, to the last immediate operand.  */
4902d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT0_OP,
4903d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT1_OP,
4904d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT2_OP,
4905d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT3_OP,
4906d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT4_OP,
4907d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT5_OP,
4908d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT6_OP,
4909d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT7_OP,
4910d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT8_OP,
4911d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT9_OP,
4912d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT10_OP,
4913d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT11_OP,
4914d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT12_OP,
4915d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT13_OP,
4916d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT14_OP,
4917d19d7d58SLionel Sambuc 
4918d19d7d58SLionel Sambuc /* Alternate Xtensa relocations.  Only the slot is encoded in the
4919d19d7d58SLionel Sambuc relocation.  The meaning of these relocations is opcode-specific.  */
4920d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT0_ALT,
4921d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT1_ALT,
4922d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT2_ALT,
4923d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT3_ALT,
4924d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT4_ALT,
4925d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT5_ALT,
4926d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT6_ALT,
4927d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT7_ALT,
4928d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT8_ALT,
4929d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT9_ALT,
4930d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT10_ALT,
4931d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT11_ALT,
4932d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT12_ALT,
4933d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT13_ALT,
4934d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_SLOT14_ALT,
4935d19d7d58SLionel Sambuc 
4936d19d7d58SLionel Sambuc /* Xtensa relocations for backward compatibility.  These have all been
4937d19d7d58SLionel Sambuc replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
4938d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_OP0,
4939d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_OP1,
4940d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_OP2,
4941d19d7d58SLionel Sambuc 
4942d19d7d58SLionel Sambuc /* Xtensa relocation to mark that the assembler expanded the
4943d19d7d58SLionel Sambuc instructions from an original target.  The expansion size is
4944d19d7d58SLionel Sambuc encoded in the reloc size.  */
4945d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_ASM_EXPAND,
4946d19d7d58SLionel Sambuc 
4947d19d7d58SLionel Sambuc /* Xtensa relocation to mark that the linker should simplify
4948d19d7d58SLionel Sambuc assembler-expanded instructions.  This is commonly used
4949d19d7d58SLionel Sambuc internally by the linker after analysis of a
4950d19d7d58SLionel Sambuc BFD_RELOC_XTENSA_ASM_EXPAND.  */
4951d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_ASM_SIMPLIFY,
4952d19d7d58SLionel Sambuc 
4953d19d7d58SLionel Sambuc /* Xtensa TLS relocations.  */
4954d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_TLSDESC_FN,
4955d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_TLSDESC_ARG,
4956d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_TLS_DTPOFF,
4957d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_TLS_TPOFF,
4958d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_TLS_FUNC,
4959d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_TLS_ARG,
4960d19d7d58SLionel Sambuc   BFD_RELOC_XTENSA_TLS_CALL,
4961d19d7d58SLionel Sambuc 
4962d19d7d58SLionel Sambuc /* 8 bit signed offset in (ix+d) or (iy+d).  */
4963d19d7d58SLionel Sambuc   BFD_RELOC_Z80_DISP8,
4964d19d7d58SLionel Sambuc 
4965d19d7d58SLionel Sambuc /* DJNZ offset.  */
4966d19d7d58SLionel Sambuc   BFD_RELOC_Z8K_DISP7,
4967d19d7d58SLionel Sambuc 
4968d19d7d58SLionel Sambuc /* CALR offset.  */
4969d19d7d58SLionel Sambuc   BFD_RELOC_Z8K_CALLR,
4970d19d7d58SLionel Sambuc 
4971d19d7d58SLionel Sambuc /* 4 bit value.  */
4972d19d7d58SLionel Sambuc   BFD_RELOC_Z8K_IMM4L,
4973d19d7d58SLionel Sambuc 
4974d19d7d58SLionel Sambuc /* Lattice Mico32 relocations.  */
4975d19d7d58SLionel Sambuc   BFD_RELOC_LM32_CALL,
4976d19d7d58SLionel Sambuc   BFD_RELOC_LM32_BRANCH,
4977d19d7d58SLionel Sambuc   BFD_RELOC_LM32_16_GOT,
4978d19d7d58SLionel Sambuc   BFD_RELOC_LM32_GOTOFF_HI16,
4979d19d7d58SLionel Sambuc   BFD_RELOC_LM32_GOTOFF_LO16,
4980d19d7d58SLionel Sambuc   BFD_RELOC_LM32_COPY,
4981d19d7d58SLionel Sambuc   BFD_RELOC_LM32_GLOB_DAT,
4982d19d7d58SLionel Sambuc   BFD_RELOC_LM32_JMP_SLOT,
4983d19d7d58SLionel Sambuc   BFD_RELOC_LM32_RELATIVE,
4984d19d7d58SLionel Sambuc 
4985d19d7d58SLionel Sambuc /* Difference between two section addreses.  Must be followed by a
4986d19d7d58SLionel Sambuc BFD_RELOC_MACH_O_PAIR.  */
4987d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_SECTDIFF,
4988d19d7d58SLionel Sambuc 
4989*c9ea9e7aSLionel Sambuc /* Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.  */
4990*c9ea9e7aSLionel Sambuc   BFD_RELOC_MACH_O_LOCAL_SECTDIFF,
4991*c9ea9e7aSLionel Sambuc 
4992d19d7d58SLionel Sambuc /* Pair of relocation.  Contains the first symbol.  */
4993d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_PAIR,
4994d19d7d58SLionel Sambuc 
4995d19d7d58SLionel Sambuc /* PCREL relocations.  They are marked as branch to create PLT entry if
4996d19d7d58SLionel Sambuc required.  */
4997d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_X86_64_BRANCH32,
4998d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_X86_64_BRANCH8,
4999d19d7d58SLionel Sambuc 
5000d19d7d58SLionel Sambuc /* Used when referencing a GOT entry.  */
5001d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_X86_64_GOT,
5002d19d7d58SLionel Sambuc 
5003d19d7d58SLionel Sambuc /* Used when loading a GOT entry with movq.  It is specially marked so that
5004d19d7d58SLionel Sambuc the linker could optimize the movq to a leaq if possible.  */
5005d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_X86_64_GOT_LOAD,
5006d19d7d58SLionel Sambuc 
5007d19d7d58SLionel Sambuc /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
5008d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32,
5009d19d7d58SLionel Sambuc 
5010d19d7d58SLionel Sambuc /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
5011d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64,
5012d19d7d58SLionel Sambuc 
5013d19d7d58SLionel Sambuc /* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.  */
5014d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_X86_64_PCREL32_1,
5015d19d7d58SLionel Sambuc 
5016d19d7d58SLionel Sambuc /* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.  */
5017d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_X86_64_PCREL32_2,
5018d19d7d58SLionel Sambuc 
5019d19d7d58SLionel Sambuc /* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.  */
5020d19d7d58SLionel Sambuc   BFD_RELOC_MACH_O_X86_64_PCREL32_4,
5021d19d7d58SLionel Sambuc 
5022d19d7d58SLionel Sambuc /* This is a 32 bit reloc for the microblaze that stores the
5023d19d7d58SLionel Sambuc low 16 bits of a value  */
5024d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_32_LO,
5025d19d7d58SLionel Sambuc 
5026d19d7d58SLionel Sambuc /* This is a 32 bit pc-relative reloc for the microblaze that
5027d19d7d58SLionel Sambuc stores the low 16 bits of a value  */
5028d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_32_LO_PCREL,
5029d19d7d58SLionel Sambuc 
5030d19d7d58SLionel Sambuc /* This is a 32 bit reloc for the microblaze that stores a
5031d19d7d58SLionel Sambuc value relative to the read-only small data area anchor  */
5032d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_32_ROSDA,
5033d19d7d58SLionel Sambuc 
5034d19d7d58SLionel Sambuc /* This is a 32 bit reloc for the microblaze that stores a
5035d19d7d58SLionel Sambuc value relative to the read-write small data area anchor  */
5036d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_32_RWSDA,
5037d19d7d58SLionel Sambuc 
5038d19d7d58SLionel Sambuc /* This is a 32 bit reloc for the microblaze to handle
5039d19d7d58SLionel Sambuc expressions of the form "Symbol Op Symbol"  */
5040d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM,
5041d19d7d58SLionel Sambuc 
5042d19d7d58SLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit pc relative
5043d19d7d58SLionel Sambuc value in two words (with an imm instruction).  No relocation is
5044d19d7d58SLionel Sambuc done here - only used for relaxing  */
5045d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_64_NONE,
5046d19d7d58SLionel Sambuc 
5047d19d7d58SLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit pc relative
5048d19d7d58SLionel Sambuc value in two words (with an imm instruction).  The relocation is
5049d19d7d58SLionel Sambuc PC-relative GOT offset  */
5050d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_64_GOTPC,
5051d19d7d58SLionel Sambuc 
5052d19d7d58SLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit pc relative
5053d19d7d58SLionel Sambuc value in two words (with an imm instruction).  The relocation is
5054d19d7d58SLionel Sambuc GOT offset  */
5055d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_64_GOT,
5056d19d7d58SLionel Sambuc 
5057d19d7d58SLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit pc relative
5058d19d7d58SLionel Sambuc value in two words (with an imm instruction).  The relocation is
5059d19d7d58SLionel Sambuc PC-relative offset into PLT  */
5060d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_64_PLT,
5061d19d7d58SLionel Sambuc 
5062d19d7d58SLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit GOT relative
5063d19d7d58SLionel Sambuc value in two words (with an imm instruction).  The relocation is
5064d19d7d58SLionel Sambuc relative offset from _GLOBAL_OFFSET_TABLE_  */
5065d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_64_GOTOFF,
5066d19d7d58SLionel Sambuc 
5067d19d7d58SLionel Sambuc /* This is a 32 bit reloc that stores the 32 bit GOT relative
5068d19d7d58SLionel Sambuc value in a word.  The relocation is relative offset from  */
5069d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_32_GOTOFF,
5070d19d7d58SLionel Sambuc 
5071d19d7d58SLionel Sambuc /* This is used to tell the dynamic linker to copy the value out of
5072d19d7d58SLionel Sambuc the dynamic object into the runtime process image.  */
5073d19d7d58SLionel Sambuc   BFD_RELOC_MICROBLAZE_COPY,
5074c566d462SLionel Sambuc 
5075*c9ea9e7aSLionel Sambuc /* AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
5076*c9ea9e7aSLionel Sambuc Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5077*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_ADD_LO12,
5078*c9ea9e7aSLionel Sambuc 
5079*c9ea9e7aSLionel Sambuc /* Get to the page base of the global offset table entry for a symbol as
5080*c9ea9e7aSLionel Sambuc part of an ADRP instruction using a 21 bit PC relative value.Used in
5081*c9ea9e7aSLionel Sambuc conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.  */
5082*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_ADR_GOT_PAGE,
5083*c9ea9e7aSLionel Sambuc 
5084*c9ea9e7aSLionel Sambuc /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
5085*c9ea9e7aSLionel Sambuc offset, giving a 4KB aligned page base address.  */
5086*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_ADR_HI21_PCREL,
5087*c9ea9e7aSLionel Sambuc 
5088*c9ea9e7aSLionel Sambuc /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
5089*c9ea9e7aSLionel Sambuc offset, giving a 4KB aligned page base address, but with no overflow
5090*c9ea9e7aSLionel Sambuc checking.  */
5091*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL,
5092*c9ea9e7aSLionel Sambuc 
5093*c9ea9e7aSLionel Sambuc /* AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.  */
5094*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_ADR_LO21_PCREL,
5095*c9ea9e7aSLionel Sambuc 
5096*c9ea9e7aSLionel Sambuc /* AArch64 19 bit pc-relative conditional branch and compare & branch.
5097*c9ea9e7aSLionel Sambuc The lowest two bits must be zero and are not stored in the instruction,
5098*c9ea9e7aSLionel Sambuc giving a 21 bit signed byte offset.  */
5099*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_BRANCH19,
5100*c9ea9e7aSLionel Sambuc 
5101*c9ea9e7aSLionel Sambuc /* AArch64 26 bit pc-relative unconditional branch and link.
5102*c9ea9e7aSLionel Sambuc The lowest two bits must be zero and are not stored in the instruction,
5103*c9ea9e7aSLionel Sambuc giving a 28 bit signed byte offset.  */
5104*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_CALL26,
5105*c9ea9e7aSLionel Sambuc 
5106*c9ea9e7aSLionel Sambuc /* AArch64 pseudo relocation code to be used internally by the AArch64
5107*c9ea9e7aSLionel Sambuc assembler and not (currently) written to any object files.  */
5108*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP,
5109*c9ea9e7aSLionel Sambuc 
5110*c9ea9e7aSLionel Sambuc /* AArch64 26 bit pc-relative unconditional branch.
5111*c9ea9e7aSLionel Sambuc The lowest two bits must be zero and are not stored in the instruction,
5112*c9ea9e7aSLionel Sambuc giving a 28 bit signed byte offset.  */
5113*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_JUMP26,
5114*c9ea9e7aSLionel Sambuc 
5115*c9ea9e7aSLionel Sambuc /* AArch64 Load Literal instruction, holding a 19 bit pc-relative word
5116*c9ea9e7aSLionel Sambuc offset.  The lowest two bits must be zero and are not stored in the
5117*c9ea9e7aSLionel Sambuc instruction, giving a 21 bit signed byte offset.  */
5118*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_LD_LO19_PCREL,
5119*c9ea9e7aSLionel Sambuc 
5120*c9ea9e7aSLionel Sambuc /* Unsigned 12 bit byte offset for 64 bit load/store from the page of
5121*c9ea9e7aSLionel Sambuc the GOT entry for this symbol.  Used in conjunction with
5122*c9ea9e7aSLionel Sambuc BFD_RELOC_AARCH64_ADR_GOTPAGE.  */
5123*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_LD64_GOT_LO12_NC,
5124*c9ea9e7aSLionel Sambuc 
5125*c9ea9e7aSLionel Sambuc /* AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
5126*c9ea9e7aSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5127*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_LDST_LO12,
5128*c9ea9e7aSLionel Sambuc 
5129*c9ea9e7aSLionel Sambuc /* AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
5130*c9ea9e7aSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5131*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_LDST8_LO12,
5132*c9ea9e7aSLionel Sambuc 
5133*c9ea9e7aSLionel Sambuc /* AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
5134*c9ea9e7aSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5135*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_LDST16_LO12,
5136*c9ea9e7aSLionel Sambuc 
5137*c9ea9e7aSLionel Sambuc /* AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
5138*c9ea9e7aSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5139*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_LDST32_LO12,
5140*c9ea9e7aSLionel Sambuc 
5141*c9ea9e7aSLionel Sambuc /* AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
5142*c9ea9e7aSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5143*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_LDST64_LO12,
5144*c9ea9e7aSLionel Sambuc 
5145*c9ea9e7aSLionel Sambuc /* AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
5146*c9ea9e7aSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5147*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_LDST128_LO12,
5148*c9ea9e7aSLionel Sambuc 
5149*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZK] instruction with most significant bits 0 to 15
5150*c9ea9e7aSLionel Sambuc of an unsigned address/value.  */
5151*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G0,
5152*c9ea9e7aSLionel Sambuc 
5153*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
5154*c9ea9e7aSLionel Sambuc of a signed value.  Changes instruction to MOVZ or MOVN depending on the
5155*c9ea9e7aSLionel Sambuc value's sign.  */
5156*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G0_S,
5157*c9ea9e7aSLionel Sambuc 
5158*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
5159*c9ea9e7aSLionel Sambuc an address/value.  No overflow checking.  */
5160*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G0_NC,
5161*c9ea9e7aSLionel Sambuc 
5162*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZK] instruction with most significant bits 16 to 31
5163*c9ea9e7aSLionel Sambuc of an unsigned address/value.  */
5164*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G1,
5165*c9ea9e7aSLionel Sambuc 
5166*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZK] instruction with less significant bits 16 to 31
5167*c9ea9e7aSLionel Sambuc of an address/value.  No overflow checking.  */
5168*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G1_NC,
5169*c9ea9e7aSLionel Sambuc 
5170*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZ] instruction with most significant bits 16 to 31
5171*c9ea9e7aSLionel Sambuc of a signed value.  Changes instruction to MOVZ or MOVN depending on the
5172*c9ea9e7aSLionel Sambuc value's sign.  */
5173*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G1_S,
5174*c9ea9e7aSLionel Sambuc 
5175*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZK] instruction with most significant bits 32 to 47
5176*c9ea9e7aSLionel Sambuc of an unsigned address/value.  */
5177*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G2,
5178*c9ea9e7aSLionel Sambuc 
5179*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZK] instruction with less significant bits 32 to 47
5180*c9ea9e7aSLionel Sambuc of an address/value.  No overflow checking.  */
5181*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G2_NC,
5182*c9ea9e7aSLionel Sambuc 
5183*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZ] instruction with most significant bits 32 to 47
5184*c9ea9e7aSLionel Sambuc of a signed value.  Changes instruction to MOVZ or MOVN depending on the
5185*c9ea9e7aSLionel Sambuc value's sign.  */
5186*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G2_S,
5187*c9ea9e7aSLionel Sambuc 
5188*c9ea9e7aSLionel Sambuc /* AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
5189*c9ea9e7aSLionel Sambuc of a signed or unsigned address/value.  */
5190*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G3,
5191*c9ea9e7aSLionel Sambuc 
5192*c9ea9e7aSLionel Sambuc /* AArch64 TLS relocation.  */
5193*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC,
5194*c9ea9e7aSLionel Sambuc 
5195*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5196*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_ADD,
5197*c9ea9e7aSLionel Sambuc 
5198*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5199*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC,
5200*c9ea9e7aSLionel Sambuc 
5201*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5202*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE,
5203*c9ea9e7aSLionel Sambuc 
5204*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5205*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21,
5206*c9ea9e7aSLionel Sambuc 
5207*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5208*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_CALL,
5209*c9ea9e7aSLionel Sambuc 
5210*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5211*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC,
5212*c9ea9e7aSLionel Sambuc 
5213*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5214*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_LD64_PREL19,
5215*c9ea9e7aSLionel Sambuc 
5216*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5217*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_LDR,
5218*c9ea9e7aSLionel Sambuc 
5219*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5220*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC,
5221*c9ea9e7aSLionel Sambuc 
5222*c9ea9e7aSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5223*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_OFF_G1,
5224*c9ea9e7aSLionel Sambuc 
5225*c9ea9e7aSLionel Sambuc /* Unsigned 12 bit byte offset to global offset table entry for a symbols
5226*c9ea9e7aSLionel Sambuc tls_index structure.  Used in conjunction with
5227*c9ea9e7aSLionel Sambuc BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.  */
5228*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC,
5229*c9ea9e7aSLionel Sambuc 
5230*c9ea9e7aSLionel Sambuc /* Get to the page base of the global offset table entry for a symbols
5231*c9ea9e7aSLionel Sambuc tls_index structure as part of an adrp instruction using a 21 bit PC
5232*c9ea9e7aSLionel Sambuc relative value.  Used in conjunction with
5233*c9ea9e7aSLionel Sambuc BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.  */
5234*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21,
5235*c9ea9e7aSLionel Sambuc 
5236*c9ea9e7aSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5237*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,
5238*c9ea9e7aSLionel Sambuc 
5239*c9ea9e7aSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5240*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19,
5241*c9ea9e7aSLionel Sambuc 
5242*c9ea9e7aSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5243*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,
5244*c9ea9e7aSLionel Sambuc 
5245*c9ea9e7aSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5246*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
5247*c9ea9e7aSLionel Sambuc 
5248*c9ea9e7aSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5249*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
5250*c9ea9e7aSLionel Sambuc 
5251*c9ea9e7aSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5252*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12,
5253*c9ea9e7aSLionel Sambuc 
5254*c9ea9e7aSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5255*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12,
5256*c9ea9e7aSLionel Sambuc 
5257*c9ea9e7aSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5258*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC,
5259*c9ea9e7aSLionel Sambuc 
5260*c9ea9e7aSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5261*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0,
5262*c9ea9e7aSLionel Sambuc 
5263*c9ea9e7aSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5264*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC,
5265*c9ea9e7aSLionel Sambuc 
5266*c9ea9e7aSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5267*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1,
5268*c9ea9e7aSLionel Sambuc 
5269*c9ea9e7aSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5270*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC,
5271*c9ea9e7aSLionel Sambuc 
5272*c9ea9e7aSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5273*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2,
5274*c9ea9e7aSLionel Sambuc 
5275*c9ea9e7aSLionel Sambuc /* AArch64 TLS relocation.  */
5276*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLS_DTPMOD64,
5277*c9ea9e7aSLionel Sambuc 
5278*c9ea9e7aSLionel Sambuc /* AArch64 TLS relocation.  */
5279*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLS_DTPREL64,
5280*c9ea9e7aSLionel Sambuc 
5281*c9ea9e7aSLionel Sambuc /* AArch64 TLS relocation.  */
5282*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TLS_TPREL64,
5283*c9ea9e7aSLionel Sambuc 
5284*c9ea9e7aSLionel Sambuc /* AArch64 14 bit pc-relative test bit and branch.
5285*c9ea9e7aSLionel Sambuc The lowest two bits must be zero and are not stored in the instruction,
5286*c9ea9e7aSLionel Sambuc giving a 16 bit signed byte offset.  */
5287*c9ea9e7aSLionel Sambuc   BFD_RELOC_AARCH64_TSTBR14,
5288*c9ea9e7aSLionel Sambuc 
5289c566d462SLionel Sambuc /* Tilera TILEPro Relocations.  */
5290c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_COPY,
5291c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_GLOB_DAT,
5292c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_JMP_SLOT,
5293c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_RELATIVE,
5294c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_BROFF_X1,
5295c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_JOFFLONG_X1,
5296c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT,
5297c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_X0,
5298c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_Y0,
5299c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_X1,
5300c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_Y1,
5301c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_DEST_IMM8_X1,
5302c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_MT_IMM15_X1,
5303c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_MF_IMM15_X1,
5304c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0,
5305c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1,
5306c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_LO,
5307c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_LO,
5308c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_HI,
5309c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_HI,
5310c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_HA,
5311c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_HA,
5312c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_PCREL,
5313c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_PCREL,
5314c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL,
5315c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL,
5316c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL,
5317c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL,
5318c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL,
5319c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL,
5320c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_GOT,
5321c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_GOT,
5322c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO,
5323c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO,
5324c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI,
5325c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI,
5326c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA,
5327c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA,
5328c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_MMSTART_X0,
5329c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_MMEND_X0,
5330c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_MMSTART_X1,
5331c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_MMEND_X1,
5332c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_SHAMT_X0,
5333c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_SHAMT_X1,
5334c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_SHAMT_Y0,
5335c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_SHAMT_Y1,
5336*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_TLS_GD_CALL,
5337*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD,
5338*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD,
5339*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD,
5340*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD,
5341*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_TLS_IE_LOAD,
5342c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD,
5343c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD,
5344c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO,
5345c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO,
5346c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI,
5347c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI,
5348c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA,
5349c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA,
5350c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE,
5351c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE,
5352c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO,
5353c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO,
5354c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI,
5355c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI,
5356c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA,
5357c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA,
5358c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_TLS_DTPMOD32,
5359c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_TLS_DTPOFF32,
5360c566d462SLionel Sambuc   BFD_RELOC_TILEPRO_TLS_TPOFF32,
5361*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE,
5362*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE,
5363*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO,
5364*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO,
5365*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI,
5366*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI,
5367*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA,
5368*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA,
5369c566d462SLionel Sambuc 
5370c566d462SLionel Sambuc /* Tilera TILE-Gx Relocations.  */
5371c566d462SLionel Sambuc   BFD_RELOC_TILEGX_HW0,
5372c566d462SLionel Sambuc   BFD_RELOC_TILEGX_HW1,
5373c566d462SLionel Sambuc   BFD_RELOC_TILEGX_HW2,
5374c566d462SLionel Sambuc   BFD_RELOC_TILEGX_HW3,
5375c566d462SLionel Sambuc   BFD_RELOC_TILEGX_HW0_LAST,
5376c566d462SLionel Sambuc   BFD_RELOC_TILEGX_HW1_LAST,
5377c566d462SLionel Sambuc   BFD_RELOC_TILEGX_HW2_LAST,
5378c566d462SLionel Sambuc   BFD_RELOC_TILEGX_COPY,
5379c566d462SLionel Sambuc   BFD_RELOC_TILEGX_GLOB_DAT,
5380c566d462SLionel Sambuc   BFD_RELOC_TILEGX_JMP_SLOT,
5381c566d462SLionel Sambuc   BFD_RELOC_TILEGX_RELATIVE,
5382c566d462SLionel Sambuc   BFD_RELOC_TILEGX_BROFF_X1,
5383c566d462SLionel Sambuc   BFD_RELOC_TILEGX_JUMPOFF_X1,
5384c566d462SLionel Sambuc   BFD_RELOC_TILEGX_JUMPOFF_X1_PLT,
5385c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X0,
5386c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y0,
5387c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X1,
5388c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y1,
5389c566d462SLionel Sambuc   BFD_RELOC_TILEGX_DEST_IMM8_X1,
5390c566d462SLionel Sambuc   BFD_RELOC_TILEGX_MT_IMM14_X1,
5391c566d462SLionel Sambuc   BFD_RELOC_TILEGX_MF_IMM14_X1,
5392c566d462SLionel Sambuc   BFD_RELOC_TILEGX_MMSTART_X0,
5393c566d462SLionel Sambuc   BFD_RELOC_TILEGX_MMEND_X0,
5394c566d462SLionel Sambuc   BFD_RELOC_TILEGX_SHAMT_X0,
5395c566d462SLionel Sambuc   BFD_RELOC_TILEGX_SHAMT_X1,
5396c566d462SLionel Sambuc   BFD_RELOC_TILEGX_SHAMT_Y0,
5397c566d462SLionel Sambuc   BFD_RELOC_TILEGX_SHAMT_Y1,
5398c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0,
5399c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0,
5400c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1,
5401c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1,
5402c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW2,
5403c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW2,
5404c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW3,
5405c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW3,
5406c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST,
5407c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST,
5408c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST,
5409c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST,
5410c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST,
5411c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST,
5412c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL,
5413c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL,
5414c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL,
5415c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL,
5416c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL,
5417c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL,
5418c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL,
5419c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL,
5420c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL,
5421c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL,
5422c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL,
5423c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL,
5424c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL,
5425c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL,
5426c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT,
5427c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT,
5428c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT,
5429c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT,
5430c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT,
5431c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT,
5432c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD,
5433c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD,
5434*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE,
5435*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE,
5436*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE,
5437*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE,
5438*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE,
5439*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE,
5440c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD,
5441c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD,
5442c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD,
5443c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD,
5444c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE,
5445c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE,
5446c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE,
5447c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE,
5448c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE,
5449c566d462SLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE,
5450c566d462SLionel Sambuc   BFD_RELOC_TILEGX_TLS_DTPMOD64,
5451c566d462SLionel Sambuc   BFD_RELOC_TILEGX_TLS_DTPOFF64,
5452c566d462SLionel Sambuc   BFD_RELOC_TILEGX_TLS_TPOFF64,
5453c566d462SLionel Sambuc   BFD_RELOC_TILEGX_TLS_DTPMOD32,
5454c566d462SLionel Sambuc   BFD_RELOC_TILEGX_TLS_DTPOFF32,
5455c566d462SLionel Sambuc   BFD_RELOC_TILEGX_TLS_TPOFF32,
5456*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_TLS_GD_CALL,
5457*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD,
5458*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD,
5459*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD,
5460*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD,
5461*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_TLS_IE_LOAD,
5462*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD,
5463*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD,
5464*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD,
5465*c9ea9e7aSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD,
5466*c9ea9e7aSLionel Sambuc 
5467*c9ea9e7aSLionel Sambuc /* Adapteva EPIPHANY - 8 bit signed pc-relative displacement  */
5468*c9ea9e7aSLionel Sambuc   BFD_RELOC_EPIPHANY_SIMM8,
5469*c9ea9e7aSLionel Sambuc 
5470*c9ea9e7aSLionel Sambuc /* Adapteva EPIPHANY - 24 bit signed pc-relative displacement  */
5471*c9ea9e7aSLionel Sambuc   BFD_RELOC_EPIPHANY_SIMM24,
5472*c9ea9e7aSLionel Sambuc 
5473*c9ea9e7aSLionel Sambuc /* Adapteva EPIPHANY - 16 most-significant bits of absolute address  */
5474*c9ea9e7aSLionel Sambuc   BFD_RELOC_EPIPHANY_HIGH,
5475*c9ea9e7aSLionel Sambuc 
5476*c9ea9e7aSLionel Sambuc /* Adapteva EPIPHANY - 16 least-significant bits of absolute address  */
5477*c9ea9e7aSLionel Sambuc   BFD_RELOC_EPIPHANY_LOW,
5478*c9ea9e7aSLionel Sambuc 
5479*c9ea9e7aSLionel Sambuc /* Adapteva EPIPHANY - 11 bit signed number - add/sub immediate  */
5480*c9ea9e7aSLionel Sambuc   BFD_RELOC_EPIPHANY_SIMM11,
5481*c9ea9e7aSLionel Sambuc 
5482*c9ea9e7aSLionel Sambuc /* Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)  */
5483*c9ea9e7aSLionel Sambuc   BFD_RELOC_EPIPHANY_IMM11,
5484*c9ea9e7aSLionel Sambuc 
5485*c9ea9e7aSLionel Sambuc /* Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.  */
5486*c9ea9e7aSLionel Sambuc   BFD_RELOC_EPIPHANY_IMM8,
5487d19d7d58SLionel Sambuc   BFD_RELOC_UNUSED };
5488d19d7d58SLionel Sambuc typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
5489d19d7d58SLionel Sambuc reloc_howto_type *bfd_reloc_type_lookup
5490d19d7d58SLionel Sambuc    (bfd *abfd, bfd_reloc_code_real_type code);
5491d19d7d58SLionel Sambuc reloc_howto_type *bfd_reloc_name_lookup
5492d19d7d58SLionel Sambuc    (bfd *abfd, const char *reloc_name);
5493d19d7d58SLionel Sambuc 
5494d19d7d58SLionel Sambuc const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
5495d19d7d58SLionel Sambuc 
5496d19d7d58SLionel Sambuc /* Extracted from syms.c.  */
5497d19d7d58SLionel Sambuc 
5498d19d7d58SLionel Sambuc typedef struct bfd_symbol
5499d19d7d58SLionel Sambuc {
5500d19d7d58SLionel Sambuc   /* A pointer to the BFD which owns the symbol. This information
5501d19d7d58SLionel Sambuc      is necessary so that a back end can work out what additional
5502d19d7d58SLionel Sambuc      information (invisible to the application writer) is carried
5503d19d7d58SLionel Sambuc      with the symbol.
5504d19d7d58SLionel Sambuc 
5505d19d7d58SLionel Sambuc      This field is *almost* redundant, since you can use section->owner
5506d19d7d58SLionel Sambuc      instead, except that some symbols point to the global sections
5507d19d7d58SLionel Sambuc      bfd_{abs,com,und}_section.  This could be fixed by making
5508d19d7d58SLionel Sambuc      these globals be per-bfd (or per-target-flavor).  FIXME.  */
5509d19d7d58SLionel Sambuc   struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
5510d19d7d58SLionel Sambuc 
5511d19d7d58SLionel Sambuc   /* The text of the symbol. The name is left alone, and not copied; the
5512d19d7d58SLionel Sambuc      application may not alter it.  */
5513d19d7d58SLionel Sambuc   const char *name;
5514d19d7d58SLionel Sambuc 
5515d19d7d58SLionel Sambuc   /* The value of the symbol.  This really should be a union of a
5516d19d7d58SLionel Sambuc      numeric value with a pointer, since some flags indicate that
5517d19d7d58SLionel Sambuc      a pointer to another symbol is stored here.  */
5518d19d7d58SLionel Sambuc   symvalue value;
5519d19d7d58SLionel Sambuc 
5520d19d7d58SLionel Sambuc   /* Attributes of a symbol.  */
5521d19d7d58SLionel Sambuc #define BSF_NO_FLAGS           0x00
5522d19d7d58SLionel Sambuc 
5523d19d7d58SLionel Sambuc   /* The symbol has local scope; <<static>> in <<C>>. The value
5524d19d7d58SLionel Sambuc      is the offset into the section of the data.  */
5525d19d7d58SLionel Sambuc #define BSF_LOCAL              (1 << 0)
5526d19d7d58SLionel Sambuc 
5527d19d7d58SLionel Sambuc   /* The symbol has global scope; initialized data in <<C>>. The
5528d19d7d58SLionel Sambuc      value is the offset into the section of the data.  */
5529d19d7d58SLionel Sambuc #define BSF_GLOBAL             (1 << 1)
5530d19d7d58SLionel Sambuc 
5531d19d7d58SLionel Sambuc   /* The symbol has global scope and is exported. The value is
5532d19d7d58SLionel Sambuc      the offset into the section of the data.  */
5533d19d7d58SLionel Sambuc #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
5534d19d7d58SLionel Sambuc 
5535d19d7d58SLionel Sambuc   /* A normal C symbol would be one of:
5536d19d7d58SLionel Sambuc      <<BSF_LOCAL>>, <<BSF_COMMON>>,  <<BSF_UNDEFINED>> or
5537d19d7d58SLionel Sambuc      <<BSF_GLOBAL>>.  */
5538d19d7d58SLionel Sambuc 
5539d19d7d58SLionel Sambuc   /* The symbol is a debugging record. The value has an arbitrary
5540d19d7d58SLionel Sambuc      meaning, unless BSF_DEBUGGING_RELOC is also set.  */
5541d19d7d58SLionel Sambuc #define BSF_DEBUGGING          (1 << 2)
5542d19d7d58SLionel Sambuc 
5543d19d7d58SLionel Sambuc   /* The symbol denotes a function entry point.  Used in ELF,
5544d19d7d58SLionel Sambuc      perhaps others someday.  */
5545d19d7d58SLionel Sambuc #define BSF_FUNCTION           (1 << 3)
5546d19d7d58SLionel Sambuc 
5547d19d7d58SLionel Sambuc   /* Used by the linker.  */
5548d19d7d58SLionel Sambuc #define BSF_KEEP               (1 << 5)
5549d19d7d58SLionel Sambuc #define BSF_KEEP_G             (1 << 6)
5550d19d7d58SLionel Sambuc 
5551d19d7d58SLionel Sambuc   /* A weak global symbol, overridable without warnings by
5552d19d7d58SLionel Sambuc      a regular global symbol of the same name.  */
5553d19d7d58SLionel Sambuc #define BSF_WEAK               (1 << 7)
5554d19d7d58SLionel Sambuc 
5555d19d7d58SLionel Sambuc   /* This symbol was created to point to a section, e.g. ELF's
5556d19d7d58SLionel Sambuc      STT_SECTION symbols.  */
5557d19d7d58SLionel Sambuc #define BSF_SECTION_SYM        (1 << 8)
5558d19d7d58SLionel Sambuc 
5559d19d7d58SLionel Sambuc   /* The symbol used to be a common symbol, but now it is
5560d19d7d58SLionel Sambuc      allocated.  */
5561d19d7d58SLionel Sambuc #define BSF_OLD_COMMON         (1 << 9)
5562d19d7d58SLionel Sambuc 
5563d19d7d58SLionel Sambuc   /* In some files the type of a symbol sometimes alters its
5564d19d7d58SLionel Sambuc      location in an output file - ie in coff a <<ISFCN>> symbol
5565d19d7d58SLionel Sambuc      which is also <<C_EXT>> symbol appears where it was
5566d19d7d58SLionel Sambuc      declared and not at the end of a section.  This bit is set
5567d19d7d58SLionel Sambuc      by the target BFD part to convey this information.  */
5568d19d7d58SLionel Sambuc #define BSF_NOT_AT_END         (1 << 10)
5569d19d7d58SLionel Sambuc 
5570d19d7d58SLionel Sambuc   /* Signal that the symbol is the label of constructor section.  */
5571d19d7d58SLionel Sambuc #define BSF_CONSTRUCTOR        (1 << 11)
5572d19d7d58SLionel Sambuc 
5573d19d7d58SLionel Sambuc   /* Signal that the symbol is a warning symbol.  The name is a
5574d19d7d58SLionel Sambuc      warning.  The name of the next symbol is the one to warn about;
5575d19d7d58SLionel Sambuc      if a reference is made to a symbol with the same name as the next
5576d19d7d58SLionel Sambuc      symbol, a warning is issued by the linker.  */
5577d19d7d58SLionel Sambuc #define BSF_WARNING            (1 << 12)
5578d19d7d58SLionel Sambuc 
5579d19d7d58SLionel Sambuc   /* Signal that the symbol is indirect.  This symbol is an indirect
5580d19d7d58SLionel Sambuc      pointer to the symbol with the same name as the next symbol.  */
5581d19d7d58SLionel Sambuc #define BSF_INDIRECT           (1 << 13)
5582d19d7d58SLionel Sambuc 
5583d19d7d58SLionel Sambuc   /* BSF_FILE marks symbols that contain a file name.  This is used
5584d19d7d58SLionel Sambuc      for ELF STT_FILE symbols.  */
5585d19d7d58SLionel Sambuc #define BSF_FILE               (1 << 14)
5586d19d7d58SLionel Sambuc 
5587d19d7d58SLionel Sambuc   /* Symbol is from dynamic linking information.  */
5588d19d7d58SLionel Sambuc #define BSF_DYNAMIC            (1 << 15)
5589d19d7d58SLionel Sambuc 
5590d19d7d58SLionel Sambuc   /* The symbol denotes a data object.  Used in ELF, and perhaps
5591d19d7d58SLionel Sambuc      others someday.  */
5592d19d7d58SLionel Sambuc #define BSF_OBJECT             (1 << 16)
5593d19d7d58SLionel Sambuc 
5594d19d7d58SLionel Sambuc   /* This symbol is a debugging symbol.  The value is the offset
5595d19d7d58SLionel Sambuc      into the section of the data.  BSF_DEBUGGING should be set
5596d19d7d58SLionel Sambuc      as well.  */
5597d19d7d58SLionel Sambuc #define BSF_DEBUGGING_RELOC    (1 << 17)
5598d19d7d58SLionel Sambuc 
5599d19d7d58SLionel Sambuc   /* This symbol is thread local.  Used in ELF.  */
5600d19d7d58SLionel Sambuc #define BSF_THREAD_LOCAL       (1 << 18)
5601d19d7d58SLionel Sambuc 
5602d19d7d58SLionel Sambuc   /* This symbol represents a complex relocation expression,
5603d19d7d58SLionel Sambuc      with the expression tree serialized in the symbol name.  */
5604d19d7d58SLionel Sambuc #define BSF_RELC               (1 << 19)
5605d19d7d58SLionel Sambuc 
5606d19d7d58SLionel Sambuc   /* This symbol represents a signed complex relocation expression,
5607d19d7d58SLionel Sambuc      with the expression tree serialized in the symbol name.  */
5608d19d7d58SLionel Sambuc #define BSF_SRELC              (1 << 20)
5609d19d7d58SLionel Sambuc 
5610d19d7d58SLionel Sambuc   /* This symbol was created by bfd_get_synthetic_symtab.  */
5611d19d7d58SLionel Sambuc #define BSF_SYNTHETIC          (1 << 21)
5612d19d7d58SLionel Sambuc 
5613d19d7d58SLionel Sambuc   /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.
5614d19d7d58SLionel Sambuc      The dynamic linker will compute the value of this symbol by
5615d19d7d58SLionel Sambuc      calling the function that it points to.  BSF_FUNCTION must
5616d19d7d58SLionel Sambuc      also be also set.  */
5617d19d7d58SLionel Sambuc #define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
5618d19d7d58SLionel Sambuc   /* This symbol is a globally unique data object.  The dynamic linker
5619d19d7d58SLionel Sambuc      will make sure that in the entire process there is just one symbol
5620d19d7d58SLionel Sambuc      with this name and type in use.  BSF_OBJECT must also be set.  */
5621d19d7d58SLionel Sambuc #define BSF_GNU_UNIQUE         (1 << 23)
5622d19d7d58SLionel Sambuc 
5623d19d7d58SLionel Sambuc   flagword flags;
5624d19d7d58SLionel Sambuc 
5625d19d7d58SLionel Sambuc   /* A pointer to the section to which this symbol is
5626d19d7d58SLionel Sambuc      relative.  This will always be non NULL, there are special
5627d19d7d58SLionel Sambuc      sections for undefined and absolute symbols.  */
5628d19d7d58SLionel Sambuc   struct bfd_section *section;
5629d19d7d58SLionel Sambuc 
5630d19d7d58SLionel Sambuc   /* Back end special data.  */
5631d19d7d58SLionel Sambuc   union
5632d19d7d58SLionel Sambuc     {
5633d19d7d58SLionel Sambuc       void *p;
5634d19d7d58SLionel Sambuc       bfd_vma i;
5635d19d7d58SLionel Sambuc     }
5636d19d7d58SLionel Sambuc   udata;
5637d19d7d58SLionel Sambuc }
5638d19d7d58SLionel Sambuc asymbol;
5639d19d7d58SLionel Sambuc 
5640d19d7d58SLionel Sambuc #define bfd_get_symtab_upper_bound(abfd) \
5641d19d7d58SLionel Sambuc      BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
5642d19d7d58SLionel Sambuc 
5643d19d7d58SLionel Sambuc bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
5644d19d7d58SLionel Sambuc 
5645d19d7d58SLionel Sambuc bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
5646d19d7d58SLionel Sambuc 
5647d19d7d58SLionel Sambuc #define bfd_is_local_label_name(abfd, name) \
5648d19d7d58SLionel Sambuc   BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
5649d19d7d58SLionel Sambuc 
5650d19d7d58SLionel Sambuc bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
5651d19d7d58SLionel Sambuc 
5652d19d7d58SLionel Sambuc #define bfd_is_target_special_symbol(abfd, sym) \
5653d19d7d58SLionel Sambuc   BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
5654d19d7d58SLionel Sambuc 
5655d19d7d58SLionel Sambuc #define bfd_canonicalize_symtab(abfd, location) \
5656d19d7d58SLionel Sambuc   BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
5657d19d7d58SLionel Sambuc 
5658d19d7d58SLionel Sambuc bfd_boolean bfd_set_symtab
5659d19d7d58SLionel Sambuc    (bfd *abfd, asymbol **location, unsigned int count);
5660d19d7d58SLionel Sambuc 
5661d19d7d58SLionel Sambuc void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
5662d19d7d58SLionel Sambuc 
5663d19d7d58SLionel Sambuc #define bfd_make_empty_symbol(abfd) \
5664d19d7d58SLionel Sambuc   BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
5665d19d7d58SLionel Sambuc 
5666d19d7d58SLionel Sambuc asymbol *_bfd_generic_make_empty_symbol (bfd *);
5667d19d7d58SLionel Sambuc 
5668d19d7d58SLionel Sambuc #define bfd_make_debug_symbol(abfd,ptr,size) \
5669d19d7d58SLionel Sambuc   BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
5670d19d7d58SLionel Sambuc 
5671d19d7d58SLionel Sambuc int bfd_decode_symclass (asymbol *symbol);
5672d19d7d58SLionel Sambuc 
5673d19d7d58SLionel Sambuc bfd_boolean bfd_is_undefined_symclass (int symclass);
5674d19d7d58SLionel Sambuc 
5675d19d7d58SLionel Sambuc void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
5676d19d7d58SLionel Sambuc 
5677d19d7d58SLionel Sambuc bfd_boolean bfd_copy_private_symbol_data
5678d19d7d58SLionel Sambuc    (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
5679d19d7d58SLionel Sambuc 
5680d19d7d58SLionel Sambuc #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
5681d19d7d58SLionel Sambuc   BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
5682d19d7d58SLionel Sambuc             (ibfd, isymbol, obfd, osymbol))
5683d19d7d58SLionel Sambuc 
5684d19d7d58SLionel Sambuc /* Extracted from bfd.c.  */
5685d19d7d58SLionel Sambuc enum bfd_direction
5686d19d7d58SLionel Sambuc   {
5687d19d7d58SLionel Sambuc     no_direction = 0,
5688d19d7d58SLionel Sambuc     read_direction = 1,
5689d19d7d58SLionel Sambuc     write_direction = 2,
5690d19d7d58SLionel Sambuc     both_direction = 3
5691d19d7d58SLionel Sambuc   };
5692d19d7d58SLionel Sambuc 
5693d19d7d58SLionel Sambuc struct bfd
5694d19d7d58SLionel Sambuc {
5695d19d7d58SLionel Sambuc   /* A unique identifier of the BFD  */
5696d19d7d58SLionel Sambuc   unsigned int id;
5697d19d7d58SLionel Sambuc 
5698d19d7d58SLionel Sambuc   /* The filename the application opened the BFD with.  */
5699d19d7d58SLionel Sambuc   const char *filename;
5700d19d7d58SLionel Sambuc 
5701d19d7d58SLionel Sambuc   /* A pointer to the target jump table.  */
5702d19d7d58SLionel Sambuc   const struct bfd_target *xvec;
5703d19d7d58SLionel Sambuc 
5704d19d7d58SLionel Sambuc   /* The IOSTREAM, and corresponding IO vector that provide access
5705d19d7d58SLionel Sambuc      to the file backing the BFD.  */
5706d19d7d58SLionel Sambuc   void *iostream;
5707d19d7d58SLionel Sambuc   const struct bfd_iovec *iovec;
5708d19d7d58SLionel Sambuc 
5709d19d7d58SLionel Sambuc   /* The caching routines use these to maintain a
5710d19d7d58SLionel Sambuc      least-recently-used list of BFDs.  */
5711d19d7d58SLionel Sambuc   struct bfd *lru_prev, *lru_next;
5712d19d7d58SLionel Sambuc 
5713d19d7d58SLionel Sambuc   /* When a file is closed by the caching routines, BFD retains
5714d19d7d58SLionel Sambuc      state information on the file here...  */
5715d19d7d58SLionel Sambuc   ufile_ptr where;
5716d19d7d58SLionel Sambuc 
5717d19d7d58SLionel Sambuc   /* File modified time, if mtime_set is TRUE.  */
5718d19d7d58SLionel Sambuc   long mtime;
5719d19d7d58SLionel Sambuc 
5720d19d7d58SLionel Sambuc   /* Reserved for an unimplemented file locking extension.  */
5721d19d7d58SLionel Sambuc   int ifd;
5722d19d7d58SLionel Sambuc 
5723d19d7d58SLionel Sambuc   /* The format which belongs to the BFD. (object, core, etc.)  */
5724d19d7d58SLionel Sambuc   bfd_format format;
5725d19d7d58SLionel Sambuc 
5726d19d7d58SLionel Sambuc   /* The direction with which the BFD was opened.  */
5727d19d7d58SLionel Sambuc   enum bfd_direction direction;
5728d19d7d58SLionel Sambuc 
5729d19d7d58SLionel Sambuc   /* Format_specific flags.  */
5730d19d7d58SLionel Sambuc   flagword flags;
5731d19d7d58SLionel Sambuc 
5732d19d7d58SLionel Sambuc   /* Values that may appear in the flags field of a BFD.  These also
5733d19d7d58SLionel Sambuc      appear in the object_flags field of the bfd_target structure, where
5734d19d7d58SLionel Sambuc      they indicate the set of flags used by that backend (not all flags
5735d19d7d58SLionel Sambuc      are meaningful for all object file formats) (FIXME: at the moment,
5736d19d7d58SLionel Sambuc      the object_flags values have mostly just been copied from backend
5737d19d7d58SLionel Sambuc      to another, and are not necessarily correct).  */
5738d19d7d58SLionel Sambuc 
5739d19d7d58SLionel Sambuc #define BFD_NO_FLAGS   0x00
5740d19d7d58SLionel Sambuc 
5741d19d7d58SLionel Sambuc   /* BFD contains relocation entries.  */
5742d19d7d58SLionel Sambuc #define HAS_RELOC      0x01
5743d19d7d58SLionel Sambuc 
5744d19d7d58SLionel Sambuc   /* BFD is directly executable.  */
5745d19d7d58SLionel Sambuc #define EXEC_P         0x02
5746d19d7d58SLionel Sambuc 
5747d19d7d58SLionel Sambuc   /* BFD has line number information (basically used for F_LNNO in a
5748d19d7d58SLionel Sambuc      COFF header).  */
5749d19d7d58SLionel Sambuc #define HAS_LINENO     0x04
5750d19d7d58SLionel Sambuc 
5751d19d7d58SLionel Sambuc   /* BFD has debugging information.  */
5752d19d7d58SLionel Sambuc #define HAS_DEBUG      0x08
5753d19d7d58SLionel Sambuc 
5754d19d7d58SLionel Sambuc   /* BFD has symbols.  */
5755d19d7d58SLionel Sambuc #define HAS_SYMS       0x10
5756d19d7d58SLionel Sambuc 
5757d19d7d58SLionel Sambuc   /* BFD has local symbols (basically used for F_LSYMS in a COFF
5758d19d7d58SLionel Sambuc      header).  */
5759d19d7d58SLionel Sambuc #define HAS_LOCALS     0x20
5760d19d7d58SLionel Sambuc 
5761d19d7d58SLionel Sambuc   /* BFD is a dynamic object.  */
5762d19d7d58SLionel Sambuc #define DYNAMIC        0x40
5763d19d7d58SLionel Sambuc 
5764d19d7d58SLionel Sambuc   /* Text section is write protected (if D_PAGED is not set, this is
5765d19d7d58SLionel Sambuc      like an a.out NMAGIC file) (the linker sets this by default, but
5766d19d7d58SLionel Sambuc      clears it for -r or -N).  */
5767d19d7d58SLionel Sambuc #define WP_TEXT        0x80
5768d19d7d58SLionel Sambuc 
5769d19d7d58SLionel Sambuc   /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
5770d19d7d58SLionel Sambuc      linker sets this by default, but clears it for -r or -n or -N).  */
5771d19d7d58SLionel Sambuc #define D_PAGED        0x100
5772d19d7d58SLionel Sambuc 
5773d19d7d58SLionel Sambuc   /* BFD is relaxable (this means that bfd_relax_section may be able to
5774d19d7d58SLionel Sambuc      do something) (sometimes bfd_relax_section can do something even if
5775d19d7d58SLionel Sambuc      this is not set).  */
5776d19d7d58SLionel Sambuc #define BFD_IS_RELAXABLE 0x200
5777d19d7d58SLionel Sambuc 
5778d19d7d58SLionel Sambuc   /* This may be set before writing out a BFD to request using a
5779d19d7d58SLionel Sambuc      traditional format.  For example, this is used to request that when
5780d19d7d58SLionel Sambuc      writing out an a.out object the symbols not be hashed to eliminate
5781d19d7d58SLionel Sambuc      duplicates.  */
5782d19d7d58SLionel Sambuc #define BFD_TRADITIONAL_FORMAT 0x400
5783d19d7d58SLionel Sambuc 
5784d19d7d58SLionel Sambuc   /* This flag indicates that the BFD contents are actually cached
5785d19d7d58SLionel Sambuc      in memory.  If this is set, iostream points to a bfd_in_memory
5786d19d7d58SLionel Sambuc      struct.  */
5787d19d7d58SLionel Sambuc #define BFD_IN_MEMORY 0x800
5788d19d7d58SLionel Sambuc 
5789d19d7d58SLionel Sambuc   /* The sections in this BFD specify a memory page.  */
5790d19d7d58SLionel Sambuc #define HAS_LOAD_PAGE 0x1000
5791d19d7d58SLionel Sambuc 
5792d19d7d58SLionel Sambuc   /* This BFD has been created by the linker and doesn't correspond
5793d19d7d58SLionel Sambuc      to any input file.  */
5794d19d7d58SLionel Sambuc #define BFD_LINKER_CREATED 0x2000
5795*c9ea9e7aSLionel Sambuc   /* This may be set before writing out a BFD to request that it
5796*c9ea9e7aSLionel Sambuc   be written using values for UIDs, GIDs, timestamps, etc. that
5797*c9ea9e7aSLionel Sambuc   will be consistent from run to run.  */
5798*c9ea9e7aSLionel Sambuc #define BFD_DETERMINISTIC_OUTPUT 0x4000
5799*c9ea9e7aSLionel Sambuc 
5800d19d7d58SLionel Sambuc 
5801d19d7d58SLionel Sambuc   /* This may be set before writing out a BFD to request that it
5802d19d7d58SLionel Sambuc      be written using values for UIDs, GIDs, timestamps, etc. that
5803d19d7d58SLionel Sambuc      will be consistent from run to run.  */
5804d19d7d58SLionel Sambuc #define BFD_DETERMINISTIC_OUTPUT 0x4000
5805d19d7d58SLionel Sambuc 
5806d19d7d58SLionel Sambuc   /* Compress sections in this BFD.  */
5807d19d7d58SLionel Sambuc #define BFD_COMPRESS 0x8000
5808d19d7d58SLionel Sambuc 
5809d19d7d58SLionel Sambuc   /* Decompress sections in this BFD.  */
5810d19d7d58SLionel Sambuc #define BFD_DECOMPRESS 0x10000
5811d19d7d58SLionel Sambuc 
5812d19d7d58SLionel Sambuc   /* BFD is a dummy, for plugins.  */
5813d19d7d58SLionel Sambuc #define BFD_PLUGIN 0x20000
5814d19d7d58SLionel Sambuc 
5815d19d7d58SLionel Sambuc   /* Flags bits to be saved in bfd_preserve_save.  */
5816d19d7d58SLionel Sambuc #define BFD_FLAGS_SAVED \
5817d19d7d58SLionel Sambuc   (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN)
5818d19d7d58SLionel Sambuc 
5819d19d7d58SLionel Sambuc   /* Flags bits which are for BFD use only.  */
5820d19d7d58SLionel Sambuc #define BFD_FLAGS_FOR_BFD_USE_MASK \
5821d19d7d58SLionel Sambuc   (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
5822d19d7d58SLionel Sambuc    | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT)
5823d19d7d58SLionel Sambuc 
5824d19d7d58SLionel Sambuc   /* Currently my_archive is tested before adding origin to
5825d19d7d58SLionel Sambuc      anything. I believe that this can become always an add of
5826d19d7d58SLionel Sambuc      origin, with origin set to 0 for non archive files.  */
5827d19d7d58SLionel Sambuc   ufile_ptr origin;
5828d19d7d58SLionel Sambuc 
5829d19d7d58SLionel Sambuc   /* The origin in the archive of the proxy entry.  This will
5830d19d7d58SLionel Sambuc      normally be the same as origin, except for thin archives,
5831d19d7d58SLionel Sambuc      when it will contain the current offset of the proxy in the
5832d19d7d58SLionel Sambuc      thin archive rather than the offset of the bfd in its actual
5833d19d7d58SLionel Sambuc      container.  */
5834d19d7d58SLionel Sambuc   ufile_ptr proxy_origin;
5835d19d7d58SLionel Sambuc 
5836d19d7d58SLionel Sambuc   /* A hash table for section names.  */
5837d19d7d58SLionel Sambuc   struct bfd_hash_table section_htab;
5838d19d7d58SLionel Sambuc 
5839d19d7d58SLionel Sambuc   /* Pointer to linked list of sections.  */
5840d19d7d58SLionel Sambuc   struct bfd_section *sections;
5841d19d7d58SLionel Sambuc 
5842d19d7d58SLionel Sambuc   /* The last section on the section list.  */
5843d19d7d58SLionel Sambuc   struct bfd_section *section_last;
5844d19d7d58SLionel Sambuc 
5845d19d7d58SLionel Sambuc   /* The number of sections.  */
5846d19d7d58SLionel Sambuc   unsigned int section_count;
5847d19d7d58SLionel Sambuc 
5848d19d7d58SLionel Sambuc   /* Stuff only useful for object files:
5849d19d7d58SLionel Sambuc      The start address.  */
5850d19d7d58SLionel Sambuc   bfd_vma start_address;
5851d19d7d58SLionel Sambuc 
5852d19d7d58SLionel Sambuc   /* Used for input and output.  */
5853d19d7d58SLionel Sambuc   unsigned int symcount;
5854d19d7d58SLionel Sambuc 
5855d19d7d58SLionel Sambuc   /* Symbol table for output BFD (with symcount entries).
5856d19d7d58SLionel Sambuc      Also used by the linker to cache input BFD symbols.  */
5857d19d7d58SLionel Sambuc   struct bfd_symbol  **outsymbols;
5858d19d7d58SLionel Sambuc 
5859d19d7d58SLionel Sambuc   /* Used for slurped dynamic symbol tables.  */
5860d19d7d58SLionel Sambuc   unsigned int dynsymcount;
5861d19d7d58SLionel Sambuc 
5862d19d7d58SLionel Sambuc   /* Pointer to structure which contains architecture information.  */
5863d19d7d58SLionel Sambuc   const struct bfd_arch_info *arch_info;
5864d19d7d58SLionel Sambuc 
5865d19d7d58SLionel Sambuc   /* Stuff only useful for archives.  */
5866d19d7d58SLionel Sambuc   void *arelt_data;
5867d19d7d58SLionel Sambuc   struct bfd *my_archive;      /* The containing archive BFD.  */
5868d19d7d58SLionel Sambuc   struct bfd *archive_next;    /* The next BFD in the archive.  */
5869d19d7d58SLionel Sambuc   struct bfd *archive_head;    /* The first BFD in the archive.  */
5870d19d7d58SLionel Sambuc   struct bfd *nested_archives; /* List of nested archive in a flattened
5871d19d7d58SLionel Sambuc                                   thin archive.  */
5872d19d7d58SLionel Sambuc 
5873d19d7d58SLionel Sambuc   /* A chain of BFD structures involved in a link.  */
5874d19d7d58SLionel Sambuc   struct bfd *link_next;
5875d19d7d58SLionel Sambuc 
5876d19d7d58SLionel Sambuc   /* A field used by _bfd_generic_link_add_archive_symbols.  This will
5877d19d7d58SLionel Sambuc      be used only for archive elements.  */
5878d19d7d58SLionel Sambuc   int archive_pass;
5879d19d7d58SLionel Sambuc 
5880d19d7d58SLionel Sambuc   /* Used by the back end to hold private data.  */
5881d19d7d58SLionel Sambuc   union
5882d19d7d58SLionel Sambuc     {
5883d19d7d58SLionel Sambuc       struct aout_data_struct *aout_data;
5884d19d7d58SLionel Sambuc       struct artdata *aout_ar_data;
5885d19d7d58SLionel Sambuc       struct _oasys_data *oasys_obj_data;
5886d19d7d58SLionel Sambuc       struct _oasys_ar_data *oasys_ar_data;
5887d19d7d58SLionel Sambuc       struct coff_tdata *coff_obj_data;
5888d19d7d58SLionel Sambuc       struct pe_tdata *pe_obj_data;
5889d19d7d58SLionel Sambuc       struct xcoff_tdata *xcoff_obj_data;
5890d19d7d58SLionel Sambuc       struct ecoff_tdata *ecoff_obj_data;
5891d19d7d58SLionel Sambuc       struct ieee_data_struct *ieee_data;
5892d19d7d58SLionel Sambuc       struct ieee_ar_data_struct *ieee_ar_data;
5893d19d7d58SLionel Sambuc       struct srec_data_struct *srec_data;
5894d19d7d58SLionel Sambuc       struct verilog_data_struct *verilog_data;
5895d19d7d58SLionel Sambuc       struct ihex_data_struct *ihex_data;
5896d19d7d58SLionel Sambuc       struct tekhex_data_struct *tekhex_data;
5897d19d7d58SLionel Sambuc       struct elf_obj_tdata *elf_obj_data;
5898d19d7d58SLionel Sambuc       struct nlm_obj_tdata *nlm_obj_data;
5899d19d7d58SLionel Sambuc       struct bout_data_struct *bout_data;
5900d19d7d58SLionel Sambuc       struct mmo_data_struct *mmo_data;
5901d19d7d58SLionel Sambuc       struct sun_core_struct *sun_core_data;
5902d19d7d58SLionel Sambuc       struct sco5_core_struct *sco5_core_data;
5903d19d7d58SLionel Sambuc       struct trad_core_struct *trad_core_data;
5904d19d7d58SLionel Sambuc       struct som_data_struct *som_data;
5905d19d7d58SLionel Sambuc       struct hpux_core_struct *hpux_core_data;
5906d19d7d58SLionel Sambuc       struct hppabsd_core_struct *hppabsd_core_data;
5907d19d7d58SLionel Sambuc       struct sgi_core_struct *sgi_core_data;
5908d19d7d58SLionel Sambuc       struct lynx_core_struct *lynx_core_data;
5909d19d7d58SLionel Sambuc       struct osf_core_struct *osf_core_data;
5910d19d7d58SLionel Sambuc       struct cisco_core_struct *cisco_core_data;
5911d19d7d58SLionel Sambuc       struct versados_data_struct *versados_data;
5912d19d7d58SLionel Sambuc       struct netbsd_core_struct *netbsd_core_data;
5913d19d7d58SLionel Sambuc       struct mach_o_data_struct *mach_o_data;
5914d19d7d58SLionel Sambuc       struct mach_o_fat_data_struct *mach_o_fat_data;
5915d19d7d58SLionel Sambuc       struct plugin_data_struct *plugin_data;
5916d19d7d58SLionel Sambuc       struct bfd_pef_data_struct *pef_data;
5917d19d7d58SLionel Sambuc       struct bfd_pef_xlib_data_struct *pef_xlib_data;
5918d19d7d58SLionel Sambuc       struct bfd_sym_data_struct *sym_data;
5919d19d7d58SLionel Sambuc       void *any;
5920d19d7d58SLionel Sambuc     }
5921d19d7d58SLionel Sambuc   tdata;
5922d19d7d58SLionel Sambuc 
5923d19d7d58SLionel Sambuc   /* Used by the application to hold private data.  */
5924d19d7d58SLionel Sambuc   void *usrdata;
5925d19d7d58SLionel Sambuc 
5926d19d7d58SLionel Sambuc   /* Where all the allocated stuff under this BFD goes.  This is a
5927d19d7d58SLionel Sambuc      struct objalloc *, but we use void * to avoid requiring the inclusion
5928d19d7d58SLionel Sambuc      of objalloc.h.  */
5929d19d7d58SLionel Sambuc   void *memory;
5930d19d7d58SLionel Sambuc 
5931d19d7d58SLionel Sambuc   /* Is the file descriptor being cached?  That is, can it be closed as
5932d19d7d58SLionel Sambuc      needed, and re-opened when accessed later?  */
5933d19d7d58SLionel Sambuc   unsigned int cacheable : 1;
5934d19d7d58SLionel Sambuc 
5935d19d7d58SLionel Sambuc   /* Marks whether there was a default target specified when the
5936d19d7d58SLionel Sambuc      BFD was opened. This is used to select which matching algorithm
5937d19d7d58SLionel Sambuc      to use to choose the back end.  */
5938d19d7d58SLionel Sambuc   unsigned int target_defaulted : 1;
5939d19d7d58SLionel Sambuc 
5940d19d7d58SLionel Sambuc   /* ... and here: (``once'' means at least once).  */
5941d19d7d58SLionel Sambuc   unsigned int opened_once : 1;
5942d19d7d58SLionel Sambuc 
5943d19d7d58SLionel Sambuc   /* Set if we have a locally maintained mtime value, rather than
5944d19d7d58SLionel Sambuc      getting it from the file each time.  */
5945d19d7d58SLionel Sambuc   unsigned int mtime_set : 1;
5946d19d7d58SLionel Sambuc 
5947d19d7d58SLionel Sambuc   /* Flag set if symbols from this BFD should not be exported.  */
5948d19d7d58SLionel Sambuc   unsigned int no_export : 1;
5949d19d7d58SLionel Sambuc 
5950d19d7d58SLionel Sambuc   /* Remember when output has begun, to stop strange things
5951d19d7d58SLionel Sambuc      from happening.  */
5952d19d7d58SLionel Sambuc   unsigned int output_has_begun : 1;
5953d19d7d58SLionel Sambuc 
5954d19d7d58SLionel Sambuc   /* Have archive map.  */
5955d19d7d58SLionel Sambuc   unsigned int has_armap : 1;
5956d19d7d58SLionel Sambuc 
5957d19d7d58SLionel Sambuc   /* Set if this is a thin archive.  */
5958d19d7d58SLionel Sambuc   unsigned int is_thin_archive : 1;
5959d19d7d58SLionel Sambuc 
5960d19d7d58SLionel Sambuc   /* Set if only required symbols should be added in the link hash table for
5961d19d7d58SLionel Sambuc      this object.  Used by VMS linkers.  */
5962d19d7d58SLionel Sambuc   unsigned int selective_search : 1;
5963d19d7d58SLionel Sambuc };
5964d19d7d58SLionel Sambuc 
5965d19d7d58SLionel Sambuc typedef enum bfd_error
5966d19d7d58SLionel Sambuc {
5967d19d7d58SLionel Sambuc   bfd_error_no_error = 0,
5968d19d7d58SLionel Sambuc   bfd_error_system_call,
5969d19d7d58SLionel Sambuc   bfd_error_invalid_target,
5970d19d7d58SLionel Sambuc   bfd_error_wrong_format,
5971d19d7d58SLionel Sambuc   bfd_error_wrong_object_format,
5972d19d7d58SLionel Sambuc   bfd_error_invalid_operation,
5973d19d7d58SLionel Sambuc   bfd_error_no_memory,
5974d19d7d58SLionel Sambuc   bfd_error_no_symbols,
5975d19d7d58SLionel Sambuc   bfd_error_no_armap,
5976d19d7d58SLionel Sambuc   bfd_error_no_more_archived_files,
5977d19d7d58SLionel Sambuc   bfd_error_malformed_archive,
5978d19d7d58SLionel Sambuc   bfd_error_file_not_recognized,
5979d19d7d58SLionel Sambuc   bfd_error_file_ambiguously_recognized,
5980d19d7d58SLionel Sambuc   bfd_error_no_contents,
5981d19d7d58SLionel Sambuc   bfd_error_nonrepresentable_section,
5982d19d7d58SLionel Sambuc   bfd_error_no_debug_section,
5983d19d7d58SLionel Sambuc   bfd_error_bad_value,
5984d19d7d58SLionel Sambuc   bfd_error_file_truncated,
5985d19d7d58SLionel Sambuc   bfd_error_file_too_big,
5986d19d7d58SLionel Sambuc   bfd_error_on_input,
5987d19d7d58SLionel Sambuc   bfd_error_invalid_error_code
5988d19d7d58SLionel Sambuc }
5989d19d7d58SLionel Sambuc bfd_error_type;
5990d19d7d58SLionel Sambuc 
5991d19d7d58SLionel Sambuc bfd_error_type bfd_get_error (void);
5992d19d7d58SLionel Sambuc 
5993d19d7d58SLionel Sambuc void bfd_set_error (bfd_error_type error_tag, ...);
5994d19d7d58SLionel Sambuc 
5995d19d7d58SLionel Sambuc const char *bfd_errmsg (bfd_error_type error_tag);
5996d19d7d58SLionel Sambuc 
5997d19d7d58SLionel Sambuc void bfd_perror (const char *message);
5998d19d7d58SLionel Sambuc 
5999d19d7d58SLionel Sambuc typedef void (*bfd_error_handler_type) (const char *, ...);
6000d19d7d58SLionel Sambuc 
6001d19d7d58SLionel Sambuc bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
6002d19d7d58SLionel Sambuc 
6003d19d7d58SLionel Sambuc void bfd_set_error_program_name (const char *);
6004d19d7d58SLionel Sambuc 
6005d19d7d58SLionel Sambuc bfd_error_handler_type bfd_get_error_handler (void);
6006d19d7d58SLionel Sambuc 
6007*c9ea9e7aSLionel Sambuc typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
6008*c9ea9e7aSLionel Sambuc                                          const char *bfd_version,
6009*c9ea9e7aSLionel Sambuc                                          const char *bfd_file,
6010*c9ea9e7aSLionel Sambuc                                          int bfd_line);
6011*c9ea9e7aSLionel Sambuc 
6012*c9ea9e7aSLionel Sambuc bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
6013*c9ea9e7aSLionel Sambuc 
6014*c9ea9e7aSLionel Sambuc bfd_assert_handler_type bfd_get_assert_handler (void);
6015*c9ea9e7aSLionel Sambuc 
6016d19d7d58SLionel Sambuc long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
6017d19d7d58SLionel Sambuc 
6018d19d7d58SLionel Sambuc long bfd_canonicalize_reloc
6019d19d7d58SLionel Sambuc    (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
6020d19d7d58SLionel Sambuc 
6021d19d7d58SLionel Sambuc void bfd_set_reloc
6022d19d7d58SLionel Sambuc    (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
6023d19d7d58SLionel Sambuc 
6024d19d7d58SLionel Sambuc bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
6025d19d7d58SLionel Sambuc 
6026d19d7d58SLionel Sambuc int bfd_get_arch_size (bfd *abfd);
6027d19d7d58SLionel Sambuc 
6028d19d7d58SLionel Sambuc int bfd_get_sign_extend_vma (bfd *abfd);
6029d19d7d58SLionel Sambuc 
6030d19d7d58SLionel Sambuc bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
6031d19d7d58SLionel Sambuc 
6032d19d7d58SLionel Sambuc unsigned int bfd_get_gp_size (bfd *abfd);
6033d19d7d58SLionel Sambuc 
6034d19d7d58SLionel Sambuc void bfd_set_gp_size (bfd *abfd, unsigned int i);
6035d19d7d58SLionel Sambuc 
6036d19d7d58SLionel Sambuc bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
6037d19d7d58SLionel Sambuc 
6038d19d7d58SLionel Sambuc bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
6039d19d7d58SLionel Sambuc 
6040d19d7d58SLionel Sambuc #define bfd_copy_private_header_data(ibfd, obfd) \
6041d19d7d58SLionel Sambuc      BFD_SEND (obfd, _bfd_copy_private_header_data, \
6042d19d7d58SLionel Sambuc                (ibfd, obfd))
6043d19d7d58SLionel Sambuc bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
6044d19d7d58SLionel Sambuc 
6045d19d7d58SLionel Sambuc #define bfd_copy_private_bfd_data(ibfd, obfd) \
6046d19d7d58SLionel Sambuc      BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
6047d19d7d58SLionel Sambuc                (ibfd, obfd))
6048d19d7d58SLionel Sambuc bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
6049d19d7d58SLionel Sambuc 
6050d19d7d58SLionel Sambuc #define bfd_merge_private_bfd_data(ibfd, obfd) \
6051d19d7d58SLionel Sambuc      BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
6052d19d7d58SLionel Sambuc                (ibfd, obfd))
6053d19d7d58SLionel Sambuc bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
6054d19d7d58SLionel Sambuc 
6055d19d7d58SLionel Sambuc #define bfd_set_private_flags(abfd, flags) \
6056d19d7d58SLionel Sambuc      BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
6057d19d7d58SLionel Sambuc #define bfd_sizeof_headers(abfd, info) \
6058d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
6059d19d7d58SLionel Sambuc 
6060d19d7d58SLionel Sambuc #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
6061d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_find_nearest_line, \
6062d19d7d58SLionel Sambuc                  (abfd, sec, syms, off, file, func, line))
6063d19d7d58SLionel Sambuc 
6064*c9ea9e7aSLionel Sambuc #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
6065*c9ea9e7aSLionel Sambuc                                             line, disc) \
6066*c9ea9e7aSLionel Sambuc        BFD_SEND (abfd, _bfd_find_nearest_line_discriminator, \
6067*c9ea9e7aSLionel Sambuc                  (abfd, sec, syms, off, file, func, line, disc))
6068*c9ea9e7aSLionel Sambuc 
6069d19d7d58SLionel Sambuc #define bfd_find_line(abfd, syms, sym, file, line) \
6070d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_find_line, \
6071d19d7d58SLionel Sambuc                  (abfd, syms, sym, file, line))
6072d19d7d58SLionel Sambuc 
6073d19d7d58SLionel Sambuc #define bfd_find_inliner_info(abfd, file, func, line) \
6074d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_find_inliner_info, \
6075d19d7d58SLionel Sambuc                  (abfd, file, func, line))
6076d19d7d58SLionel Sambuc 
6077d19d7d58SLionel Sambuc #define bfd_debug_info_start(abfd) \
6078d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
6079d19d7d58SLionel Sambuc 
6080d19d7d58SLionel Sambuc #define bfd_debug_info_end(abfd) \
6081d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
6082d19d7d58SLionel Sambuc 
6083d19d7d58SLionel Sambuc #define bfd_debug_info_accumulate(abfd, section) \
6084d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
6085d19d7d58SLionel Sambuc 
6086d19d7d58SLionel Sambuc #define bfd_stat_arch_elt(abfd, stat) \
6087d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
6088d19d7d58SLionel Sambuc 
6089d19d7d58SLionel Sambuc #define bfd_update_armap_timestamp(abfd) \
6090d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
6091d19d7d58SLionel Sambuc 
6092d19d7d58SLionel Sambuc #define bfd_set_arch_mach(abfd, arch, mach)\
6093d19d7d58SLionel Sambuc        BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
6094d19d7d58SLionel Sambuc 
6095d19d7d58SLionel Sambuc #define bfd_relax_section(abfd, section, link_info, again) \
6096d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
6097d19d7d58SLionel Sambuc 
6098d19d7d58SLionel Sambuc #define bfd_gc_sections(abfd, link_info) \
6099d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
6100d19d7d58SLionel Sambuc 
6101*c9ea9e7aSLionel Sambuc #define bfd_lookup_section_flags(link_info, flag_info, section) \
6102*c9ea9e7aSLionel Sambuc        BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
6103c566d462SLionel Sambuc 
6104d19d7d58SLionel Sambuc #define bfd_merge_sections(abfd, link_info) \
6105d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
6106d19d7d58SLionel Sambuc 
6107d19d7d58SLionel Sambuc #define bfd_is_group_section(abfd, sec) \
6108d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
6109d19d7d58SLionel Sambuc 
6110d19d7d58SLionel Sambuc #define bfd_discard_group(abfd, sec) \
6111d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
6112d19d7d58SLionel Sambuc 
6113d19d7d58SLionel Sambuc #define bfd_link_hash_table_create(abfd) \
6114d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
6115d19d7d58SLionel Sambuc 
6116d19d7d58SLionel Sambuc #define bfd_link_hash_table_free(abfd, hash) \
6117d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
6118d19d7d58SLionel Sambuc 
6119d19d7d58SLionel Sambuc #define bfd_link_add_symbols(abfd, info) \
6120d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
6121d19d7d58SLionel Sambuc 
6122d19d7d58SLionel Sambuc #define bfd_link_just_syms(abfd, sec, info) \
6123d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
6124d19d7d58SLionel Sambuc 
6125d19d7d58SLionel Sambuc #define bfd_final_link(abfd, info) \
6126d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_final_link, (abfd, info))
6127d19d7d58SLionel Sambuc 
6128d19d7d58SLionel Sambuc #define bfd_free_cached_info(abfd) \
6129d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
6130d19d7d58SLionel Sambuc 
6131d19d7d58SLionel Sambuc #define bfd_get_dynamic_symtab_upper_bound(abfd) \
6132d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
6133d19d7d58SLionel Sambuc 
6134d19d7d58SLionel Sambuc #define bfd_print_private_bfd_data(abfd, file)\
6135d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
6136d19d7d58SLionel Sambuc 
6137d19d7d58SLionel Sambuc #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
6138d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
6139d19d7d58SLionel Sambuc 
6140d19d7d58SLionel Sambuc #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
6141d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
6142d19d7d58SLionel Sambuc                                                    dyncount, dynsyms, ret))
6143d19d7d58SLionel Sambuc 
6144d19d7d58SLionel Sambuc #define bfd_get_dynamic_reloc_upper_bound(abfd) \
6145d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
6146d19d7d58SLionel Sambuc 
6147d19d7d58SLionel Sambuc #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
6148d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
6149d19d7d58SLionel Sambuc 
6150d19d7d58SLionel Sambuc extern bfd_byte *bfd_get_relocated_section_contents
6151d19d7d58SLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
6152d19d7d58SLionel Sambuc    bfd_boolean, asymbol **);
6153d19d7d58SLionel Sambuc 
6154d19d7d58SLionel Sambuc bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
6155d19d7d58SLionel Sambuc 
6156d19d7d58SLionel Sambuc struct bfd_preserve
6157d19d7d58SLionel Sambuc {
6158d19d7d58SLionel Sambuc   void *marker;
6159d19d7d58SLionel Sambuc   void *tdata;
6160d19d7d58SLionel Sambuc   flagword flags;
6161d19d7d58SLionel Sambuc   const struct bfd_arch_info *arch_info;
6162d19d7d58SLionel Sambuc   struct bfd_section *sections;
6163d19d7d58SLionel Sambuc   struct bfd_section *section_last;
6164d19d7d58SLionel Sambuc   unsigned int section_count;
6165d19d7d58SLionel Sambuc   struct bfd_hash_table section_htab;
6166d19d7d58SLionel Sambuc };
6167d19d7d58SLionel Sambuc 
6168d19d7d58SLionel Sambuc bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
6169d19d7d58SLionel Sambuc 
6170d19d7d58SLionel Sambuc void bfd_preserve_restore (bfd *, struct bfd_preserve *);
6171d19d7d58SLionel Sambuc 
6172d19d7d58SLionel Sambuc void bfd_preserve_finish (bfd *, struct bfd_preserve *);
6173d19d7d58SLionel Sambuc 
6174d19d7d58SLionel Sambuc bfd_vma bfd_emul_get_maxpagesize (const char *);
6175d19d7d58SLionel Sambuc 
6176d19d7d58SLionel Sambuc void bfd_emul_set_maxpagesize (const char *, bfd_vma);
6177d19d7d58SLionel Sambuc 
6178d19d7d58SLionel Sambuc bfd_vma bfd_emul_get_commonpagesize (const char *);
6179d19d7d58SLionel Sambuc 
6180d19d7d58SLionel Sambuc void bfd_emul_set_commonpagesize (const char *, bfd_vma);
6181d19d7d58SLionel Sambuc 
6182d19d7d58SLionel Sambuc char *bfd_demangle (bfd *, const char *, int);
6183d19d7d58SLionel Sambuc 
6184d19d7d58SLionel Sambuc /* Extracted from archive.c.  */
6185d19d7d58SLionel Sambuc symindex bfd_get_next_mapent
6186d19d7d58SLionel Sambuc    (bfd *abfd, symindex previous, carsym **sym);
6187d19d7d58SLionel Sambuc 
6188d19d7d58SLionel Sambuc bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
6189d19d7d58SLionel Sambuc 
6190d19d7d58SLionel Sambuc bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
6191d19d7d58SLionel Sambuc 
6192d19d7d58SLionel Sambuc /* Extracted from corefile.c.  */
6193d19d7d58SLionel Sambuc const char *bfd_core_file_failing_command (bfd *abfd);
6194d19d7d58SLionel Sambuc 
6195d19d7d58SLionel Sambuc int bfd_core_file_failing_signal (bfd *abfd);
6196d19d7d58SLionel Sambuc 
6197d19d7d58SLionel Sambuc int bfd_core_file_pid (bfd *abfd);
6198d19d7d58SLionel Sambuc 
6199d19d7d58SLionel Sambuc bfd_boolean core_file_matches_executable_p
6200d19d7d58SLionel Sambuc    (bfd *core_bfd, bfd *exec_bfd);
6201d19d7d58SLionel Sambuc 
6202d19d7d58SLionel Sambuc bfd_boolean generic_core_file_matches_executable_p
6203d19d7d58SLionel Sambuc    (bfd *core_bfd, bfd *exec_bfd);
6204d19d7d58SLionel Sambuc 
6205d19d7d58SLionel Sambuc /* Extracted from targets.c.  */
6206d19d7d58SLionel Sambuc #define BFD_SEND(bfd, message, arglist) \
6207d19d7d58SLionel Sambuc   ((*((bfd)->xvec->message)) arglist)
6208d19d7d58SLionel Sambuc 
6209d19d7d58SLionel Sambuc #ifdef DEBUG_BFD_SEND
6210d19d7d58SLionel Sambuc #undef BFD_SEND
6211d19d7d58SLionel Sambuc #define BFD_SEND(bfd, message, arglist) \
6212d19d7d58SLionel Sambuc   (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
6213d19d7d58SLionel Sambuc     ((*((bfd)->xvec->message)) arglist) : \
6214d19d7d58SLionel Sambuc     (bfd_assert (__FILE__,__LINE__), NULL))
6215d19d7d58SLionel Sambuc #endif
6216d19d7d58SLionel Sambuc #define BFD_SEND_FMT(bfd, message, arglist) \
6217d19d7d58SLionel Sambuc   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
6218d19d7d58SLionel Sambuc 
6219d19d7d58SLionel Sambuc #ifdef DEBUG_BFD_SEND
6220d19d7d58SLionel Sambuc #undef BFD_SEND_FMT
6221d19d7d58SLionel Sambuc #define BFD_SEND_FMT(bfd, message, arglist) \
6222d19d7d58SLionel Sambuc   (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
6223d19d7d58SLionel Sambuc    (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
6224d19d7d58SLionel Sambuc    (bfd_assert (__FILE__,__LINE__), NULL))
6225d19d7d58SLionel Sambuc #endif
6226d19d7d58SLionel Sambuc 
6227d19d7d58SLionel Sambuc enum bfd_flavour
6228d19d7d58SLionel Sambuc {
6229d19d7d58SLionel Sambuc   bfd_target_unknown_flavour,
6230d19d7d58SLionel Sambuc   bfd_target_aout_flavour,
6231d19d7d58SLionel Sambuc   bfd_target_coff_flavour,
6232d19d7d58SLionel Sambuc   bfd_target_ecoff_flavour,
6233d19d7d58SLionel Sambuc   bfd_target_xcoff_flavour,
6234d19d7d58SLionel Sambuc   bfd_target_elf_flavour,
6235d19d7d58SLionel Sambuc   bfd_target_ieee_flavour,
6236d19d7d58SLionel Sambuc   bfd_target_nlm_flavour,
6237d19d7d58SLionel Sambuc   bfd_target_oasys_flavour,
6238d19d7d58SLionel Sambuc   bfd_target_tekhex_flavour,
6239d19d7d58SLionel Sambuc   bfd_target_srec_flavour,
6240d19d7d58SLionel Sambuc   bfd_target_verilog_flavour,
6241d19d7d58SLionel Sambuc   bfd_target_ihex_flavour,
6242d19d7d58SLionel Sambuc   bfd_target_som_flavour,
6243d19d7d58SLionel Sambuc   bfd_target_os9k_flavour,
6244d19d7d58SLionel Sambuc   bfd_target_versados_flavour,
6245d19d7d58SLionel Sambuc   bfd_target_msdos_flavour,
6246d19d7d58SLionel Sambuc   bfd_target_ovax_flavour,
6247d19d7d58SLionel Sambuc   bfd_target_evax_flavour,
6248d19d7d58SLionel Sambuc   bfd_target_mmo_flavour,
6249d19d7d58SLionel Sambuc   bfd_target_mach_o_flavour,
6250d19d7d58SLionel Sambuc   bfd_target_pef_flavour,
6251d19d7d58SLionel Sambuc   bfd_target_pef_xlib_flavour,
6252d19d7d58SLionel Sambuc   bfd_target_sym_flavour
6253d19d7d58SLionel Sambuc };
6254d19d7d58SLionel Sambuc 
6255d19d7d58SLionel Sambuc enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
6256d19d7d58SLionel Sambuc 
6257d19d7d58SLionel Sambuc /* Forward declaration.  */
6258d19d7d58SLionel Sambuc typedef struct bfd_link_info _bfd_link_info;
6259d19d7d58SLionel Sambuc 
6260c566d462SLionel Sambuc /* Forward declaration.  */
6261c566d462SLionel Sambuc typedef struct flag_info flag_info;
6262c566d462SLionel Sambuc 
6263d19d7d58SLionel Sambuc typedef struct bfd_target
6264d19d7d58SLionel Sambuc {
6265d19d7d58SLionel Sambuc   /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
6266d19d7d58SLionel Sambuc   char *name;
6267d19d7d58SLionel Sambuc 
6268d19d7d58SLionel Sambuc  /* The "flavour" of a back end is a general indication about
6269d19d7d58SLionel Sambuc     the contents of a file.  */
6270d19d7d58SLionel Sambuc   enum bfd_flavour flavour;
6271d19d7d58SLionel Sambuc 
6272d19d7d58SLionel Sambuc   /* The order of bytes within the data area of a file.  */
6273d19d7d58SLionel Sambuc   enum bfd_endian byteorder;
6274d19d7d58SLionel Sambuc 
6275d19d7d58SLionel Sambuc  /* The order of bytes within the header parts of a file.  */
6276d19d7d58SLionel Sambuc   enum bfd_endian header_byteorder;
6277d19d7d58SLionel Sambuc 
6278d19d7d58SLionel Sambuc   /* A mask of all the flags which an executable may have set -
6279d19d7d58SLionel Sambuc      from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
6280d19d7d58SLionel Sambuc   flagword object_flags;
6281d19d7d58SLionel Sambuc 
6282d19d7d58SLionel Sambuc  /* A mask of all the flags which a section may have set - from
6283d19d7d58SLionel Sambuc     the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
6284d19d7d58SLionel Sambuc   flagword section_flags;
6285d19d7d58SLionel Sambuc 
6286d19d7d58SLionel Sambuc  /* The character normally found at the front of a symbol.
6287d19d7d58SLionel Sambuc     (if any), perhaps `_'.  */
6288d19d7d58SLionel Sambuc   char symbol_leading_char;
6289d19d7d58SLionel Sambuc 
6290d19d7d58SLionel Sambuc  /* The pad character for file names within an archive header.  */
6291d19d7d58SLionel Sambuc   char ar_pad_char;
6292d19d7d58SLionel Sambuc 
6293d19d7d58SLionel Sambuc   /* The maximum number of characters in an archive header.  */
6294c566d462SLionel Sambuc   unsigned char ar_max_namelen;
6295c566d462SLionel Sambuc 
6296c566d462SLionel Sambuc   /* How well this target matches, used to select between various
6297c566d462SLionel Sambuc      possible targets when more than one target matches.  */
6298c566d462SLionel Sambuc   unsigned char match_priority;
6299d19d7d58SLionel Sambuc 
6300d19d7d58SLionel Sambuc   /* Entries for byte swapping for data. These are different from the
6301d19d7d58SLionel Sambuc      other entry points, since they don't take a BFD as the first argument.
6302d19d7d58SLionel Sambuc      Certain other handlers could do the same.  */
6303d19d7d58SLionel Sambuc   bfd_uint64_t   (*bfd_getx64) (const void *);
6304d19d7d58SLionel Sambuc   bfd_int64_t    (*bfd_getx_signed_64) (const void *);
6305d19d7d58SLionel Sambuc   void           (*bfd_putx64) (bfd_uint64_t, void *);
6306d19d7d58SLionel Sambuc   bfd_vma        (*bfd_getx32) (const void *);
6307d19d7d58SLionel Sambuc   bfd_signed_vma (*bfd_getx_signed_32) (const void *);
6308d19d7d58SLionel Sambuc   void           (*bfd_putx32) (bfd_vma, void *);
6309d19d7d58SLionel Sambuc   bfd_vma        (*bfd_getx16) (const void *);
6310d19d7d58SLionel Sambuc   bfd_signed_vma (*bfd_getx_signed_16) (const void *);
6311d19d7d58SLionel Sambuc   void           (*bfd_putx16) (bfd_vma, void *);
6312d19d7d58SLionel Sambuc 
6313d19d7d58SLionel Sambuc   /* Byte swapping for the headers.  */
6314d19d7d58SLionel Sambuc   bfd_uint64_t   (*bfd_h_getx64) (const void *);
6315d19d7d58SLionel Sambuc   bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
6316d19d7d58SLionel Sambuc   void           (*bfd_h_putx64) (bfd_uint64_t, void *);
6317d19d7d58SLionel Sambuc   bfd_vma        (*bfd_h_getx32) (const void *);
6318d19d7d58SLionel Sambuc   bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
6319d19d7d58SLionel Sambuc   void           (*bfd_h_putx32) (bfd_vma, void *);
6320d19d7d58SLionel Sambuc   bfd_vma        (*bfd_h_getx16) (const void *);
6321d19d7d58SLionel Sambuc   bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
6322d19d7d58SLionel Sambuc   void           (*bfd_h_putx16) (bfd_vma, void *);
6323d19d7d58SLionel Sambuc 
6324d19d7d58SLionel Sambuc   /* Format dependent routines: these are vectors of entry points
6325d19d7d58SLionel Sambuc      within the target vector structure, one for each format to check.  */
6326d19d7d58SLionel Sambuc 
6327d19d7d58SLionel Sambuc   /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
6328d19d7d58SLionel Sambuc   const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
6329d19d7d58SLionel Sambuc 
6330d19d7d58SLionel Sambuc   /* Set the format of a file being written.  */
6331d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
6332d19d7d58SLionel Sambuc 
6333d19d7d58SLionel Sambuc   /* Write cached information into a file being written, at <<bfd_close>>.  */
6334d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
6335d19d7d58SLionel Sambuc 
6336d19d7d58SLionel Sambuc 
6337d19d7d58SLionel Sambuc   /* Generic entry points.  */
6338d19d7d58SLionel Sambuc #define BFD_JUMP_TABLE_GENERIC(NAME) \
6339d19d7d58SLionel Sambuc   NAME##_close_and_cleanup, \
6340d19d7d58SLionel Sambuc   NAME##_bfd_free_cached_info, \
6341d19d7d58SLionel Sambuc   NAME##_new_section_hook, \
6342d19d7d58SLionel Sambuc   NAME##_get_section_contents, \
6343d19d7d58SLionel Sambuc   NAME##_get_section_contents_in_window
6344d19d7d58SLionel Sambuc 
6345d19d7d58SLionel Sambuc   /* Called when the BFD is being closed to do any necessary cleanup.  */
6346d19d7d58SLionel Sambuc   bfd_boolean (*_close_and_cleanup) (bfd *);
6347d19d7d58SLionel Sambuc   /* Ask the BFD to free all cached information.  */
6348d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_free_cached_info) (bfd *);
6349d19d7d58SLionel Sambuc   /* Called when a new section is created.  */
6350d19d7d58SLionel Sambuc   bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
6351d19d7d58SLionel Sambuc   /* Read the contents of a section.  */
6352d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_get_section_contents)
6353d19d7d58SLionel Sambuc     (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
6354d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_get_section_contents_in_window)
6355d19d7d58SLionel Sambuc     (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
6356d19d7d58SLionel Sambuc 
6357d19d7d58SLionel Sambuc   /* Entry points to copy private data.  */
6358d19d7d58SLionel Sambuc #define BFD_JUMP_TABLE_COPY(NAME) \
6359d19d7d58SLionel Sambuc   NAME##_bfd_copy_private_bfd_data, \
6360d19d7d58SLionel Sambuc   NAME##_bfd_merge_private_bfd_data, \
6361d19d7d58SLionel Sambuc   _bfd_generic_init_private_section_data, \
6362d19d7d58SLionel Sambuc   NAME##_bfd_copy_private_section_data, \
6363d19d7d58SLionel Sambuc   NAME##_bfd_copy_private_symbol_data, \
6364d19d7d58SLionel Sambuc   NAME##_bfd_copy_private_header_data, \
6365d19d7d58SLionel Sambuc   NAME##_bfd_set_private_flags, \
6366d19d7d58SLionel Sambuc   NAME##_bfd_print_private_bfd_data
6367d19d7d58SLionel Sambuc 
6368d19d7d58SLionel Sambuc   /* Called to copy BFD general private data from one object file
6369d19d7d58SLionel Sambuc      to another.  */
6370d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
6371d19d7d58SLionel Sambuc   /* Called to merge BFD general private data from one object file
6372d19d7d58SLionel Sambuc      to a common output file when linking.  */
6373d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
6374d19d7d58SLionel Sambuc   /* Called to initialize BFD private section data from one object file
6375d19d7d58SLionel Sambuc      to another.  */
6376d19d7d58SLionel Sambuc #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
6377d19d7d58SLionel Sambuc   BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
6378d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_init_private_section_data)
6379d19d7d58SLionel Sambuc     (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
6380d19d7d58SLionel Sambuc   /* Called to copy BFD private section data from one object file
6381d19d7d58SLionel Sambuc      to another.  */
6382d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_copy_private_section_data)
6383d19d7d58SLionel Sambuc     (bfd *, sec_ptr, bfd *, sec_ptr);
6384d19d7d58SLionel Sambuc   /* Called to copy BFD private symbol data from one symbol
6385d19d7d58SLionel Sambuc      to another.  */
6386d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_copy_private_symbol_data)
6387d19d7d58SLionel Sambuc     (bfd *, asymbol *, bfd *, asymbol *);
6388d19d7d58SLionel Sambuc   /* Called to copy BFD private header data from one object file
6389d19d7d58SLionel Sambuc      to another.  */
6390d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_copy_private_header_data)
6391d19d7d58SLionel Sambuc     (bfd *, bfd *);
6392d19d7d58SLionel Sambuc   /* Called to set private backend flags.  */
6393d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
6394d19d7d58SLionel Sambuc 
6395d19d7d58SLionel Sambuc   /* Called to print private BFD data.  */
6396d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
6397d19d7d58SLionel Sambuc 
6398d19d7d58SLionel Sambuc   /* Core file entry points.  */
6399d19d7d58SLionel Sambuc #define BFD_JUMP_TABLE_CORE(NAME) \
6400d19d7d58SLionel Sambuc   NAME##_core_file_failing_command, \
6401d19d7d58SLionel Sambuc   NAME##_core_file_failing_signal, \
6402d19d7d58SLionel Sambuc   NAME##_core_file_matches_executable_p, \
6403d19d7d58SLionel Sambuc   NAME##_core_file_pid
6404d19d7d58SLionel Sambuc 
6405d19d7d58SLionel Sambuc   char *      (*_core_file_failing_command) (bfd *);
6406d19d7d58SLionel Sambuc   int         (*_core_file_failing_signal) (bfd *);
6407d19d7d58SLionel Sambuc   bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
6408d19d7d58SLionel Sambuc   int         (*_core_file_pid) (bfd *);
6409d19d7d58SLionel Sambuc 
6410d19d7d58SLionel Sambuc   /* Archive entry points.  */
6411d19d7d58SLionel Sambuc #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
6412d19d7d58SLionel Sambuc   NAME##_slurp_armap, \
6413d19d7d58SLionel Sambuc   NAME##_slurp_extended_name_table, \
6414d19d7d58SLionel Sambuc   NAME##_construct_extended_name_table, \
6415d19d7d58SLionel Sambuc   NAME##_truncate_arname, \
6416d19d7d58SLionel Sambuc   NAME##_write_armap, \
6417d19d7d58SLionel Sambuc   NAME##_read_ar_hdr, \
6418d19d7d58SLionel Sambuc   NAME##_write_ar_hdr, \
6419d19d7d58SLionel Sambuc   NAME##_openr_next_archived_file, \
6420d19d7d58SLionel Sambuc   NAME##_get_elt_at_index, \
6421d19d7d58SLionel Sambuc   NAME##_generic_stat_arch_elt, \
6422d19d7d58SLionel Sambuc   NAME##_update_armap_timestamp
6423d19d7d58SLionel Sambuc 
6424d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_slurp_armap) (bfd *);
6425d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
6426d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_construct_extended_name_table)
6427d19d7d58SLionel Sambuc     (bfd *, char **, bfd_size_type *, const char **);
6428d19d7d58SLionel Sambuc   void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
6429d19d7d58SLionel Sambuc   bfd_boolean (*write_armap)
6430d19d7d58SLionel Sambuc     (bfd *, unsigned int, struct orl *, unsigned int, int);
6431d19d7d58SLionel Sambuc   void *      (*_bfd_read_ar_hdr_fn) (bfd *);
6432d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
6433d19d7d58SLionel Sambuc   bfd *       (*openr_next_archived_file) (bfd *, bfd *);
6434d19d7d58SLionel Sambuc #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
6435d19d7d58SLionel Sambuc   bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
6436d19d7d58SLionel Sambuc   int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
6437d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
6438d19d7d58SLionel Sambuc 
6439d19d7d58SLionel Sambuc   /* Entry points used for symbols.  */
6440d19d7d58SLionel Sambuc #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
6441d19d7d58SLionel Sambuc   NAME##_get_symtab_upper_bound, \
6442d19d7d58SLionel Sambuc   NAME##_canonicalize_symtab, \
6443d19d7d58SLionel Sambuc   NAME##_make_empty_symbol, \
6444d19d7d58SLionel Sambuc   NAME##_print_symbol, \
6445d19d7d58SLionel Sambuc   NAME##_get_symbol_info, \
6446d19d7d58SLionel Sambuc   NAME##_bfd_is_local_label_name, \
6447d19d7d58SLionel Sambuc   NAME##_bfd_is_target_special_symbol, \
6448d19d7d58SLionel Sambuc   NAME##_get_lineno, \
6449d19d7d58SLionel Sambuc   NAME##_find_nearest_line, \
6450*c9ea9e7aSLionel Sambuc   _bfd_generic_find_nearest_line_discriminator, \
6451d19d7d58SLionel Sambuc   _bfd_generic_find_line, \
6452d19d7d58SLionel Sambuc   NAME##_find_inliner_info, \
6453d19d7d58SLionel Sambuc   NAME##_bfd_make_debug_symbol, \
6454d19d7d58SLionel Sambuc   NAME##_read_minisymbols, \
6455d19d7d58SLionel Sambuc   NAME##_minisymbol_to_symbol
6456d19d7d58SLionel Sambuc 
6457d19d7d58SLionel Sambuc   long        (*_bfd_get_symtab_upper_bound) (bfd *);
6458d19d7d58SLionel Sambuc   long        (*_bfd_canonicalize_symtab)
6459d19d7d58SLionel Sambuc     (bfd *, struct bfd_symbol **);
6460d19d7d58SLionel Sambuc   struct bfd_symbol *
6461d19d7d58SLionel Sambuc               (*_bfd_make_empty_symbol) (bfd *);
6462d19d7d58SLionel Sambuc   void        (*_bfd_print_symbol)
6463d19d7d58SLionel Sambuc     (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
6464d19d7d58SLionel Sambuc #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
6465d19d7d58SLionel Sambuc   void        (*_bfd_get_symbol_info)
6466d19d7d58SLionel Sambuc     (bfd *, struct bfd_symbol *, symbol_info *);
6467d19d7d58SLionel Sambuc #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
6468d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
6469d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
6470d19d7d58SLionel Sambuc   alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
6471d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_find_nearest_line)
6472d19d7d58SLionel Sambuc     (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
6473d19d7d58SLionel Sambuc      const char **, const char **, unsigned int *);
6474*c9ea9e7aSLionel Sambuc   bfd_boolean (*_bfd_find_nearest_line_discriminator)
6475*c9ea9e7aSLionel Sambuc     (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
6476*c9ea9e7aSLionel Sambuc      const char **, const char **, unsigned int *, unsigned int *);
6477d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_find_line)
6478d19d7d58SLionel Sambuc     (bfd *, struct bfd_symbol **, struct bfd_symbol *,
6479d19d7d58SLionel Sambuc      const char **, unsigned int *);
6480d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_find_inliner_info)
6481d19d7d58SLionel Sambuc     (bfd *, const char **, const char **, unsigned int *);
6482d19d7d58SLionel Sambuc  /* Back-door to allow format-aware applications to create debug symbols
6483d19d7d58SLionel Sambuc     while using BFD for everything else.  Currently used by the assembler
6484d19d7d58SLionel Sambuc     when creating COFF files.  */
6485d19d7d58SLionel Sambuc   asymbol *   (*_bfd_make_debug_symbol)
6486d19d7d58SLionel Sambuc     (bfd *, void *, unsigned long size);
6487d19d7d58SLionel Sambuc #define bfd_read_minisymbols(b, d, m, s) \
6488d19d7d58SLionel Sambuc   BFD_SEND (b, _read_minisymbols, (b, d, m, s))
6489d19d7d58SLionel Sambuc   long        (*_read_minisymbols)
6490d19d7d58SLionel Sambuc     (bfd *, bfd_boolean, void **, unsigned int *);
6491d19d7d58SLionel Sambuc #define bfd_minisymbol_to_symbol(b, d, m, f) \
6492d19d7d58SLionel Sambuc   BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
6493d19d7d58SLionel Sambuc   asymbol *   (*_minisymbol_to_symbol)
6494d19d7d58SLionel Sambuc     (bfd *, bfd_boolean, const void *, asymbol *);
6495d19d7d58SLionel Sambuc 
6496d19d7d58SLionel Sambuc   /* Routines for relocs.  */
6497d19d7d58SLionel Sambuc #define BFD_JUMP_TABLE_RELOCS(NAME) \
6498d19d7d58SLionel Sambuc   NAME##_get_reloc_upper_bound, \
6499d19d7d58SLionel Sambuc   NAME##_canonicalize_reloc, \
6500d19d7d58SLionel Sambuc   NAME##_bfd_reloc_type_lookup, \
6501d19d7d58SLionel Sambuc   NAME##_bfd_reloc_name_lookup
6502d19d7d58SLionel Sambuc 
6503d19d7d58SLionel Sambuc   long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
6504d19d7d58SLionel Sambuc   long        (*_bfd_canonicalize_reloc)
6505d19d7d58SLionel Sambuc     (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
6506d19d7d58SLionel Sambuc   /* See documentation on reloc types.  */
6507d19d7d58SLionel Sambuc   reloc_howto_type *
6508d19d7d58SLionel Sambuc               (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
6509d19d7d58SLionel Sambuc   reloc_howto_type *
6510d19d7d58SLionel Sambuc               (*reloc_name_lookup) (bfd *, const char *);
6511d19d7d58SLionel Sambuc 
6512d19d7d58SLionel Sambuc 
6513d19d7d58SLionel Sambuc   /* Routines used when writing an object file.  */
6514d19d7d58SLionel Sambuc #define BFD_JUMP_TABLE_WRITE(NAME) \
6515d19d7d58SLionel Sambuc   NAME##_set_arch_mach, \
6516d19d7d58SLionel Sambuc   NAME##_set_section_contents
6517d19d7d58SLionel Sambuc 
6518d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_set_arch_mach)
6519d19d7d58SLionel Sambuc     (bfd *, enum bfd_architecture, unsigned long);
6520d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_set_section_contents)
6521d19d7d58SLionel Sambuc     (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
6522d19d7d58SLionel Sambuc 
6523d19d7d58SLionel Sambuc   /* Routines used by the linker.  */
6524d19d7d58SLionel Sambuc #define BFD_JUMP_TABLE_LINK(NAME) \
6525d19d7d58SLionel Sambuc   NAME##_sizeof_headers, \
6526d19d7d58SLionel Sambuc   NAME##_bfd_get_relocated_section_contents, \
6527d19d7d58SLionel Sambuc   NAME##_bfd_relax_section, \
6528d19d7d58SLionel Sambuc   NAME##_bfd_link_hash_table_create, \
6529d19d7d58SLionel Sambuc   NAME##_bfd_link_hash_table_free, \
6530d19d7d58SLionel Sambuc   NAME##_bfd_link_add_symbols, \
6531d19d7d58SLionel Sambuc   NAME##_bfd_link_just_syms, \
6532d19d7d58SLionel Sambuc   NAME##_bfd_copy_link_hash_symbol_type, \
6533d19d7d58SLionel Sambuc   NAME##_bfd_final_link, \
6534d19d7d58SLionel Sambuc   NAME##_bfd_link_split_section, \
6535d19d7d58SLionel Sambuc   NAME##_bfd_gc_sections, \
6536c566d462SLionel Sambuc   NAME##_bfd_lookup_section_flags, \
6537d19d7d58SLionel Sambuc   NAME##_bfd_merge_sections, \
6538d19d7d58SLionel Sambuc   NAME##_bfd_is_group_section, \
6539d19d7d58SLionel Sambuc   NAME##_bfd_discard_group, \
6540d19d7d58SLionel Sambuc   NAME##_section_already_linked, \
6541d19d7d58SLionel Sambuc   NAME##_bfd_define_common_symbol
6542d19d7d58SLionel Sambuc 
6543d19d7d58SLionel Sambuc   int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
6544d19d7d58SLionel Sambuc   bfd_byte *  (*_bfd_get_relocated_section_contents)
6545d19d7d58SLionel Sambuc     (bfd *, struct bfd_link_info *, struct bfd_link_order *,
6546d19d7d58SLionel Sambuc      bfd_byte *, bfd_boolean, struct bfd_symbol **);
6547d19d7d58SLionel Sambuc 
6548d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_relax_section)
6549d19d7d58SLionel Sambuc     (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
6550d19d7d58SLionel Sambuc 
6551d19d7d58SLionel Sambuc   /* Create a hash table for the linker.  Different backends store
6552d19d7d58SLionel Sambuc      different information in this table.  */
6553d19d7d58SLionel Sambuc   struct bfd_link_hash_table *
6554d19d7d58SLionel Sambuc               (*_bfd_link_hash_table_create) (bfd *);
6555d19d7d58SLionel Sambuc 
6556d19d7d58SLionel Sambuc   /* Release the memory associated with the linker hash table.  */
6557d19d7d58SLionel Sambuc   void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
6558d19d7d58SLionel Sambuc 
6559d19d7d58SLionel Sambuc   /* Add symbols from this object file into the hash table.  */
6560d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
6561d19d7d58SLionel Sambuc 
6562d19d7d58SLionel Sambuc   /* Indicate that we are only retrieving symbol values from this section.  */
6563d19d7d58SLionel Sambuc   void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
6564d19d7d58SLionel Sambuc 
6565d19d7d58SLionel Sambuc   /* Copy the symbol type of a linker hash table entry.  */
6566d19d7d58SLionel Sambuc #define bfd_copy_link_hash_symbol_type(b, t, f) \
6567d19d7d58SLionel Sambuc   BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
6568d19d7d58SLionel Sambuc   void (*_bfd_copy_link_hash_symbol_type)
6569d19d7d58SLionel Sambuc     (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
6570d19d7d58SLionel Sambuc 
6571d19d7d58SLionel Sambuc   /* Do a link based on the link_order structures attached to each
6572d19d7d58SLionel Sambuc      section of the BFD.  */
6573d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
6574d19d7d58SLionel Sambuc 
6575d19d7d58SLionel Sambuc   /* Should this section be split up into smaller pieces during linking.  */
6576d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
6577d19d7d58SLionel Sambuc 
6578d19d7d58SLionel Sambuc   /* Remove sections that are not referenced from the output.  */
6579d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
6580d19d7d58SLionel Sambuc 
6581c566d462SLionel Sambuc   /* Sets the bitmask of allowed and disallowed section flags.  */
6582*c9ea9e7aSLionel Sambuc   bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
6583*c9ea9e7aSLionel Sambuc                                             struct flag_info *,
6584*c9ea9e7aSLionel Sambuc                                             asection *);
6585c566d462SLionel Sambuc 
6586d19d7d58SLionel Sambuc   /* Attempt to merge SEC_MERGE sections.  */
6587d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
6588d19d7d58SLionel Sambuc 
6589d19d7d58SLionel Sambuc   /* Is this section a member of a group?  */
6590d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
6591d19d7d58SLionel Sambuc 
6592d19d7d58SLionel Sambuc   /* Discard members of a group.  */
6593d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
6594d19d7d58SLionel Sambuc 
6595d19d7d58SLionel Sambuc   /* Check if SEC has been already linked during a reloceatable or
6596d19d7d58SLionel Sambuc      final link.  */
6597c566d462SLionel Sambuc   bfd_boolean (*_section_already_linked) (bfd *, asection *,
6598d19d7d58SLionel Sambuc                                           struct bfd_link_info *);
6599d19d7d58SLionel Sambuc 
6600d19d7d58SLionel Sambuc   /* Define a common symbol.  */
6601d19d7d58SLionel Sambuc   bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
6602d19d7d58SLionel Sambuc                                             struct bfd_link_hash_entry *);
6603d19d7d58SLionel Sambuc 
6604d19d7d58SLionel Sambuc   /* Routines to handle dynamic symbols and relocs.  */
6605d19d7d58SLionel Sambuc #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
6606d19d7d58SLionel Sambuc   NAME##_get_dynamic_symtab_upper_bound, \
6607d19d7d58SLionel Sambuc   NAME##_canonicalize_dynamic_symtab, \
6608d19d7d58SLionel Sambuc   NAME##_get_synthetic_symtab, \
6609d19d7d58SLionel Sambuc   NAME##_get_dynamic_reloc_upper_bound, \
6610d19d7d58SLionel Sambuc   NAME##_canonicalize_dynamic_reloc
6611d19d7d58SLionel Sambuc 
6612d19d7d58SLionel Sambuc   /* Get the amount of memory required to hold the dynamic symbols.  */
6613d19d7d58SLionel Sambuc   long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
6614d19d7d58SLionel Sambuc   /* Read in the dynamic symbols.  */
6615d19d7d58SLionel Sambuc   long        (*_bfd_canonicalize_dynamic_symtab)
6616d19d7d58SLionel Sambuc     (bfd *, struct bfd_symbol **);
6617d19d7d58SLionel Sambuc   /* Create synthetized symbols.  */
6618d19d7d58SLionel Sambuc   long        (*_bfd_get_synthetic_symtab)
6619d19d7d58SLionel Sambuc     (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
6620d19d7d58SLionel Sambuc      struct bfd_symbol **);
6621d19d7d58SLionel Sambuc   /* Get the amount of memory required to hold the dynamic relocs.  */
6622d19d7d58SLionel Sambuc   long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
6623d19d7d58SLionel Sambuc   /* Read in the dynamic relocs.  */
6624d19d7d58SLionel Sambuc   long        (*_bfd_canonicalize_dynamic_reloc)
6625d19d7d58SLionel Sambuc     (bfd *, arelent **, struct bfd_symbol **);
6626d19d7d58SLionel Sambuc 
6627d19d7d58SLionel Sambuc   /* Opposite endian version of this target.  */
6628d19d7d58SLionel Sambuc   const struct bfd_target * alternative_target;
6629d19d7d58SLionel Sambuc 
6630d19d7d58SLionel Sambuc   /* Data for use by back-end routines, which isn't
6631d19d7d58SLionel Sambuc      generic enough to belong in this structure.  */
6632d19d7d58SLionel Sambuc   const void *backend_data;
6633d19d7d58SLionel Sambuc 
6634d19d7d58SLionel Sambuc } bfd_target;
6635d19d7d58SLionel Sambuc 
6636d19d7d58SLionel Sambuc bfd_boolean bfd_set_default_target (const char *name);
6637d19d7d58SLionel Sambuc 
6638d19d7d58SLionel Sambuc const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
6639d19d7d58SLionel Sambuc 
6640d19d7d58SLionel Sambuc const bfd_target *bfd_get_target_info (const char *target_name,
6641d19d7d58SLionel Sambuc     bfd *abfd,
6642d19d7d58SLionel Sambuc     bfd_boolean *is_bigendian,
6643d19d7d58SLionel Sambuc     int *underscoring,
6644d19d7d58SLionel Sambuc     const char **def_target_arch);
6645d19d7d58SLionel Sambuc const char ** bfd_target_list (void);
6646d19d7d58SLionel Sambuc 
6647d19d7d58SLionel Sambuc const bfd_target *bfd_search_for_target
6648d19d7d58SLionel Sambuc    (int (*search_func) (const bfd_target *, void *),
6649d19d7d58SLionel Sambuc     void *);
6650d19d7d58SLionel Sambuc 
6651d19d7d58SLionel Sambuc /* Extracted from format.c.  */
6652d19d7d58SLionel Sambuc bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
6653d19d7d58SLionel Sambuc 
6654d19d7d58SLionel Sambuc bfd_boolean bfd_check_format_matches
6655d19d7d58SLionel Sambuc    (bfd *abfd, bfd_format format, char ***matching);
6656d19d7d58SLionel Sambuc 
6657d19d7d58SLionel Sambuc bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
6658d19d7d58SLionel Sambuc 
6659d19d7d58SLionel Sambuc const char *bfd_format_string (bfd_format format);
6660d19d7d58SLionel Sambuc 
6661d19d7d58SLionel Sambuc /* Extracted from linker.c.  */
6662d19d7d58SLionel Sambuc bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
6663d19d7d58SLionel Sambuc 
6664d19d7d58SLionel Sambuc #define bfd_link_split_section(abfd, sec) \
6665d19d7d58SLionel Sambuc        BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
6666d19d7d58SLionel Sambuc 
6667c566d462SLionel Sambuc bfd_boolean bfd_section_already_linked (bfd *abfd,
6668c566d462SLionel Sambuc     asection *sec,
6669d19d7d58SLionel Sambuc     struct bfd_link_info *info);
6670d19d7d58SLionel Sambuc 
6671d19d7d58SLionel Sambuc #define bfd_section_already_linked(abfd, sec, info) \
6672d19d7d58SLionel Sambuc        BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
6673d19d7d58SLionel Sambuc 
6674d19d7d58SLionel Sambuc bfd_boolean bfd_generic_define_common_symbol
6675d19d7d58SLionel Sambuc    (bfd *output_bfd, struct bfd_link_info *info,
6676d19d7d58SLionel Sambuc     struct bfd_link_hash_entry *h);
6677d19d7d58SLionel Sambuc 
6678d19d7d58SLionel Sambuc #define bfd_define_common_symbol(output_bfd, info, h) \
6679d19d7d58SLionel Sambuc        BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
6680d19d7d58SLionel Sambuc 
6681d19d7d58SLionel Sambuc struct bfd_elf_version_tree * bfd_find_version_for_sym
6682d19d7d58SLionel Sambuc    (struct bfd_elf_version_tree *verdefs,
6683d19d7d58SLionel Sambuc     const char *sym_name, bfd_boolean *hide);
6684d19d7d58SLionel Sambuc 
6685c566d462SLionel Sambuc bfd_boolean bfd_hide_sym_by_version
6686c566d462SLionel Sambuc    (struct bfd_elf_version_tree *verdefs, const char *sym_name);
6687c566d462SLionel Sambuc 
6688d19d7d58SLionel Sambuc /* Extracted from simple.c.  */
6689d19d7d58SLionel Sambuc bfd_byte *bfd_simple_get_relocated_section_contents
6690d19d7d58SLionel Sambuc    (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
6691d19d7d58SLionel Sambuc 
6692d19d7d58SLionel Sambuc /* Extracted from compress.c.  */
6693d19d7d58SLionel Sambuc bfd_boolean bfd_compress_section_contents
6694d19d7d58SLionel Sambuc    (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer,
6695d19d7d58SLionel Sambuc     bfd_size_type uncompressed_size);
6696d19d7d58SLionel Sambuc 
6697d19d7d58SLionel Sambuc bfd_boolean bfd_get_full_section_contents
6698d19d7d58SLionel Sambuc    (bfd *abfd, asection *section, bfd_byte **ptr);
6699d19d7d58SLionel Sambuc 
6700d19d7d58SLionel Sambuc bfd_boolean bfd_is_section_compressed
6701d19d7d58SLionel Sambuc    (bfd *abfd, asection *section);
6702d19d7d58SLionel Sambuc 
6703d19d7d58SLionel Sambuc bfd_boolean bfd_init_section_decompress_status
6704d19d7d58SLionel Sambuc    (bfd *abfd, asection *section);
6705d19d7d58SLionel Sambuc 
6706d19d7d58SLionel Sambuc bfd_boolean bfd_init_section_compress_status
6707d19d7d58SLionel Sambuc    (bfd *abfd, asection *section);
6708d19d7d58SLionel Sambuc 
6709d19d7d58SLionel Sambuc #ifdef __cplusplus
6710d19d7d58SLionel Sambuc }
6711d19d7d58SLionel Sambuc #endif
6712d19d7d58SLionel Sambuc #endif
6713